These nested if statements could be combined - line: 3228
Range
compareTo
These nested if statements could be combined - line: 5792
ParseResult
GroupMatchContainer
validate
These nested if statements could be combined - line: 12634
failGroupMultiplicityExceeded
These nested if statements could be combined - line: 12654
validateGroupMultiplicity
These nested if statements could be combined - line: 12691
Interpreter
processClusteredShortOptions
These nested if statements could be combined - line: 13563
isOption
These nested if statements could be combined - line: 14245
isOption
These nested if statements could be combined - line: 14239
is
These nested if statements could be combined - line: 14283
getEnumTypeConverter
Anonymous: picocli.CommandLine.ITypeConverter
convert
These nested if statements could be combined - line: 14345
Help
createDetailedSynopsisOptionsText
These nested if statements could be combined - line: 15280
Empty Statement
picocli.main
picocli
CommandLine
Model
Messages
keys
Empty statement. - line: 11312
Redundant Modifier
picocli.main
picocli
CommandLine
ColoredStackTraceWriter
ColoredStackTraceWriter
Redundant 'public' modifier. - line: 2122
Option
NULL_VALUE
Redundant 'public' modifier. - line: 3602
Parameters
NULL_VALUE
Redundant 'public' modifier. - line: 4058
Model
CaseAwareLinkedMap
CaseAwareLinkedMap
Redundant 'public' modifier. - line: 5908
CaseAwareLinkedMap
Redundant 'public' modifier. - line: 5916
CaseAwareLinkedMap
Redundant 'public' modifier. - line: 5925
ObjectScope
ObjectScope
Redundant 'public' modifier. - line: 11803
Interpolator
Interpolator
Redundant 'public' modifier. - line: 11912
BuiltIn
ReflectionConverter
ReflectionConverter
Redundant 'public' modifier. - line: 14736
Help
DefaultOptionRenderer
DefaultOptionRenderer
Redundant 'public' modifier. - line: 16107
DefaultParameterRenderer
DefaultParameterRenderer
Redundant 'public' modifier. - line: 16226
DefaultParamLabelRenderer
DefaultParamLabelRenderer
Redundant 'public' modifier. - line: 16298
Ansi
isWindows
Redundant 'final' modifier. - line: 17291
isMac
Redundant 'final' modifier. - line: 17292
isXterm
Redundant 'final' modifier. - line: 17293
isCygwin
Redundant 'final' modifier. - line: 17294
hasOsType
Redundant 'final' modifier. - line: 17296
hintDisabled
Redundant 'final' modifier. - line: 17300
hintEnabled
Redundant 'final' modifier. - line: 17306
forceDisabled
Redundant 'final' modifier. - line: 17310
forceEnabled
Redundant 'final' modifier. - line: 17313
Reliability
Design For Extension
picocli.main
picocli
CommandLine
getParseResult
Class 'CommandLine' looks like designed for extension (can be subclassed), but the method 'getParseResult' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'CommandLine' final or making the method 'getParseResult' static/final/abstract/empty, or adding allowed annotation for the method. - line: 1480
DefaultExceptionHandler
handleException
Class 'DefaultExceptionHandler' looks like designed for extension (can be subclassed), but the method 'handleException' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'DefaultExceptionHandler' final or making the method 'handleException' static/final/abstract/empty, or adding allowed annotation for the method. - line: 1808
self
Class 'DefaultExceptionHandler' looks like designed for extension (can be subclassed), but the method 'self' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'DefaultExceptionHandler' final or making the method 'self' static/final/abstract/empty, or adding allowed annotation for the method. - line: 1839
AbstractParseResultHandler
execute
Class 'AbstractParseResultHandler' looks like designed for extension (can be subclassed), but the method 'execute' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'AbstractParseResultHandler' final or making the method 'execute' static/final/abstract/empty, or adding allowed annotation for the method. - line: 2174
extractExitCodeGenerators
Class 'AbstractParseResultHandler' looks like designed for extension (can be subclassed), but the method 'extractExitCodeGenerators' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'AbstractParseResultHandler' final or making the method 'extractExitCodeGenerators' static/final/abstract/empty, or adding allowed annotation for the method. - line: 2222
RunFirst
extractExitCodeGenerators
Class 'RunFirst' looks like designed for extension (can be subclassed), but the method 'extractExitCodeGenerators' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'RunFirst' final or making the method 'extractExitCodeGenerators' static/final/abstract/empty, or adding allowed annotation for the method. - line: 2266
self
Class 'RunFirst' looks like designed for extension (can be subclassed), but the method 'self' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'RunFirst' final or making the method 'self' static/final/abstract/empty, or adding allowed annotation for the method. - line: 2273
RunLast
extractExitCodeGenerators
Class 'RunLast' looks like designed for extension (can be subclassed), but the method 'extractExitCodeGenerators' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'RunLast' final or making the method 'extractExitCodeGenerators' static/final/abstract/empty, or adding allowed annotation for the method. - line: 2371
self
Class 'RunLast' looks like designed for extension (can be subclassed), but the method 'self' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'RunLast' final or making the method 'self' static/final/abstract/empty, or adding allowed annotation for the method. - line: 2381
RunAll
extractExitCodeGenerators
Class 'RunAll' looks like designed for extension (can be subclassed), but the method 'extractExitCodeGenerators' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'RunAll' final or making the method 'extractExitCodeGenerators' static/final/abstract/empty, or adding allowed annotation for the method. - line: 2436
self
Class 'RunAll' looks like designed for extension (can be subclassed), but the method 'self' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'RunAll' final or making the method 'self' static/final/abstract/empty, or adding allowed annotation for the method. - line: 2446
RegexTransformer
toString
Class 'RegexTransformer' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'RegexTransformer' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 5313
Builder
build
Class 'Builder' looks like designed for extension (can be subclassed), but the method 'build' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Builder' final or making the method 'build' static/final/abstract/empty, or adding allowed annotation for the method. - line: 5381
Range
isRelativeToAnchor
Class 'Range' looks like designed for extension (can be subclassed), but the method 'isRelativeToAnchor' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Range' final or making the method 'isRelativeToAnchor' static/final/abstract/empty, or adding allowed annotation for the method. - line: 5741
equals
Class 'Range' looks like designed for extension (can be subclassed), but the method 'equals' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Range' final or making the method 'equals' static/final/abstract/empty, or adding allowed annotation for the method. - line: 5762
hashCode
Class 'Range' looks like designed for extension (can be subclassed), but the method 'hashCode' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Range' final or making the method 'hashCode' static/final/abstract/empty, or adding allowed annotation for the method. - line: 5767
toString
Class 'Range' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Range' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 5770
compareTo
Class 'Range' looks like designed for extension (can be subclassed), but the method 'compareTo' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Range' final or making the method 'compareTo' static/final/abstract/empty, or adding allowed annotation for the method. - line: 5783
overlaps
Class 'Range' looks like designed for extension (can be subclassed), but the method 'overlaps' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Range' final or making the method 'overlaps' static/final/abstract/empty, or adding allowed annotation for the method. - line: 5800
Model
UsageMessageSpec
updateFromCommand
Class 'UsageMessageSpec' looks like designed for extension (can be subclassed), but the method 'updateFromCommand' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'UsageMessageSpec' final or making the method 'updateFromCommand' static/final/abstract/empty, or adding allowed annotation for the method. - line: 8199
initFromMixin
Class 'UsageMessageSpec' looks like designed for extension (can be subclassed), but the method 'initFromMixin' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'UsageMessageSpec' final or making the method 'initFromMixin' static/final/abstract/empty, or adding allowed annotation for the method. - line: 8234
initFrom
Class 'UsageMessageSpec' looks like designed for extension (can be subclassed), but the method 'initFrom' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'UsageMessageSpec' final or making the method 'initFrom' static/final/abstract/empty, or adding allowed annotation for the method. - line: 8262
ParserSpec
initSeparator
Class 'ParserSpec' looks like designed for extension (can be subclassed), but the method 'initSeparator' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ParserSpec' final or making the method 'initSeparator' static/final/abstract/empty, or adding allowed annotation for the method. - line: 8453
updateSeparator
Class 'ParserSpec' looks like designed for extension (can be subclassed), but the method 'updateSeparator' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ParserSpec' final or making the method 'updateSeparator' static/final/abstract/empty, or adding allowed annotation for the method. - line: 8454
toString
Class 'ParserSpec' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ParserSpec' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 8455
initFrom
Class 'ParserSpec' looks like designed for extension (can be subclassed), but the method 'initFrom' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ParserSpec' final or making the method 'initFrom' static/final/abstract/empty, or adding allowed annotation for the method. - line: 8470
ArgGroupSpec
userObject
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'userObject' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'userObject' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10229
userObjectOr
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'userObjectOr' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'userObjectOr' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10230
id
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'id' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'id' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10231
argCount
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'argCount' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'argCount' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10232
localPositionalParamCount
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'localPositionalParamCount' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'localPositionalParamCount' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10238
synopsisUnit
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'synopsisUnit' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'synopsisUnit' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10304
createLabelRenderer
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'createLabelRenderer' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'createLabelRenderer' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10366
equals
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'equals' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'equals' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10382
hashCode
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'hashCode' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'hashCode' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10396
toString
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10409
initUserObject
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'initUserObject' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'initUserObject' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10417
tryInitUserObject
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'tryInitUserObject' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'tryInitUserObject' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10430
setUserObject
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'setUserObject' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'setUserObject' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10460
validateArgs
Class 'ArgGroupSpec' looks like designed for extension (can be subclassed), but the method 'validateArgs' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ArgGroupSpec' final or making the method 'validateArgs' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10483
MethodParam
getParameterizedType
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'getParameterizedType' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'getParameterizedType' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10779
getName
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'getName' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'getName' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10780
getType
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'getType' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'getType' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10781
getDeclaringExecutable
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'getDeclaringExecutable' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'getDeclaringExecutable' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10782
getAnnotation
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'getAnnotation' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'getAnnotation' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10783
getDeclaredAnnotations
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'getDeclaredAnnotations' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'getDeclaredAnnotations' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10789
setAccessible
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'setAccessible' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'setAccessible' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10790
isAccessible
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'isAccessible' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'isAccessible' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10791
toString
Class 'MethodParam' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MethodParam' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 10793
Messages
isEmpty
Class 'Messages' looks like designed for extension (can be subclassed), but the method 'isEmpty' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Messages' final or making the method 'isEmpty' static/final/abstract/empty, or adding allowed annotation for the method. - line: 11341
ParseResult
GroupMatchContainer
addMatch
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'addMatch' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'addMatch' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12473
complete
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'complete' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'complete' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12487
trim
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'trim' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'trim' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12541
findMatchContainers
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'findMatchContainers' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'findMatchContainers' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12550
findLastMatchContainer
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'findLastMatchContainer' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'findLastMatchContainer' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12559
toString
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12564
updateUnmatchedGroups
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'updateUnmatchedGroups' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'updateUnmatchedGroups' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12584
validate
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'validate' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'validate' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12598
canMatchPositionalParam
Class 'GroupMatchContainer' looks like designed for extension (can be subclassed), but the method 'canMatchPositionalParam' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatchContainer' final or making the method 'canMatchPositionalParam' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12701
GroupMatch
matchCount
Class 'GroupMatch' looks like designed for extension (can be subclassed), but the method 'matchCount' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatch' final or making the method 'matchCount' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12750
addOriginalStringValue
Class 'GroupMatch' looks like designed for extension (can be subclassed), but the method 'addOriginalStringValue' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatch' final or making the method 'addOriginalStringValue' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12753
addMatchedValue
Class 'GroupMatch' looks like designed for extension (can be subclassed), but the method 'addMatchedValue' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatch' final or making the method 'addMatchedValue' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12756
hasMatchedValueAtPosition
Class 'GroupMatch' looks like designed for extension (can be subclassed), but the method 'hasMatchedValueAtPosition' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatch' final or making the method 'hasMatchedValueAtPosition' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12766
toString
Class 'GroupMatch' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatch' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12795
validate
Class 'GroupMatch' looks like designed for extension (can be subclassed), but the method 'validate' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'GroupMatch' final or making the method 'validate' static/final/abstract/empty, or adding allowed annotation for the method. - line: 12818
Help
withCommandNames
Class 'Help' looks like designed for extension (can be subclassed), but the method 'withCommandNames' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Help' final or making the method 'withCommandNames' static/final/abstract/empty, or adding allowed annotation for the method. - line: 15024
options
Class 'Help' looks like designed for extension (can be subclassed), but the method 'options' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Help' final or making the method 'options' static/final/abstract/empty, or adding allowed annotation for the method. - line: 15116
positionalParameters
Class 'Help' looks like designed for extension (can be subclassed), but the method 'positionalParameters' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Help' final or making the method 'positionalParameters' static/final/abstract/empty, or adding allowed annotation for the method. - line: 15117
commandName
Class 'Help' looks like designed for extension (can be subclassed), but the method 'commandName' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Help' final or making the method 'commandName' static/final/abstract/empty, or adding allowed annotation for the method. - line: 15118
TextTable
toString
Class 'TextTable' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'TextTable' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 16893
Column
equals
Class 'Column' looks like designed for extension (can be subclassed), but the method 'equals' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Column' final or making the method 'equals' static/final/abstract/empty, or adding allowed annotation for the method. - line: 16916
hashCode
Class 'Column' looks like designed for extension (can be subclassed), but the method 'hashCode' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Column' final or making the method 'hashCode' static/final/abstract/empty, or adding allowed annotation for the method. - line: 16922
toString
Class 'Column' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Column' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 16923
ColorScheme
equals
Class 'ColorScheme' looks like designed for extension (can be subclassed), but the method 'equals' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ColorScheme' final or making the method 'equals' static/final/abstract/empty, or adding allowed annotation for the method. - line: 17063
hashCode
Class 'ColorScheme' looks like designed for extension (can be subclassed), but the method 'hashCode' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ColorScheme' final or making the method 'hashCode' static/final/abstract/empty, or adding allowed annotation for the method. - line: 17076
toString
Class 'ColorScheme' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ColorScheme' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 17088
Ansi
Text
clone
Class 'Text' looks like designed for extension (can be subclassed), but the method 'clone' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Text' final or making the method 'clone' static/final/abstract/empty, or adding allowed annotation for the method. - line: 17629
splitLines
Class 'Text' looks like designed for extension (can be subclassed), but the method 'splitLines' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Text' final or making the method 'splitLines' static/final/abstract/empty, or adding allowed annotation for the method. - line: 17631
equals
Class 'Text' looks like designed for extension (can be subclassed), but the method 'equals' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Text' final or making the method 'equals' static/final/abstract/empty, or adding allowed annotation for the method. - line: 17730
hashCode
Class 'Text' looks like designed for extension (can be subclassed), but the method 'hashCode' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'Text' final or making the method 'hashCode' static/final/abstract/empty, or adding allowed annotation for the method. - line: 17731
MissingParameterException
getMissing
Class 'MissingParameterException' looks like designed for extension (can be subclassed), but the method 'getMissing' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'MissingParameterException' final or making the method 'getMissing' static/final/abstract/empty, or adding allowed annotation for the method. - line: 18011
PropertiesDefaultProvider
defaultValue
Class 'PropertiesDefaultProvider' looks like designed for extension (can be subclassed), but the method 'defaultValue' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'PropertiesDefaultProvider' final or making the method 'defaultValue' static/final/abstract/empty, or adding allowed annotation for the method. - line: 18326
toString
Class 'PropertiesDefaultProvider' looks like designed for extension (can be subclassed), but the method 'toString' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'PropertiesDefaultProvider' final or making the method 'toString' static/final/abstract/empty, or adding allowed annotation for the method. - line: 18368
Magic Number
picocli.main
picocli
CommandLine
NoOpParameterPreprocessor
hashCode
'7' is a magic number. - line: 5151
Range
hashCode
'37' is a magic number. - line: 5768
hashCode
'37' is a magic number. - line: 5768
hashCode
'17' is a magic number. - line: 5768
hashCode
'37' is a magic number. - line: 5768
Model
CommandSpec
resemblesOption
'10' is a magic number. - line: 7356
resemblesOption
'9' is a magic number. - line: 7356
UsageMessageSpec
detectTerminalWidth
'1000000.0' is a magic number. - line: 7742
detectTerminalWidth
'25' is a magic number. - line: 7740
detectTerminalWidth
'2000' is a magic number. - line: 7741
isCharCJK
'0xFF61' is a magic number. - line: 7798
isCharCJK
'0x00b1' is a magic number. - line: 7782
ArgSpec
hashCodeImpl
'37' is a magic number. - line: 9137
hashCodeImpl
'17' is a magic number. - line: 9132
hashCodeImpl
'37' is a magic number. - line: 9138
hashCodeImpl
'37' is a magic number. - line: 9144
hashCodeImpl
'37' is a magic number. - line: 9148
hashCodeImpl
'37' is a magic number. - line: 9140
hashCodeImpl
'37' is a magic number. - line: 9145
hashCodeImpl
'37' is a magic number. - line: 9136
hashCodeImpl
'37' is a magic number. - line: 9139
hashCodeImpl
'37' is a magic number. - line: 9135
hashCodeImpl
'37' is a magic number. - line: 9133
hashCodeImpl
'37' is a magic number. - line: 9143
hashCodeImpl
'37' is a magic number. - line: 9147
hashCodeImpl
'37' is a magic number. - line: 9142
hashCodeImpl
'37' is a magic number. - line: 9141
hashCodeImpl
'37' is a magic number. - line: 9146
hashCodeImpl
'37' is a magic number. - line: 9134
OptionSpec
hashCode
'37' is a magic number. - line: 9820
hashCode
'37' is a magic number. - line: 9821
hashCode
'37' is a magic number. - line: 9823
hashCode
'37' is a magic number. - line: 9822
hashCode
'37' is a magic number. - line: 9817
hashCode
'37' is a magic number. - line: 9819
hashCode
'37' is a magic number. - line: 9818
PositionalParamSpec
hashCode
'37' is a magic number. - line: 10016
hashCode
'37' is a magic number. - line: 10017
ArgGroupSpec
hashCode
'37' is a magic number. - line: 10404
hashCode
'37' is a magic number. - line: 10398
hashCode
'17' is a magic number. - line: 10397
hashCode
'37' is a magic number. - line: 10405
hashCode
'37' is a magic number. - line: 10401
hashCode
'37' is a magic number. - line: 10399
hashCode
'37' is a magic number. - line: 10402
hashCode
'37' is a magic number. - line: 10403
hashCode
'37' is a magic number. - line: 10400
RuntimeTypeInfo
hashCode
'37' is a magic number. - line: 10998
TypedMember
propertyName
'3' is a magic number. - line: 11204
propertyName
'3' is a magic number. - line: 11204
Interpreter
expandValidArgumentFile
'255' is a magic number. - line: 13048
BuiltIn
ISO8601TimeConverter
convert
'5' is a magic number. - line: 14645
convert
'12' is a magic number. - line: 14649
convert
'8' is a magic number. - line: 14647
Help
createTextTable
'10' is a magic number. - line: 15847
createTextTable
'10' is a magic number. - line: 15847
createTextTable
'3' is a magic number. - line: 15848
calcLongOptionColumnWidth
'3' is a magic number. - line: 15975
calcLongOptionColumnWidth
'3' is a magic number. - line: 15958
calcLongOptionColumnWidth
'3' is a magic number. - line: 15958
Layout
Layout
'4' is a magic number. - line: 16383
TextTable
forDefaultColumns
'4' is a magic number. - line: 16594
forDefaultColumns
'5' is a magic number. - line: 16626
Column
hashCode
'17' is a magic number. - line: 16922
hashCode
'37' is a magic number. - line: 16922
hashCode
'37' is a magic number. - line: 16922
ColorScheme
hashCode
'17' is a magic number. - line: 17077
hashCode
'37' is a magic number. - line: 17082
hashCode
'37' is a magic number. - line: 17084
hashCode
'37' is a magic number. - line: 17080
hashCode
'37' is a magic number. - line: 17081
hashCode
'37' is a magic number. - line: 17083
hashCode
'37' is a magic number. - line: 17079
hashCode
'37' is a magic number. - line: 17078
hashCode
'37' is a magic number. - line: 17085
Ansi
Style
parse
'3' is a magic number. - line: 17486
parse
'3' is a magic number. - line: 17483
Palette256Color
Palette256Color
'6' is a magic number. - line: 17505
Palette256Color
'38' is a magic number. - line: 17502
Palette256Color
'36' is a magic number. - line: 17505
Palette256Color
'48' is a magic number. - line: 17502
Palette256Color
'16' is a magic number. - line: 17505
Palette256Color
'3' is a magic number. - line: 17504
hashCode
'37' is a magic number. - line: 17519
hashCode
'17' is a magic number. - line: 17519
Text
toString
'20' is a magic number. - line: 17741
UnmatchedArgumentException
getSuggestions
'3' is a magic number. - line: 18119
Usability
Modifier Order
picocli.main
picocli
CommandLine
AbstractHandler
'abstract' modifier out of order with the JLS suggestions. - line: 1724
Model
UsageMessageSpec
DEFAULT_USAGE_WIDTH
'static' modifier out of order with the JLS suggestions. - line: 7522
MINIMUM_USAGE_WIDTH
'static' modifier out of order with the JLS suggestions. - line: 7523
DEFAULT_USAGE_LONG_OPTIONS_WIDTH
'static' modifier out of order with the JLS suggestions. - line: 7524
DEFAULT_SYNOPSIS_INDENT
'static' modifier out of order with the JLS suggestions. - line: 7525
DEFAULT_SYNOPSIS_AUTO_INDENT_THRESHOLD
'static' modifier out of order with the JLS suggestions. - line: 7526
MAX_SYNOPSIS_AUTO_INDENT_THRESHOLD
'static' modifier out of order with the JLS suggestions. - line: 7527
RuntimeTypeInfo
ERRORMSG
'static' modifier out of order with the JLS suggestions. - line: 10836
Class CommandSpec should be declared as final. - line: 6081
OptionSpec
Class OptionSpec should be declared as final. - line: 9688
OptionSpec
Builder
Class Builder should be declared as final. - line: 9829
PositionalParamSpec
Class PositionalParamSpec should be declared as final. - line: 9970
PositionalParamSpec
Builder
Class Builder should be declared as final. - line: 10035
UnmatchedArgsBinding
Class UnmatchedArgsBinding should be declared as final. - line: 10693
Model
Class CommandUserObject should be declared as final. - line: 11832
ParseResult
Class ParseResult should be declared as final. - line: 12052
ParseResult
Builder
Class Builder should be declared as final. - line: 12264
BuiltIn
Class BuiltIn should be declared as final. - line: 14559
For Loops Must Use Braces
picocli.main
picocli
CommandLine
Model
Messages
keys
Avoid using for statements without curly braces - line: 11312
Hidden Field
picocli.main
picocli
CommandLine
CommandLine
'factory' hides a field. - line: 219
CommandLine
'factory' hides a field. - line: 223
setColorScheme
'colorScheme' hides a field. - line: 1194
setOut
'out' hides a field. - line: 1222
setErr
'err' hides a field. - line: 1250
setExitCodeExceptionMapper
'exitCodeExceptionMapper' hides a field. - line: 1270
setExecutionStrategy
'executionStrategy' hides a field. - line: 1292
setParameterExceptionHandler
'parameterExceptionHandler' hides a field. - line: 1346
setExecutionExceptionHandler
'executionExceptionHandler' hides a field. - line: 1369
AbstractHandler
exit
'exitCode' hides a field. - line: 1775
useOut
'out' hides a field. - line: 1782
useErr
'err' hides a field. - line: 1785
andExit
'exitCode' hides a field. - line: 1792
ColoredStackTraceWriter
ColoredStackTraceWriter
'colorScheme' hides a field. - line: 2122
parseWithHandler
'out' hides a field. - line: 2452
parseWithHandlers
'out' hides a field. - line: 2499
usage
'out' hides a field. - line: 2609
usage
'out' hides a field. - line: 2623
usage
'out' hides a field. - line: 2652
usage
'colorScheme' hides a field. - line: 2652
usage
'colorScheme' hides a field. - line: 2658
getUsageMessage
'colorScheme' hides a field. - line: 2674
printVersionHelp
'out' hides a field. - line: 2692
printVersionHelp
'out' hides a field. - line: 2705
printVersionHelp
'out' hides a field. - line: 2724
printVersionHelp
'out' hides a field. - line: 2734
printVersionHelp
'out' hides a field. - line: 2747
Range
Range
'min' hides a field. - line: 5562
Range
'originalValue' hides a field. - line: 5562
Range
'max' hides a field. - line: 5562
Model
CaseAwareLinkedMap
CaseAwareLinkedMap
'locale' hides a field. - line: 5916
setCaseInsensitive
'caseInsensitive' hides a field. - line: 5953
CommandSpec
CommandSpec
'userObject' hides a field. - line: 6143
commandLine
'commandLine' hides a field. - line: 6283
addSubcommand
'name' hides a field. - line: 6396
addSubcommand
'name' hides a field. - line: 6412
removeSubcommand
'name' hides a field. - line: 6470
validateSubcommandName
'name' hides a field. - line: 6493
parent
'parent' hides a field. - line: 6573
addOption
'name' hides a field. - line: 6594
addOptionNegative
'name' hides a field. - line: 6627
addGroupArgsToCommand
'name' hides a field. - line: 6774
addGroupArgsToCommand
'name' hides a field. - line: 6783
addGroupArgsToCommand
'options' hides a field. - line: 6770
addGroupArgsToCommand
'name' hides a field. - line: 6784
flatten
'groups' hides a field. - line: 6793
addMixin
'name' hides a field. - line: 6815
addMixin
'options' hides a field. - line: 6836
addMixin
'name' hides a field. - line: 6825
commandMethodParamValues
'name' hides a field. - line: 6969
name
'name' hides a field. - line: 7070
aliases
'aliases' hides a field. - line: 7075
defaultValueProvider
'defaultValueProvider' hides a field. - line: 7089
version
'version' hides a field. - line: 7094
versionProvider
'versionProvider' hides a field. - line: 7099
scopeType
'scopeType' hides a field. - line: 7138
modelTransformer
'modelTransformer' hides a field. - line: 7155
preprocessor
'preprocessor' hides a field. - line: 7163
mixinStandardHelpOptions
'name' hides a field. - line: 7204
subcommandsRepeatable
'subcommandsRepeatable' hides a field. - line: 7218
updateScopeType
'scopeType' hides a field. - line: 7295
findOption
'name' hides a field. - line: 7301
findVisibleOptionNamesWithPrefix
'name' hides a field. - line: 7329
UsageMessageSpec
UsageMessageSpec
'interpolator' hides a field. - line: 7626
getSysPropertyWidthOrDefault
'width' hides a field. - line: 7666
helpFactory
'helpFactory' hides a field. - line: 7907
headerHeading
'headerHeading' hides a field. - line: 8055
header
'header' hides a field. - line: 8060
customSynopsis
'customSynopsis' hides a field. - line: 8102
description
'description' hides a field. - line: 8111
footer
'footer' hides a field. - line: 8180
ParserSpec
separator
'separator' hides a field. - line: 8392
stopAtUnmatched
'stopAtUnmatched' hides a field. - line: 8394
stopAtPositional
'stopAtPositional' hides a field. - line: 8396
toggleBooleanFlags
'toggleBooleanFlags' hides a field. - line: 8401
overwrittenOptionsAllowed
'overwrittenOptionsAllowed' hides a field. - line: 8403
unmatchedArgumentsAllowed
'unmatchedArgumentsAllowed' hides a field. - line: 8405
abbreviatedSubcommandsAllowed
'abbreviatedSubcommandsAllowed' hides a field. - line: 8407
abbreviatedOptionsAllowed
'abbreviatedOptionsAllowed' hides a field. - line: 8409
expandAtFiles
'expandAtFiles' hides a field. - line: 8411
atFileCommentChar
'atFileCommentChar' hides a field. - line: 8414
useSimplifiedAtFiles
'useSimplifiedAtFiles' hides a field. - line: 8417
posixClusteredShortOptionsAllowed
'posixClusteredShortOptionsAllowed' hides a field. - line: 8419
caseInsensitiveEnumValuesAllowed
'caseInsensitiveEnumValuesAllowed' hides a field. - line: 8422
trimQuotes
'trimQuotes' hides a field. - line: 8425
splitQuotedStrings
'splitQuotedStrings' hides a field. - line: 8428
unmatchedOptionsAllowedAsOptionParameters
'unmatchedOptionsAllowedAsOptionParameters' hides a field. - line: 8432
unmatchedOptionsArePositionalParams
'unmatchedOptionsArePositionalParams' hides a field. - line: 8434
collectErrors
'collectErrors' hides a field. - line: 8438
limitSplit
'limitSplit' hides a field. - line: 8445
ArgSpec
splitValue
'arity' hides a field. - line: 9032
Builder
Builder
'annotatedElement' hides a field. - line: 9265
Builder
'annotatedElement' hides a field. - line: 9278
Builder
'annotatedElement' hides a field. - line: 9312
required
'required' hides a field. - line: 9508
interactive
'interactive' hides a field. - line: 9511
echo
'echo' hides a field. - line: 9514
prompt
'prompt' hides a field. - line: 9517
description
'description' hides a field. - line: 9521
descriptionKey
'descriptionKey' hides a field. - line: 9527
arity
'arity' hides a field. - line: 9533
paramLabel
'paramLabel' hides a field. - line: 9536
hideParamSyntax
'hideParamSyntax' hides a field. - line: 9542
splitRegex
'splitRegex' hides a field. - line: 9553
splitRegexSynopsisLabel
'splitRegexSynopsisLabel' hides a field. - line: 9556
completionCandidates
'completionCandidates' hides a field. - line: 9562
parameterConsumer
'parameterConsumer' hides a field. - line: 9566
preprocessor
'preprocessor' hides a field. - line: 9570
hidden
'hidden' hides a field. - line: 9573
inherited
'inherited' hides a field. - line: 9577
root
'root' hides a field. - line: 9582
typeInfo
'typeInfo' hides a field. - line: 9591
userObject
'userObject' hides a field. - line: 9606
defaultValue
'defaultValue' hides a field. - line: 9620
initialValue
'initialValue' hides a field. - line: 9627
hasInitialValue
'hasInitialValue' hides a field. - line: 9631
getter
'getter' hides a field. - line: 9634
setter
'setter' hides a field. - line: 9636
scope
'scope' hides a field. - line: 9638
scopeType
'scopeType' hides a field. - line: 9641
withToString
'toString' hides a field. - line: 9644
OptionSpec
Builder
Builder
'names' hides a field. - line: 9838
names
'names' hides a field. - line: 9904
help
'help' hides a field. - line: 9907
usageHelp
'usageHelp' hides a field. - line: 9910
versionHelp
'versionHelp' hides a field. - line: 9913
negatable
'negatable' hides a field. - line: 9916
fallbackValue
'fallbackValue' hides a field. - line: 9922
order
'order' hides a field. - line: 9926
PositionalParamSpec
Builder
index
'index' hides a field. - line: 10062
capacity
'capacity' hides a field. - line: 10065
ArgGroupSpec
Builder
order
'order' hides a field. - line: 10626
getter
'getter' hides a field. - line: 10655
setter
'setter' hides a field. - line: 10660
scope
'scope' hides a field. - line: 10665
UnmatchedArgsBinding
UnmatchedArgsBinding
'getter' hides a field. - line: 10706
UnmatchedArgsBinding
'setter' hides a field. - line: 10706
MethodParam
MethodParam
'paramIndex' hides a field. - line: 10767
MethodParam
'method' hides a field. - line: 10767
RuntimeTypeInfo
RuntimeTypeInfo
'actualGenericTypeArguments' hides a field. - line: 10841
RuntimeTypeInfo
'auxiliaryTypes' hides a field. - line: 10841
RuntimeTypeInfo
'type' hides a field. - line: 10841
TypedMember
TypedMember
'scope' hides a field. - line: 11079
TypedMember
'scope' hides a field. - line: 11091
TypedMember
'scope' hides a field. - line: 11121
Messages
Messages
'spec' hides a field. - line: 11286
Messages
'spec' hides a field. - line: 11289
Messages
'rb' hides a field. - line: 11289
Messages
'spec' hides a field. - line: 11292
Messages
'rb' hides a field. - line: 11292
FieldBinding
FieldBinding
'scope' hides a field. - line: 11708
FieldBinding
'field' hides a field. - line: 11708
FieldBinding
'field' hides a field. - line: 11709
FieldBinding
'scope' hides a field. - line: 11709
MethodBinding
MethodBinding
'scope' hides a field. - line: 11743
MethodBinding
'method' hides a field. - line: 11743
MethodBinding
'spec' hides a field. - line: 11743
PicocliInvocationHandler
ProxyBinding
ProxyBinding
'method' hides a field. - line: 11780
ObjectBinding
set
'value' hides a field. - line: 11792
ObjectScope
ObjectScope
'value' hides a field. - line: 11803
set
'value' hides a field. - line: 11821
CommandUserObject
CommandUserObject
'factory' hides a field. - line: 11838
Interpolator
Interpolator
'commandSpec' hides a field. - line: 11912
ParseResult
Builder
addOriginalStringValue
'groupMatchContainer' hides a field. - line: 12373
addTypedValues
'groupMatchContainer' hides a field. - line: 12385
GroupValidationResult
GroupValidationResult
'type' hides a field. - line: 12429
GroupValidationResult
'type' hides a field. - line: 12430
GroupValidationResult
'exception' hides a field. - line: 12430
GroupMatchContainer
GroupMatchContainer
'group' hides a field. - line: 12464
createGroupMatchContainer
'group' hides a field. - line: 12535
findMatchContainers
'group' hides a field. - line: 12550
findLastMatchContainer
'group' hides a field. - line: 12559
updateUnmatchedGroups
'group' hides a field. - line: 12584
failGroupMultiplicityExceeded
'group' hides a field. - line: 12647
simplifyErrorMessageForSingleGroup
'validationResult' hides a field. - line: 12668
simplifyErrorMessageForSingleGroup
'group' hides a field. - line: 12661
GroupMatch
GroupMatch
'container' hides a field. - line: 12734
hasMatchedValueAtPosition
'position' hides a field. - line: 12766
BuiltIn
ISO8601TimeConverter
ISO8601TimeConverter
'constructor' hides a field. - line: 14640
ReflectionConverter
ReflectionConverter
'paramTypes' hides a field. - line: 14736
ReflectionConverter
'method' hides a field. - line: 14736
HelpCommand
init
'ansi' hides a field. - line: 14839
init
'out' hides a field. - line: 14839
init
'err' hides a field. - line: 14839
init
'colorScheme' hides a field. - line: 14846
init
'err' hides a field. - line: 14846
init
'out' hides a field. - line: 14846
Help
Help
'colorScheme' hides a field. - line: 15006
Help
'colorScheme' hides a field. - line: 15013
Help
'commandSpec' hides a field. - line: 15013
withCommandNames
'aliases' hides a field. - line: 15024
registerSubcommands
'aliases' hides a field. - line: 15081
DefaultOptionRenderer
DefaultOptionRenderer
'requiredMarker' hides a field. - line: 16107
DefaultOptionRenderer
'showDefaultValues' hides a field. - line: 16107
DefaultParameterRenderer
DefaultParameterRenderer
'showDefaultValues' hides a field. - line: 16226
DefaultParameterRenderer
'requiredMarker' hides a field. - line: 16226
DefaultParamLabelRenderer
DefaultParamLabelRenderer
'commandSpec' hides a field. - line: 16298
Layout
Layout
'colorScheme' hides a field. - line: 16382
Layout
'colorScheme' hides a field. - line: 16390
Layout
'colorScheme' hides a field. - line: 16399
Layout
'optionRenderer' hides a field. - line: 16399
Layout
'parameterRenderer' hides a field. - line: 16399
TextTable
Cell
Cell
'row' hides a field. - line: 16561
Cell
'column' hides a field. - line: 16561
TextTable
'columns' hides a field. - line: 16666
TextTable
'columns' hides a field. - line: 16667
TextTable
'colorScheme' hides a field. - line: 16667
setAdjustLineBreaksForWideCJKCharacters
'adjustLineBreaksForWideCJKCharacters' hides a field. - line: 16680
Column
Column
'width' hides a field. - line: 16911
Column
'overflow' hides a field. - line: 16911
Column
'indent' hides a field. - line: 16911
ColorScheme
Builder
Builder
'ansi' hides a field. - line: 17156
ansi
'ansi' hides a field. - line: 17174
Ansi
enabled
'tty' hides a field. - line: 17366
Style
Style
'startCode' hides a field. - line: 17423
Style
'endCode' hides a field. - line: 17423
Palette256Color
Palette256Color
'color' hides a field. - line: 17501
Text
Text
'maxLength' hides a field. - line: 17553
Text
'maxLength' hides a field. - line: 17558
Text
'colorScheme' hides a field. - line: 17558
Text
'colorScheme' hides a field. - line: 17584
addStyledSection
'length' hides a field. - line: 17626
getStyledChars
'from' hides a field. - line: 17711
getStyledChars
'length' hides a field. - line: 17711
TraceLevel
print
'tracer' hides a field. - line: 17819
ExecutionException
ExecutionException
'commandLine' hides a field. - line: 17899
ExecutionException
'commandLine' hides a field. - line: 17903
ParameterException
ParameterException
'commandLine' hides a field. - line: 17931
ParameterException
'commandLine' hides a field. - line: 17941
ParameterException
'value' hides a field. - line: 17953
ParameterException
'commandLine' hides a field. - line: 17953
ParameterException
'argSpec' hides a field. - line: 17953
ParameterException
'commandLine' hides a field. - line: 17967
ParameterException
'argSpec' hides a field. - line: 17967
ParameterException
'value' hides a field. - line: 17967
MissingParameterException
MissingParameterException
'missing' hides a field. - line: 18006
MissingParameterException
'missing' hides a field. - line: 18007
PropertiesDefaultProvider
PropertiesDefaultProvider
'properties' hides a field. - line: 18264
If Stmts Must Use Braces
picocli.main
picocli
CommandLine
Assert
assertTrue
Avoid using if statements without curly braces - line: 17810
assertTrue
Avoid using if statements without curly braces - line: 17813
Inner Assignment
picocli.main
picocli
CommandLine
Range
valueOf
Inner assignments should be avoided. - line: 5688
Model
ArgGroupSpec
setUserObject
Inner assignments should be avoided. - line: 10466
UnmatchedArgumentException
quoteElements
Inner assignments should be avoided. - line: 18140
AbbreviationMatcher
matchKeyChunks
Inner assignments should be avoided. - line: 18461
Inner Type Last
picocli.main
picocli
CommandLine
mappedExitCode
Fields and methods should be before inner classes. - line: 1162
getColorScheme
Fields and methods should be before inner classes. - line: 1180
setColorScheme
Fields and methods should be before inner classes. - line: 1194
getOut
Fields and methods should be before inner classes. - line: 1207
setOut
Fields and methods should be before inner classes. - line: 1222
getErr
Fields and methods should be before inner classes. - line: 1234
setErr
Fields and methods should be before inner classes. - line: 1250
getExitCodeExceptionMapper
Fields and methods should be before inner classes. - line: 1260
setExitCodeExceptionMapper
Fields and methods should be before inner classes. - line: 1270
getExecutionStrategy
Fields and methods should be before inner classes. - line: 1281
setExecutionStrategy
Fields and methods should be before inner classes. - line: 1292
getParameterExceptionHandler
Fields and methods should be before inner classes. - line: 1334
setParameterExceptionHandler
Fields and methods should be before inner classes. - line: 1346
getExecutionExceptionHandler
Fields and methods should be before inner classes. - line: 1357
setExecutionExceptionHandler
Fields and methods should be before inner classes. - line: 1369
populateCommand
Fields and methods should be before inner classes. - line: 1399
populateSpec
Fields and methods should be before inner classes. - line: 1432
parse
Fields and methods should be before inner classes. - line: 1458
parseArgs
Fields and methods should be before inner classes. - line: 1476
getParseResult
Fields and methods should be before inner classes. - line: 1480
getExecutionResult
Fields and methods should be before inner classes. - line: 1491
setExecutionResult
Fields and methods should be before inner classes. - line: 1499
clearExecutionResults
Fields and methods should be before inner classes. - line: 1503
defaultExceptionHandler
Fields and methods should be before inner classes. - line: 1842
printHelpIfRequested
Fields and methods should be before inner classes. - line: 1846
printHelpIfRequested
Fields and methods should be before inner classes. - line: 1854
printHelpIfRequested
Fields and methods should be before inner classes. - line: 1866
printHelpIfRequested
Fields and methods should be before inner classes. - line: 1878
executeHelpRequest
Fields and methods should be before inner classes. - line: 1907
executeHelpRequest
Fields and methods should be before inner classes. - line: 1911
executeUserObject
Fields and methods should be before inner classes. - line: 1934
execute
Fields and methods should be before inner classes. - line: 2072
handleUnhandled
Fields and methods should be before inner classes. - line: 2095
throwableToColorString
Fields and methods should be before inner classes. - line: 2108
enrichForBackwardsCompatibility
Fields and methods should be before inner classes. - line: 2131
parseWithHandler
Fields and methods should be before inner classes. - line: 2452
parseWithHandler
Fields and methods should be before inner classes. - line: 2492
parseWithHandlers
Fields and methods should be before inner classes. - line: 2499
parseWithHandlers
Fields and methods should be before inner classes. - line: 2553
versionString
Fields and methods should be before inner classes. - line: 2565
usage
Fields and methods should be before inner classes. - line: 2576
usage
Fields and methods should be before inner classes. - line: 2588
usage
Fields and methods should be before inner classes. - line: 2600
usage
Fields and methods should be before inner classes. - line: 2609
usage
Fields and methods should be before inner classes. - line: 2615
usage
Fields and methods should be before inner classes. - line: 2623
usage
Fields and methods should be before inner classes. - line: 2626
usage
Fields and methods should be before inner classes. - line: 2652
usage
Fields and methods should be before inner classes. - line: 2658
getUsageMessage
Fields and methods should be before inner classes. - line: 2664
getUsageMessage
Fields and methods should be before inner classes. - line: 2669
getUsageMessage
Fields and methods should be before inner classes. - line: 2674
usage
Fields and methods should be before inner classes. - line: 2678
printVersionHelp
Fields and methods should be before inner classes. - line: 2692
printVersionHelp
Fields and methods should be before inner classes. - line: 2705
printVersionHelp
Fields and methods should be before inner classes. - line: 2724
printVersionHelp
Fields and methods should be before inner classes. - line: 2734
printVersionHelp
Fields and methods should be before inner classes. - line: 2747
call
Fields and methods should be before inner classes. - line: 2767
call
Fields and methods should be before inner classes. - line: 2787
call
Fields and methods should be before inner classes. - line: 2804
call
Fields and methods should be before inner classes. - line: 2836
call
Fields and methods should be before inner classes. - line: 2855
call
Fields and methods should be before inner classes. - line: 2875
call
Fields and methods should be before inner classes. - line: 2894
call
Fields and methods should be before inner classes. - line: 2931
firstElement
Fields and methods should be before inner classes. - line: 2937
run
Fields and methods should be before inner classes. - line: 2952
run
Fields and methods should be before inner classes. - line: 2966
run
Fields and methods should be before inner classes. - line: 2981
run
Fields and methods should be before inner classes. - line: 3014
run
Fields and methods should be before inner classes. - line: 3030
run
Fields and methods should be before inner classes. - line: 3049
run
Fields and methods should be before inner classes. - line: 3069
run
Fields and methods should be before inner classes. - line: 3105
invoke
Fields and methods should be before inner classes. - line: 3125
invoke
Fields and methods should be before inner classes. - line: 3144
invoke
Fields and methods should be before inner classes. - line: 3164
invoke
Fields and methods should be before inner classes. - line: 3195
getCommandMethods
Fields and methods should be before inner classes. - line: 3213
getCommandMethods
Fields and methods should be before inner classes. - line: 3216
registerConverter
Fields and methods should be before inner classes. - line: 3280
getSeparator
Fields and methods should be before inner classes. - line: 3291
setSeparator
Fields and methods should be before inner classes. - line: 3302
getResourceBundle
Fields and methods should be before inner classes. - line: 3314
setResourceBundle
Fields and methods should be before inner classes. - line: 3326
getUsageHelpWidth
Fields and methods should be before inner classes. - line: 3336
setUsageHelpWidth
Fields and methods should be before inner classes. - line: 3346
getUsageHelpLongOptionsMaxWidth
Fields and methods should be before inner classes. - line: 3360
setUsageHelpLongOptionsMaxWidth
Fields and methods should be before inner classes. - line: 3374
isUsageHelpAutoWidth
Fields and methods should be before inner classes. - line: 3388
setUsageHelpAutoWidth
Fields and methods should be before inner classes. - line: 3400
getCommandName
Fields and methods should be before inner classes. - line: 3412
setCommandName
Fields and methods should be before inner classes. - line: 3421
isExpandAtFiles
Fields and methods should be before inner classes. - line: 3432
setExpandAtFiles
Fields and methods should be before inner classes. - line: 3440
getAtFileCommentChar
Fields and methods should be before inner classes. - line: 3451
setAtFileCommentChar
Fields and methods should be before inner classes. - line: 3460
isUseSimplifiedAtFiles
Fields and methods should be before inner classes. - line: 3475
setUseSimplifiedAtFiles
Fields and methods should be before inner classes. - line: 3485
getNegatableOptionTransformer
Fields and methods should be before inner classes. - line: 3498
setNegatableOptionTransformer
Fields and methods should be before inner classes. - line: 3513
empty
Fields and methods should be before inner classes. - line: 3520
empty
Fields and methods should be before inner classes. - line: 3521
str
Fields and methods should be before inner classes. - line: 3522
isBoolean
Fields and methods should be before inner classes. - line: 3523
isBoolean
Fields and methods should be before inner classes. - line: 3524
toCommandLine
Fields and methods should be before inner classes. - line: 3525
isMultiValue
Fields and methods should be before inner classes. - line: 3526
isOptional
Fields and methods should be before inner classes. - line: 3527
getOptionalEmpty
Fields and methods should be before inner classes. - line: 3528
getOptionalOfNullable
Fields and methods should be before inner classes. - line: 3531
format
Fields and methods should be before inner classes. - line: 3534
mapOf
Fields and methods should be before inner classes. - line: 3544
defaultFactory
Fields and methods should be before inner classes. - line: 5472
validatePositionalParameters
Fields and methods should be before inner classes. - line: 5804
copy
Fields and methods should be before inner classes. - line: 5818
reverse
Fields and methods should be before inner classes. - line: 5819
reverseList
Fields and methods should be before inner classes. - line: 5823
reverseArray
Fields and methods should be before inner classes. - line: 5827
Model
CaseAwareLinkedMap
targetMap
Fields and methods should be before inner classes. - line: 5899
keyMap
Fields and methods should be before inner classes. - line: 5900
keySet
Fields and methods should be before inner classes. - line: 5901
caseInsensitive
Fields and methods should be before inner classes. - line: 5902
locale
Fields and methods should be before inner classes. - line: 5903
isCaseConvertible
Fields and methods should be before inner classes. - line: 5932
toLowerCase
Fields and methods should be before inner classes. - line: 5936
isCaseInsensitive
Fields and methods should be before inner classes. - line: 5948
setCaseInsensitive
Fields and methods should be before inner classes. - line: 5953
getLocale
Fields and methods should be before inner classes. - line: 5968
getCaseSensitiveKey
Fields and methods should be before inner classes. - line: 5976
size
Fields and methods should be before inner classes. - line: 5984
containsKey
Fields and methods should be before inner classes. - line: 5989
containsValue
Fields and methods should be before inner classes. - line: 6001
get
Fields and methods should be before inner classes. - line: 6006
put
Fields and methods should be before inner classes. - line: 6019
remove
Fields and methods should be before inner classes. - line: 6032
clear
Fields and methods should be before inner classes. - line: 6045
keySet
Fields and methods should be before inner classes. - line: 6051
values
Fields and methods should be before inner classes. - line: 6056
entrySet
Fields and methods should be before inner classes. - line: 6061
initializable
Fields and methods should be before inner classes. - line: 7362
initializable
Fields and methods should be before inner classes. - line: 7365
isNonDefault
Fields and methods should be before inner classes. - line: 7368
isNonDefault
Fields and methods should be before inner classes. - line: 7371
addValueToListInMap
Fields and methods should be before inner classes. - line: 12878
flatList
Fields and methods should be before inner classes. - line: 12883
optionDescription
Fields and methods should be before inner classes. - line: 14445
createMissingParameterMessage
Fields and methods should be before inner classes. - line: 14463
smartUnquoteIfEnabled
Fields and methods should be before inner classes. - line: 14497
smartUnquote
Fields and methods should be before inner classes. - line: 14501
unquote
Fields and methods should be before inner classes. - line: 14523
close
Fields and methods should be before inner classes. - line: 14529
getStdoutEncoding
Fields and methods should be before inner classes. - line: 14537
getStderrEncoding
Fields and methods should be before inner classes. - line: 14541
newPrintWriter
Fields and methods should be before inner classes. - line: 14545
BuiltIn
fail
Fields and methods should be before inner classes. - line: 14590
fail
Fields and methods should be before inner classes. - line: 14591
handle
Fields and methods should be before inner classes. - line: 14715
excluded
Fields and methods should be before inner classes. - line: 14721
traced
Fields and methods should be before inner classes. - line: 14731
Help
addTrailingDefaultLine
Fields and methods should be before inner classes. - line: 16254
createDescriptionFirstLines
Fields and methods should be before inner classes. - line: 16259
TextTable
OPTION_SEPARATOR_COLUMN
Fields and methods should be before inner classes. - line: 16564
LONG_OPTION_COLUMN
Fields and methods should be before inner classes. - line: 16565
columns
Fields and methods should be before inner classes. - line: 16568
columnValues
Fields and methods should be before inner classes. - line: 16571
indentWrappedLines
Fields and methods should be before inner classes. - line: 16574
colorScheme
Fields and methods should be before inner classes. - line: 16576
tableWidth
Fields and methods should be before inner classes. - line: 16577
adjustLineBreaksForWideCJKCharacters
Fields and methods should be before inner classes. - line: 16578
forDefaultColumns
Fields and methods should be before inner classes. - line: 16592
forDefaultColumns
Fields and methods should be before inner classes. - line: 16609
forDefaultColumns
Fields and methods should be before inner classes. - line: 16624
forColumnWidths
Fields and methods should be before inner classes. - line: 16640
forColumnWidths
Fields and methods should be before inner classes. - line: 16648
forColumns
Fields and methods should be before inner classes. - line: 16659
forColumns
Fields and methods should be before inner classes. - line: 16664
isAdjustLineBreaksForWideCJKCharacters
Fields and methods should be before inner classes. - line: 16677
setAdjustLineBreaksForWideCJKCharacters
Fields and methods should be before inner classes. - line: 16680
columns
Fields and methods should be before inner classes. - line: 16685
textAt
Fields and methods should be before inner classes. - line: 16691
cellAt
Fields and methods should be before inner classes. - line: 16698
rowCount
Fields and methods should be before inner classes. - line: 16702
addEmptyRow
Fields and methods should be before inner classes. - line: 16705
addRowValues
Fields and methods should be before inner classes. - line: 16714
addRowValues
Fields and methods should be before inner classes. - line: 16742
unindent
Fields and methods should be before inner classes. - line: 16760
reindent
Fields and methods should be before inner classes. - line: 16768
putValue
Fields and methods should be before inner classes. - line: 16785
length
Fields and methods should be before inner classes. - line: 16831
length
Fields and methods should be before inner classes. - line: 16834
copy
Fields and methods should be before inner classes. - line: 16843
copy
Fields and methods should be before inner classes. - line: 16861
copy
Fields and methods should be before inner classes. - line: 16866
toString
Fields and methods should be before inner classes. - line: 16876
toString
Fields and methods should be before inner classes. - line: 16893
defaultColorScheme
Fields and methods should be before inner classes. - line: 17265
Ansi
apply
Fields and methods should be before inner classes. - line: 17534
Local Variable Name
picocli.main
picocli
CommandLine
Model
UsageMessageSpec
detectTerminalWidth
Anonymous: java.lang.Runnable
run
Name 'INHERIT' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 7708
Help
insertSynopsisCommandName
Name 'PADDING' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 15404
DefaultOptionRenderer
renderDescriptionLines
Name 'EMPTY' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 16155
DefaultParameterRenderer
render
Name 'EMPTY' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 16234
addTrailingDefaultLine
Name 'EMPTY' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 16255
Member Name
picocli.main
picocli
CommandLine
Help
AT_FILE_POSITIONAL_PARAM
Name 'AT_FILE_POSITIONAL_PARAM' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 14966
END_OF_OPTIONS_OPTION
Name 'END_OF_OPTIONS_OPTION' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 14970
Naming - Class naming conventions
picocli.main
picocli
CommandLine
The utility class name 'ExitCode' doesn't match '[A-Z][a-zA-Z0-9]+(Utils?|Helper)' - line: 1092
The utility class name 'BuiltIn' doesn't match '[A-Z][a-zA-Z0-9]+(Utils?|Helper)' - line: 14559
The utility class name 'Assert' doesn't match '[A-Z][a-zA-Z0-9]+(Utils?|Helper)' - line: 17792
Naming - Suspicious constant field name
picocli.main
picocli
CommandLine
DefaultFactory
The field name indicates a constant but its modifiers do not - line: 5474
Parameter Assignment
picocli.main
picocli
CommandLine
Range
valueOf
Assignment of parameter 'range' is not allowed. - line: 5683
Model
RuntimeTypeInfo
create
Assignment of parameter 'auxiliaryTypes' is not allowed. - line: 10891
create
Assignment of parameter 'type' is not allowed. - line: 10878
create
Assignment of parameter 'auxiliaryTypes' is not allowed. - line: 10884
create
Assignment of parameter 'type' is not allowed. - line: 10875
create
Assignment of parameter 'auxiliaryTypes' is not allowed. - line: 10886
create
Assignment of parameter 'type' is not allowed. - line: 10869
create
Assignment of parameter 'type' is not allowed. - line: 10873
create
Assignment of parameter 'auxiliaryTypes' is not allowed. - line: 10889
create
Assignment of parameter 'auxiliaryTypes' is not allowed. - line: 10893
create
Assignment of parameter 'type' is not allowed. - line: 10871
Interpolator
resolveLookups
Assignment of parameter 'text' is not allowed. - line: 11990
Interpreter
addOrExpand
Assignment of parameter 'arg' is not allowed. - line: 13010
applyOption
Assignment of parameter 'lookBehind' is not allowed. - line: 13637
applyOption
Assignment of parameter 'negated' is not allowed. - line: 13635
applyOption
Assignment of parameter 'alreadyUnquoted' is not allowed. - line: 13636
consumeMapArguments
Assignment of parameter 'alreadyUnquoted' is not allowed. - line: 13891
consumeMapArguments
Assignment of parameter 'lookBehind' is not allowed. - line: 13890
consumeMapArguments
Assignment of parameter 'lookBehind' is not allowed. - line: 13866
consumeMapArguments
Assignment of parameter 'alreadyUnquoted' is not allowed. - line: 13867
consumeArguments
Assignment of parameter 'lookBehind' is not allowed. - line: 14082
consumeArguments
Assignment of parameter 'alreadyUnquoted' is not allowed. - line: 14083
consumeArguments
Assignment of parameter 'alreadyUnquoted' is not allowed. - line: 14113
consumeArguments
Assignment of parameter 'lookBehind' is not allowed. - line: 14112
addUserInputToList
Assignment of parameter 'consumed' is not allowed. - line: 14159
consumeOneArgument
Assignment of parameter 'index' is not allowed. - line: 14185
booleanValue
Assignment of parameter 'value' is not allowed. - line: 14361
Help
concatOptionText
Assignment of parameter 'text' is not allowed. - line: 15314
concatOptionText
Assignment of parameter 'text' is not allowed. - line: 15321
concatOptionText
Assignment of parameter 'text' is not allowed. - line: 15323
concatOptionText
Assignment of parameter 'text' is not allowed. - line: 15318
concatOptionText
Assignment of parameter 'text' is not allowed. - line: 15316
concatPositionalText
Assignment of parameter 'text' is not allowed. - line: 15362
TextTable
putValue
Assignment of parameter 'row' is not allowed. - line: 16823
putValue
Assignment of parameter 'col' is not allowed. - line: 16811
putValue
Assignment of parameter 'value' is not allowed. - line: 16820
putValue
Assignment of parameter 'col' is not allowed. - line: 16806
putValue
Assignment of parameter 'value' is not allowed. - line: 16803
putValue
Assignment of parameter 'row' is not allowed. - line: 16810
CosineSimilarity
mostSimilar
Assignment of parameter 'pattern' is not allowed. - line: 17844
Parameter Name
picocli.main
picocli
CommandLine
Model
ArgGroupSpec
synopsisText
Name 'outparam_groupArgs' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 10316
rawSynopsisUnitText
Name 'outparam_groupArgs' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 10339
Help
createDetailedSynopsisGroupsText
Name 'outparam_groupArgs' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 15235
Static Variable Name
picocli.main
picocli
CommandLine
DefaultFactory
GROOVY_CLOSURE_CLASS
Name 'GROOVY_CLOSURE_CLASS' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 5474
Help
Ansi
EMPTY_TEXT
Name 'EMPTY_TEXT' must match pattern '^[a-z][a-zA-Z0-9]*$'. - line: 17284
System Println
picocli.main
picocli
CommandLine
Interpreter
readUserInputWithEchoing
System.out.print is used - line: 14424
Critical
Efficiency
Performance - Inefficient use of keySet iterator instead of entrySet iterator
picocli.main
picocli
CommandLine
getMixins
WMI: picocli.CommandLine.getMixins() makes inefficient use of keySet iterator instead of entrySet iterator - line: 287
Option
required
WMI: picocli.CommandLine$CosineSimilarity.dotProduct(Map, Map) makes inefficient use of keySet iterator instead of entrySet iterator - line: 3652
Model
Interpolator
resolveLookups
WMI: picocli.CommandLine$Model$Interpolator.resolveLookups(String, Set, Map) makes inefficient use of keySet iterator instead of entrySet iterator - line: 11962
ParseResult
GroupMatchContainer
failGroupMultiplicityExceeded
WMI: picocli.CommandLine$ParseResult$GroupMatchContainer.failGroupMultiplicityExceeded(List, CommandLine) makes inefficient use of keySet iterator instead of entrySet iterator - line: 12649
simplifyErrorMessageForSingleGroup
WMI: picocli.CommandLine$ParseResult$GroupMatchContainer.simplifyErrorMessageForSingleGroup(Map, CommandLine) makes inefficient use of keySet iterator instead of entrySet iterator - line: 12662
GroupMatch
toString
WMI: picocli.CommandLine$ParseResult$GroupMatch.toString(StringBuilder) makes inefficient use of keySet iterator instead of entrySet iterator - line: 12801
Performance - Method concatenates strings using + in a loop
picocli.main
picocli
CommandLine
Model
UsageMessageSpec
detectTerminalWidth
Anonymous: java.lang.Runnable
run
SBSC: picocli.CommandLine$Model$UsageMessageSpec$1.run() concatenates strings using + in a loop - line: 7716
ParseResult
GroupMatchContainer
failGroupMultiplicityExceeded
SBSC: picocli.CommandLine$ParseResult$GroupMatchContainer.failGroupMultiplicityExceeded(List, CommandLine) concatenates strings using + in a loop - line: 12645
GroupMatch
validate
SBSC: picocli.CommandLine$ParseResult$GroupMatch.validate(CommandLine) concatenates strings using + in a loop - line: 12858
Interpreter
registerBuiltInConverters
SBSC: picocli.CommandLine$UnmatchedArgumentException.quoteElements(List) concatenates strings using + in a loop - line: 12923
createMissingParameterMessage
SBSC: picocli.CommandLine.createMissingParameterMessage(CommandLine$Model$ArgSpec, CommandLine$Range, List, Stack, int) concatenates strings using + in a loop - line: 14476
Reliability
Avoid Catching Throwable
picocli.main
picocli
CommandLine
Help
Ansi
calcTTY
A catch statement should never catch throwable since it includes errors. - line: 17318
Security - Array is stored directly
picocli.main
picocli
CommandLine
Model
CommandSpec
version
The user-supplied array 'version' is stored directly. - line: 7094
UsageMessageSpec
header
The user-supplied array 'header' is stored directly. - line: 8060
customSynopsis
The user-supplied array 'customSynopsis' is stored directly. - line: 8102
description
The user-supplied array 'description' is stored directly. - line: 8111
footer
The user-supplied array 'footer' is stored directly. - line: 8180
OptionSpec
Builder
Builder
The user-supplied array 'names' is stored directly. - line: 9838
Usability
Naming - Suspicious equals method name
picocli.main
picocli
CommandLine
Assert
The method name and parameter number are suspiciously close to equals(Object) - line: 17806
-
-
diff --git a/src/main/java/picocli/CommandLine.java b/src/main/java/picocli/CommandLine.java
index dadd7cfd9..22399cebb 100644
--- a/src/main/java/picocli/CommandLine.java
+++ b/src/main/java/picocli/CommandLine.java
@@ -8528,7 +8528,7 @@ public abstract static class ArgSpec {
// parser fields
private boolean required;
- private boolean optionIsNotRequired;
+ private boolean originallyRequired;
private final boolean interactive;
private final boolean echo;
private final String prompt;
@@ -8581,7 +8581,7 @@ private > ArgSpec(Builder builder) {
annotatedElement = builder.annotatedElement;
defaultValue = NO_DEFAULT_VALUE.equals(builder.defaultValue) ? null : builder.defaultValue;
required = builder.required;
- optionIsNotRequired = builder.optionIsNotRequired;
+ originallyRequired = builder.originallyRequired;
toString = builder.toString;
getter = builder.getter;
setter = builder.setter;
@@ -8638,11 +8638,11 @@ void applyInitialValue(Tracer tracer) {
}
}
- /** Returns whether this is a required option or positional parameter without a default value.
- * If this argument is part of a {@linkplain ArgGroup group}, this method returns whether this argument is required within the group (so it is not necessarily a required argument for the command).
- * @see Option#optionIsNotRequired() */
- public boolean optionIsNotRequired(){
- return optionIsNotRequired;
+ /** Returns the originally required option, regardless of whether the option is used in an exclusive group or not.
+ * @since 4.7.0
+ * @see Option#required() */
+ public boolean originallyRequired(){
+ return originallyRequired;
}
/** Returns whether this is a required option or positional parameter without a default value.
@@ -9196,7 +9196,7 @@ abstract static class Builder> {
private String[] description;
private String descriptionKey;
private boolean required;
- private boolean optionIsNotRequired;
+ private boolean originallyRequired;
private boolean interactive;
private boolean echo;
private String prompt;
@@ -9234,7 +9234,7 @@ abstract static class Builder> {
description = original.description;
descriptionKey = original.descriptionKey;
required = original.required;
- optionIsNotRequired = original.optionIsNotRequired;
+ originallyRequired = original.originallyRequired;
interactive = original.interactive;
echo = original.echo;
prompt = original.prompt;
@@ -10132,8 +10132,8 @@ public static class ArgGroupSpec implements IOrdered {
if (!arg.required()) {
modifiedArgs += sep + (arg.isOption() ? ((OptionSpec) arg).longestName() : (arg.paramLabel() + "[" + ((PositionalParamSpec) arg).index() + "]"));
sep = ",";
- //Keep initial required as optionIsNotRequired for Issue#1380 https://github.com/remkop/picocli/issues/1380
- arg.optionIsNotRequired = true;
+ //Keep initial required as originallyRequired for Issue#1380 https://github.com/remkop/picocli/issues/1380
+ arg.originallyRequired = true;
arg.required = true;
}
}
@@ -16128,7 +16128,7 @@ public Text[][] render(OptionSpec option, IParamLabelRenderer paramLabelRenderer
String longOption = join(names, shortOptionCount, names.length - shortOptionCount, ", ");
Text longOptionText = createLongOptionText(option, paramLabelRenderer, scheme, longOption);
- String requiredOption = !option.optionIsNotRequired() && option.required() ? requiredMarker : "";
+ String requiredOption = !option.originallyRequired() && option.required() ? requiredMarker : "";
return renderDescriptionLines(option, scheme, requiredOption, shortOption, longOptionText);
}