Files

1079 lines
53 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 代码审查报告
**文件:** `data\demo-pmd\src\com\demo\bpcs\BestPracticesCodeStyle.java`
**语言:** java
**耗时:** 290.6s
**分析工具:** pmd
---
总计: 524 | 错误: 78 | 警告: 416 | 建议: 30
静态分析 · 517 个问题
- 🔴 `pmd:SystemPrintln` L51
Usage of System.out/err
- 🔴 `pmd:ImplicitFunctionalInterface` L109
Annotate this interface with @FunctionalInterface or with @SuppressWarnings("PMD.ImplicitFunctionalInterface") to clarify your intent.
- 🔴 `pmd:AvoidFileStream` L130
Avoid instantiating FileInputStream, FileOutputStream, FileReader, or FileWriter
- 🔴 `pmd:SystemPrintln` L158
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L159
Usage of System.out/err
- 🔴 `pmd:AvoidFileStream` L166
Avoid instantiating FileInputStream, FileOutputStream, FileReader, or FileWriter
- 🔴 `pmd:AvoidFileStream` L176
Avoid instantiating FileInputStream, FileOutputStream, FileReader, or FileWriter
- 🔴 `pmd:AvoidThrowingRawExceptionTypes` L240
Avoid throwing raw exception type RuntimeException.
- 🔴 `pmd:AvoidReassigningParameters` L259
Avoid reassigning parameters such as 'x'
- 🔴 `pmd:AvoidThrowingRawExceptionTypes` L359
Avoid throwing raw exception type RuntimeException.
- 🔴 `pmd:SystemPrintln` L384
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L392
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L401
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L410
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L448
Usage of System.out/err
- 🔴 `pmd:FieldNamingConventions` L458
The constant name 'log' doesn't match '[A-Z][A-Z_0-9]*'
- 🔴 `pmd:GuardLogStatement` L461
Logger calls should be surrounded by log level guards.
- 🔴 `pmd:SystemPrintln` L480
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L508
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L523
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L539
Usage of System.out/err
- 🔴 `pmd:ClassNamingConventions` L554
The class name 'Bad$Name' doesn't match '[A-Z][a-zA-Z0-9]*'
- 🔴 `pmd:ClassNamingConventions` L582
The class name 'badClassName' doesn't match '[A-Z][a-zA-Z0-9]*'
- 🔴 `pmd:SystemPrintln` L607
Usage of System.out/err
- 🔴 `pmd:EmptyMethodInAbstractClassShouldBeAbstract` L621
An empty method in an abstract class should be abstract instead
- 🔴 `pmd:FieldNamingConventions` L638
The field name 'bad_name' doesn't match '[a-z][a-zA-Z0-9]*'
- 🔴 `pmd:FinalParameterInAbstractMethod` L643
Final parameter in abstract method
- 🔴 `pmd:FormalParameterNamingConventions` L658
The method parameter name 'bad_param' doesn't match '[a-z][a-zA-Z0-9]*'
- 🔴 `pmd:SystemPrintln` L668
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L670
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L693
Usage of System.out/err
- 🔴 `pmd:LocalVariableNamingConventions` L700
The local variable name 'bad_var' doesn't match '[a-z][a-zA-Z0-9]*'
- 🔴 `pmd:SystemPrintln` L701
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L708
Usage of System.out/err
- 🔴 `pmd:MethodNamingConventions` L714
The instance method name 'BadMethod' doesn't match '[a-z][a-zA-Z0-9]*'
- 🔴 `pmd:ModifierOrder` L720
Missorted modifiers `static public`.
- 🔴 `pmd:ModifierOrder` L722
Missorted modifiers `final private`.
- 🔴 `pmd:SystemPrintln` L739
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L740
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L741
Usage of System.out/err
- 🔴 `pmd:StringInstantiation` L796
Avoid instantiating String objects; this is usually unnecessary.
- 🔴 `pmd:ImplicitFunctionalInterface` L805
Annotate this interface with @FunctionalInterface or with @SuppressWarnings("PMD.ImplicitFunctionalInterface") to clarify your intent.
- 🔴 `pmd:SystemPrintln` L812
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L821
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L834
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L842
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L851
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L869
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L877
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L878
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L879
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L880
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L881
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L882
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L888
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L926
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L943
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L951
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L952
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L953
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L954
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L958
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L986
Usage of System.out/err
- 🔴 `pmd:AvoidUsingNativeCode` L1006
The use of native code is not recommended.
- 🔴 `pmd:SystemPrintln` L1025
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1026
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1027
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1028
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1029
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1030
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1031
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1032
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1033
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1034
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1038
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1044
Usage of System.out/err
- 🔴 `pmd:SystemPrintln` L1053
Usage of System.out/err
- 🟡 `pmd:TooManyStaticImports` L29
Too many static imports may lead to messy code
- 🟡 `pmd:AtLeastOneConstructor` L48
Each class should declare at least one constructor
- 🟡 `pmd:AbstractClassWithoutAbstractMethod` L48
This abstract class does not have any abstract methods
- 🟡 `pmd:PublicMemberInNonPublicType` L50
Public member 'start' declared in a non-public type
- 🟡 `pmd:CommentDefaultAccessModifier` L59
Missing commented default access modifier on constructor 'DataProcessor(String[])'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L59
Parameter 'input' is not assigned and could be declared final
- 🟡 `pmd:ArrayIsStoredDirectly` L60
The user-supplied array 'input' is stored directly.
- 🟡 `pmd:PublicMemberInNonPublicType` L63
Public member 'getItems' declared in a non-public type
- 🟡 `pmd:MethodReturnsInternalArray` L64
Returning 'items' may expose an internal array.
- 🟡 `pmd:AvoidMessageDigestField` L71
You shouldnt declare field of MessageDigest type, because unsynchronized access could cause problems
- 🟡 `pmd:UnusedPrivateField` L71
Avoid unused private fields such as 'digest'.
- 🟡 `pmd:CommentDefaultAccessModifier` L73
Missing commented default access modifier on constructor 'Hasher()'
- 🟡 `pmd:AvoidCatchingGenericException` L76
Avoid catching Exception in try-catch block
- 🟡 `pmd:AtLeastOneConstructor` L83
Each class should declare at least one constructor
- 🟡 `pmd:AvoidStringBufferField` L84
StringBuffers can grow quite a lot, and so may become a source of memory leak (if the owning class has a long life time).
- 🟡 `pmd:ImmutableField` L84
Field 'sb' may be declared final
- 🟡 `pmd:CommentDefaultAccessModifier` L86
Missing commented default access modifier on method 'add(String)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L86
Parameter 's' is not assigned and could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L92
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L93
Missing commented default access modifier on field 'host'
- 🟡 `pmd:ConstantsInInterface` L98
Using constants in interfaces is a bad practice.
- 🟡 `pmd:AtLeastOneConstructor` L102
Each class should declare at least one constructor
- 🟡 `pmd:UseConcurrentHashMap` L103
If you run in Java5 or newer and have concurrent access, you should use the ConcurrentHashMap implementation
- 🟡 `pmd:CommentDefaultAccessModifier` L103
Missing commented default access modifier on field 'map'
- 🟡 `pmd:UseDiamondOperator` L103
Explicit type arguments can be replaced by a diamond: `new HashMap<>()`
- 🟡 `pmd:DoubleBraceInitialization` L103
Double-brace initialization should be avoided
- 🟡 `pmd:AtLeastOneConstructor` L114
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L115
Missing commented default access modifier on method 'outer()'
- 🟡 `pmd:AvoidLiteralsInIfCondition` L119
Avoid using literals such as 2 in if statements
- 🟡 `pmd:AtLeastOneConstructor` L128
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L129
Missing commented default access modifier on method 'read()'
- 🟡 `pmd:CloseResource` L130
Ensure that resources like this FileInputStream object are closed after use
- 🟡 `pmd:LocalVariableCouldBeFinal` L130
Local variable 'fis' could be declared final
- 🟡 `pmd:CloseResource` L131
Ensure that resources like this InputStreamReader object are closed after use
- 🟡 `pmd:LocalVariableCouldBeFinal` L131
Local variable 'isr' could be declared final
- 🟡 `pmd:RelianceOnDefaultCharset` L131
Specify a character set instead of relying on the default charset
- 🟡 `pmd:CloseResource` L132
Ensure that resources like this BufferedReader object are closed after use
- 🟡 `pmd:LocalVariableCouldBeFinal` L132
Local variable 'br' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L138
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L139
Missing commented default access modifier on method 'list()'
- 🟡 `pmd:LooseCoupling` L140
Avoid using implementation types like 'Hashtable'; use the interface instead
- 🟡 `pmd:ReplaceHashtableWithMap` L140
Consider replacing this Hashtable with the newer java.util.Map
- 🟡 `pmd:LocalVariableCouldBeFinal` L140
Local variable 'h' could be declared final
- 🟡 `pmd:ReplaceHashtableWithMap` L140
Consider replacing this Hashtable with the newer java.util.Map
- 🟡 `pmd:UnusedLocalVariable` L141
Avoid unused local variables such as 'e'.
- 🟡 `pmd:AtLeastOneConstructor` L146
Each class should declare at least one constructor
- 🟡 `pmd:LooseCoupling` L147
Avoid using implementation types like 'Hashtable'; use the interface instead
- 🟡 `pmd:ReplaceHashtableWithMap` L147
Consider replacing this Hashtable with the newer java.util.Map
- 🟡 `pmd:CommentDefaultAccessModifier` L147
Missing commented default access modifier on field 'table'
- 🟡 `pmd:ReplaceHashtableWithMap` L147
Consider replacing this Hashtable with the newer java.util.Map
- 🟡 `pmd:AtLeastOneConstructor` L151
Each class should declare at least one constructor
- 🟡 `pmd:LooseCoupling` L152
Avoid using implementation types like 'Vector'; use the interface instead
- 🟡 `pmd:ReplaceVectorWithList` L152
Consider replacing this Vector with the newer java.util.List
- 🟡 `pmd:CommentDefaultAccessModifier` L152
Missing commented default access modifier on field 'v'
- 🟡 `pmd:ReplaceVectorWithList` L152
Consider replacing this Vector with the newer java.util.List
- 🟡 `pmd:UseArrayListInsteadOfVector` L152
Use ArrayList instead of Vector
- 🟡 `pmd:AtLeastOneConstructor` L156
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L157
Missing commented default access modifier on method 'log()'
- 🟡 `pmd:AtLeastOneConstructor` L164
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L165
Missing commented default access modifier on method 'doIt()'
- 🟡 `pmd:CloseResource` L166
Ensure that resources like this FileInputStream object are closed after use
- 🟡 `pmd:LocalVariableCouldBeFinal` L166
Local variable 'fis' could be declared final
- 🟡 `pmd:CloseResource` L167
Ensure that resources like this InputStreamReader object are closed after use
- 🟡 `pmd:LocalVariableCouldBeFinal` L167
Local variable 'isr' could be declared final
- 🟡 `pmd:UseStandardCharsets` L167
Please use StandardCharsets constants
- 🟡 `pmd:CloseResource` L168
Ensure that resources like this BufferedReader object are closed after use
- 🟡 `pmd:LocalVariableCouldBeFinal` L168
Local variable 'br' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L174
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L175
Missing commented default access modifier on method 'read()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L176
Local variable 'br' could be declared final
- 🟡 `pmd:RelianceOnDefaultCharset` L176
Specify a character set instead of relying on the default charset
- 🟡 `pmd:UseTryWithResources` L177
Consider using a try-with-resources statement instead of explicitly closing the resource
- 🟡 `pmd:AtLeastOneConstructor` L186
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L187
Missing commented default access modifier on method 'accept(String[])'
- 🟡 `pmd:AtLeastOneConstructor` L193
Each class should declare at least one constructor
- 🟡 `pmd:RedundantFieldInitializer` L194
Avoid using redundant field initializer for 'i'
- 🟡 `pmd:CommentDefaultAccessModifier` L194
Missing commented default access modifier on field 'i'
- 🟡 `pmd:CommentDefaultAccessModifier` L195
Missing commented default access modifier on method 'loop()'
- 🟡 `pmd:AssignmentInOperand` L197
Avoid assignment to i in operand
- 🟡 `pmd:AvoidLiteralsInIfCondition` L197
Avoid using literals such as 5 in if statements
- 🟡 `pmd:AtLeastOneConstructor` L205
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L206
Missing commented default access modifier on field 'a'
- 🟡 `pmd:AtLeastOneConstructor` L210
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L211
Missing commented default access modifier on method 'call()'
- 🟡 `pmd:UnnecessaryVarargsArrayCreation` L212
Unnecessary explicit array creation for varargs method call
- 🟡 `pmd:CommentDefaultAccessModifier` L214
Missing commented default access modifier on method 'accept2(String[])'
- 🟡 `pmd:AtLeastOneConstructor` L220
Each class should declare at least one constructor
- 🟡 `pmd:PublicMemberInNonPublicType` L221
Public member 'm' declared in a non-public type
- 🟡 `pmd:AtLeastOneConstructor` L226
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L227
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:UnusedLocalVariable` L229
Avoid unused local variables such as 'x'.
- 🟡 `pmd:AvoidPrintStackTrace` L231
Avoid printStackTrace(); use a logger call instead.
- 🟡 `pmd:AtLeastOneConstructor` L237
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L238
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:ExceptionAsFlowControl` L241
Exception thrown at line 240 is caught in this block.
- 🟡 `pmd:AvoidCatchingGenericException` L241
Avoid catching RuntimeException in try-catch block
- 🟡 `pmd:UnusedAssignment` L241
The initial value of exception parameter 'e' is never used (overwritten on line 242)
- 🟡 `pmd:AvoidReassigningCatchVariables` L242
Avoid reassigning caught exception 'e'
- 🟡 `pmd:UnusedAssignment` L242
The value assigned to variable 'e' is never used
- 🟡 `pmd:AtLeastOneConstructor` L248
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L249
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:AvoidReassigningLoopVariables` L251
Avoid reassigning the loop control variable 'i'
- 🟡 `pmd:AtLeastOneConstructor` L257
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L258
Missing commented default access modifier on method 'bad(int)'
- 🟡 `pmd:UnusedAssignment` L258
The initial value of parameter 'x' is never used (overwritten on line 259)
- 🟡 `pmd:UnusedAssignment` L259
The value assigned to variable 'x' is never used
- 🟡 `pmd:AtLeastOneConstructor` L264
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L265
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:CloseResource` L267
Ensure that resources like this Statement object are closed after use
- 🟡 `pmd:LocalVariableCouldBeFinal` L267
Local variable 'st' could be declared final
- 🟡 `pmd:CloseResource` L268
Ensure that resources like this ResultSet object are closed after use
- 🟡 `pmd:LocalVariableCouldBeFinal` L268
Local variable 'rs' could be declared final
- 🟡 `pmd:CheckResultSet` L269
Always check the return of one of the navigation method (next,previous,first,last) of a ResultSet.
- 🟡 `pmd:EmptyCatchBlock` L270
Avoid empty catch blocks
- 🟡 `pmd:AvoidCatchingGenericException` L270
Avoid catching Exception in try-catch block
- 🟡 `pmd:AtLeastOneConstructor` L276
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L277
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L278
Local variable 'c' could be declared final
- 🟡 `pmd:EmptyControlStatement` L279
Empty if statement
- 🟡 `pmd:EnumComparison` L279
Enums should be compared using ==
- 🟡 `pmd:CommentDefaultAccessModifier` L282
Missing commented default access modifier on nested enum 'Color'
- 🟡 `pmd:AtLeastOneConstructor` L286
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L287
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L288
Local variable 'c' could be declared final
- 🟡 `pmd:ExhaustiveSwitchHasDefault` L289
The switch block is exhaustive even without the default case
- 🟡 `pmd:CommentDefaultAccessModifier` L295
Missing commented default access modifier on nested enum 'Color'
- 🟡 `pmd:AtLeastOneConstructor` L299
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L300
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:EmptyControlStatement` L301
Empty for statement
- 🟡 `pmd:ForLoopVariableCount` L301
Too many control variables in the for statement
- 🟡 `pmd:UnusedAssignment` L301
The updated value of variable 'j' is never used
- 🟡 `pmd:AtLeastOneConstructor` L307
Each class should declare at least one constructor
- 🟡 `pmd:AvoidFieldNameMatchingMethodName` L308
Field LOG has the same name as a method
- 🟡 `pmd:CommentDefaultAccessModifier` L309
Missing commented default access modifier on method 'log(String)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L309
Parameter 'msg' is not assigned and could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L315
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L316
Missing commented default access modifier on method 'bad(String)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L316
Parameter 's' is not assigned and could be declared final
- 🟡 `pmd:EmptyControlStatement` L317
Empty if statement
- 🟡 `pmd:LiteralsFirstInComparisons` L317
Position literals first in String comparisons
- 🟡 `pmd:AtLeastOneConstructor` L323
Each class should declare at least one constructor
- 🟡 `pmd:MissingOverride` L324
The method 'toString()' is missing an @Override annotation.
- 🟡 `pmd:OverrideBothEqualsAndHashcode` L327
Ensure you override both equals() and hashCode()
- 🟡 `pmd:MissingOverride` L327
The method 'equals(Object)' is missing an @Override annotation.
- 🟡 `pmd:AtLeastOneConstructor` L331
Each class should declare at least one constructor
- 🟡 `pmd:MissingOverride` L332
The method 'toString()' is missing an @Override annotation.
- 🟡 `pmd:AtLeastOneConstructor` L336
Each class should declare at least one constructor
- 🟡 `pmd:OverrideBothEqualsAndHashcode` L337
Ensure you override both equals() and hashCode()
- 🟡 `pmd:MissingOverride` L337
The method 'equals(Object)' is missing an @Override annotation.
- 🟡 `pmd:AtLeastOneConstructor` L343
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L344
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L345
Local variable 'c' could be declared final
- 🟡 `pmd:TooFewBranchesForSwitch` L346
A switch with less than three branches is inefficient, use a if statement instead.
- 🟡 `pmd:NonExhaustiveSwitch` L346
Switch statements or expressions should be exhaustive, add a default case (or missing enum branches)
- 🟡 `pmd:CommentDefaultAccessModifier` L350
Missing commented default access modifier on nested enum 'Color2'
- 🟡 `pmd:AtLeastOneConstructor` L354
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L355
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:ExceptionAsFlowControl` L358
Exception thrown at line 357 is caught in this block.
- 🟡 `pmd:PreserveStackTrace` L359
Thrown exception does not preserve the stack trace of exception 'e' on all code paths
- 🟡 `pmd:AtLeastOneConstructor` L365
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L366
Missing commented default access modifier on field 'i'
- 🟡 `pmd:PrimitiveWrapperInstantiation` L366
Do not use `new Integer(...)`, prefer `Integer.valueOf(...)`
- 🟡 `pmd:UnnecessaryBoxing` L366
Unnecessary explicit boxing
- 🟡 `pmd:AtLeastOneConstructor` L370
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L371
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L372
Local variable 'x' could be declared final
- 🟡 `pmd:TooFewBranchesForSwitch` L373
A switch with less than three branches is inefficient, use a if statement instead.
- 🟡 `pmd:DefaultLabelNotLastInSwitch` L374
The default label should be the last label in a switch statement or expression
- 🟡 `pmd:AtLeastOneConstructor` L381
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L382
Missing commented default access modifier on method 'bad(List<String>)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L382
Parameter 'l' is not assigned and could be declared final
- 🟡 `pmd:ForLoopCanBeForeach` L383
This for loop can be replaced by a foreach loop
- 🟡 `pmd:AtLeastOneConstructor` L390
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L391
Missing commented default access modifier on method 'bad(int)'
- 🟡 `pmd:AtLeastOneConstructor` L397
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L398
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:UnusedLabel` L399
Avoid unused labels such as 'label'.
- 🟡 `pmd:AtLeastOneConstructor` L407
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L408
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:UnusedLocalVariable` L409
Avoid unused local variables such as 'x'.
- 🟡 `pmd:AtLeastOneConstructor` L415
Each class should declare at least one constructor
- 🟡 `pmd:UnusedPrivateField` L416
Avoid unused private fields such as 'secret'.
- 🟡 `pmd:PublicMemberInNonPublicType` L417
Public member 'm' declared in a non-public type
- 🟡 `pmd:AtLeastOneConstructor` L422
Each class should declare at least one constructor
- 🟡 `pmd:UnusedPrivateMethod` L423
Avoid unused private methods such as 'helper()'.
- 🟡 `pmd:PublicMemberInNonPublicType` L425
Public member 'm' declared in a non-public type
- 🟡 `pmd:AtLeastOneConstructor` L430
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L431
Missing commented default access modifier on method 'bad(List<String>)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L431
Parameter 'l' is not assigned and could be declared final
- 🟡 `pmd:EmptyControlStatement` L432
Empty if statement
- 🟡 `pmd:UseCollectionIsEmpty` L432
Substitute calls to size() == 0 (or size() != 0, size() > 0, size() < 1) with calls to isEmpty()
- 🟡 `pmd:AtLeastOneConstructor` L438
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L439
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:LooseCoupling` L440
Avoid using implementation types like 'HashSet'; use the interface instead
- 🟡 `pmd:UnusedLocalVariable` L440
Avoid unused local variables such as 'set'.
- 🟡 `pmd:UseEnumCollections` L440
This collection could be an EnumSet
- 🟡 `pmd:LooseCoupling` L441
Avoid using implementation types like 'HashMap'; use the interface instead
- 🟡 `pmd:UnusedLocalVariable` L441
Avoid unused local variables such as 'map'.
- 🟡 `pmd:UseEnumCollections` L441
This collection could be an EnumMap
- 🟡 `pmd:CommentDefaultAccessModifier` L443
Missing commented default access modifier on nested enum 'Color'
- 🟡 `pmd:AtLeastOneConstructor` L457
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L460
Missing commented default access modifier on method 'debug(String, String)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L460
Parameter 'param1' is not assigned and could be declared final
- 🟡 `pmd:MethodArgumentCouldBeFinal` L460
Parameter 'param2' is not assigned and could be declared final
- 🟡 `pmd:LabeledStatement` L471
Avoid using labeled statements such as 'lbl2'.
- 🟡 `pmd:AvoidLiteralsInIfCondition` L472
Avoid using literals such as 3 in if statements
- 🟡 `pmd:UnusedLabel` L476
Avoid unused labels such as 'lbl3'.
- 🟡 `pmd:AvoidLiteralsInIfCondition` L477
Avoid using literals such as 4 in if statements
- 🟡 `pmd:AtLeastOneConstructor` L487
Each class should declare at least one constructor
- 🟡 `pmd:ReplaceEnumerationWithIterator` L487
Consider replacing this Enumeration with the newer java.util.Iterator
- 🟡 `pmd:RedundantFieldInitializer` L488
Avoid using redundant field initializer for 'i'
- 🟡 `pmd:MissingOverride` L490
The method 'hasMoreElements()' is missing an @Override annotation.
- 🟡 `pmd:MissingOverride` L494
The method 'nextElement()' is missing an @Override annotation.
- 🟡 `pmd:AssignmentInOperand` L495
Avoid assignment to i in operand
- 🟡 `pmd:AtLeastOneConstructor` L500
Each class should declare at least one constructor
- 🟡 `pmd:AtLeastOneConstructor` L506
Each class should declare at least one constructor
- 🟡 `pmd:UnusedPrivateMethod` L507
Avoid unused private methods such as 'bar(String)'.
- 🟡 `pmd:UnusedFormalParameter` L507
Avoid unused method parameters such as 'howdy'.
- 🟡 `pmd:AtLeastOneConstructor` L513
Each class should declare at least one constructor
- 🟡 `pmd:NonStaticInitializer` L514
Non-static initializers are confusing
- 🟡 `pmd:EmptyControlStatement` L515
Empty do..while statement
- 🟡 `pmd:WhileLoopWithLiteralBoolean` L517
The loop can be simplified.
- 🟡 `pmd:UnnecessaryWarningSuppression` L531
Unnecessary PMD suppression comment
- 🟡 `pmd:AtLeastOneConstructor` L532
Each class should declare at least one constructor
- 🟡 `pmd:AtLeastOneConstructor` L548
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L549
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:AvoidDollarSigns` L554
Avoid using dollar signs in variable/method/class/interface names
- 🟡 `pmd:AtLeastOneConstructor` L554
Each class should declare at least one constructor
- 🟡 `pmd:AtLeastOneConstructor` L558
Each class should declare at least one constructor
- 🟡 `pmd:AvoidProtectedFieldInFinalClass` L559
Avoid protected fields in a final class. Change to private or package access.
- 🟡 `pmd:AtLeastOneConstructor` L563
Each class should declare at least one constructor
- 🟡 `pmd:AvoidProtectedMethodInFinalClassNotExtending` L564
Avoid protected methods in a final class that doesnt extend anything other than Object. Change to private or package access.
- 🟡 `pmd:AtLeastOneConstructor` L569
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L570
Missing commented default access modifier on method 'jni()'
- 🟡 `pmd:AtLeastOneConstructor` L574
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L575
Missing commented default access modifier on field 'flag'
- 🟡 `pmd:CommentDefaultAccessModifier` L576
Missing commented default access modifier on method 'getFlag()'
- 🟡 `pmd:AtLeastOneConstructor` L582
Each class should declare at least one constructor
- 🟡 `pmd:AtLeastOneConstructor` L586
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L587
Missing commented default access modifier on field 'x'
- 🟡 `pmd:CommentDefaultAccessModifier` L588
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:AtLeastOneConstructor` L593
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L594
Missing commented default access modifier on method 'bad(boolean)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L594
Parameter 'a' is not assigned and could be declared final
- 🟡 `pmd:ConfusingTernary` L595
Avoid if (x != y) ..; else ..;
- 🟡 `pmd:SimplifyBooleanReturns` L595
This if statement can be replaced by `return {condition};`
- 🟡 `pmd:OnlyOneReturn` L596
A method should have only one exit point, and that should be the last statement in the method
- 🟡 `pmd:AtLeastOneConstructor` L604
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L605
Missing commented default access modifier on method 'bad(boolean)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L605
Parameter 'a' is not assigned and could be declared final
- 🟡 `pmd:ControlStatementBraces` L607
This statement should have braces
- 🟡 `pmd:AtLeastOneConstructor` L612
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L613
Missing commented default access modifier on method 'bad(int)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L613
Parameter 'x' is not assigned and could be declared final
- 🟡 `pmd:EmptyControlStatement` L614
Empty if statement
- 🟡 `pmd:AtLeastOneConstructor` L620
Each class should declare at least one constructor
- 🟡 `pmd:AbstractClassWithoutAbstractMethod` L620
This abstract class does not have any abstract methods
- 🟡 `pmd:CommentDefaultAccessModifier` L621
Missing commented default access modifier on method 'empty()'
- 🟡 `pmd:AtLeastOneConstructor` L626
Each class should declare at least one constructor
- 🟡 `pmd:AtLeastOneConstructor` L630
Each class should declare at least one constructor
- 🟡 `pmd:UnusedPrivateField` L631
Avoid unused private fields such as 'late'.
- 🟡 `pmd:CommentDefaultAccessModifier` L632
Missing commented default access modifier on method 'method()'
- 🟡 `pmd:AtLeastOneConstructor` L637
Each class should declare at least one constructor
- 🟡 `pmd:UnusedPrivateField` L638
Avoid unused private fields such as 'bad_name'.
- 🟡 `pmd:AtLeastOneConstructor` L642
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L643
Missing commented default access modifier on method 'doIt(int)'
- 🟡 `pmd:AtLeastOneConstructor` L647
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L648
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:ForLoopShouldBeWhileLoop` L650
This for loop could be simplified to a while loop
- 🟡 `pmd:AtLeastOneConstructor` L657
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L658
Missing commented default access modifier on method 'bad(int)'
- 🟡 `pmd:AtLeastOneConstructor` L663
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L664
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:UnusedLocalVariable` L666
Avoid unused local variables such as 'x'.
- 🟡 `pmd:IdenticalCatchBranches` L669
'catch' branch identical to 'ArithmeticException' branch
- 🟡 `pmd:AvoidCatchingGenericException` L669
Avoid catching Exception in try-catch block
- 🟡 `pmd:AtLeastOneConstructor` L676
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L677
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:UnusedLocalVariable` L678
Avoid unused local variables such as 'f'.
- 🟡 `pmd:LambdaCanBeMethodReference` L678
Lambda expression could be written as a method reference: `String::length`
- 🟡 `pmd:AtLeastOneConstructor` L683
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L684
Missing commented default access modifier on method 'isReady(String)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L684
Parameter 's' is not assigned and could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L690
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L691
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L692
Local variable 'x' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L698
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L699
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L700
Local variable 'bad_var' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L706
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L707
Missing commented default access modifier on method 'bad(int)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L707
Parameter 'x' is not assigned and could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L713
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L714
Missing commented default access modifier on method 'BadMethod()'
- 🟡 `pmd:AtLeastOneConstructor` L719
Each class should declare at least one constructor
- 🟡 `pmd:PublicMemberInNonPublicType` L720
Public member 'm' declared in a non-public type
- 🟡 `pmd:UnusedPrivateField` L722
Avoid unused private fields such as 'x'.
- 🟡 `pmd:FieldDeclarationsShouldBeAtStartOfClass` L722
Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.
- 🟡 `pmd:FinalFieldCouldBeStatic` L722
The final field x could be made static
- 🟡 `pmd:AtLeastOneConstructor` L726
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L727
Missing commented default access modifier on method 'bad(int)'
- 🟡 `pmd:MethodArgumentCouldBeFinal` L727
Parameter 'x' is not assigned and could be declared final
- 🟡 `pmd:OnlyOneReturn` L729
A method should have only one exit point, and that should be the last statement in the method
- 🟡 `pmd:AtLeastOneConstructor` L736
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L737
Missing commented default access modifier on method 'bad()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L738
Local variable 'x' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L746
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L747
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:AtLeastOneConstructor` L753
Each class should declare at least one constructor
- 🟡 `pmd:AtLeastOneConstructor` L757
Each class should declare at least one constructor
- 🟡 `pmd:UnnecessaryAnnotationValueElement` L758
Avoid the use of value in annotations when its the only element
- 🟡 `pmd:CommentDefaultAccessModifier` L759
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:AtLeastOneConstructor` L764
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L765
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:UnnecessaryBlock` L766
This block isn't necessary.
- 🟡 `pmd:UnusedLocalVariable` L767
Avoid unused local variables such as 'x'.
- 🟡 `pmd:AtLeastOneConstructor` L773
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L774
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:UnusedLocalVariable` L775
Avoid unused local variables such as 'i'.
- 🟡 `pmd:PrimitiveWrapperInstantiation` L775
Do not use `new Integer(...)`, prefer `Integer.valueOf(...)`
- 🟡 `pmd:UnnecessaryBoxing` L775
Unnecessary explicit boxing
- 🟡 `pmd:AtLeastOneConstructor` L780
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L781
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L782
Local variable 'o' could be declared final
- 🟡 `pmd:UnusedLocalVariable` L783
Avoid unused local variables such as 's'.
- 🟡 `pmd:UnnecessaryConstructor` L789
Avoid unnecessary constructors - the compiler will generate these for you
- 🟡 `pmd:CommentDefaultAccessModifier` L789
Missing commented default access modifier on constructor 'UnNeedCons()'
- 🟡 `pmd:AtLeastOneConstructor` L794
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L795
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:UnusedLocalVariable` L796
Avoid unused local variables such as 's'.
- 🟡 `pmd:UnnecessaryModifier` L806
Unnecessary modifiers 'public abstract' on method 'm': the method is declared in an interface type
- 🟡 `pmd:AtLeastOneConstructor` L810
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L811
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:UnnecessaryReturn` L813
Unnecessary return statement
- 🟡 `pmd:AtLeastOneConstructor` L818
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L819
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L820
Local variable 'x' could be declared final
- 🟡 `pmd:UnnecessarySemicolon` L820
Unnecessary semicolon
- 🟡 `pmd:AtLeastOneConstructor` L826
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L827
Missing commented default access modifier on field 'l'
- 🟡 `pmd:UseDiamondOperator` L827
Explicit type arguments can be replaced by a diamond: `new ArrayList<>()`
- 🟡 `pmd:AtLeastOneConstructor` L831
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L832
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L833
Local variable 'x' could be declared final
- 🟡 `pmd:UseExplicitTypes` L833
Use Explicit Types
- 🟡 `pmd:AtLeastOneConstructor` L839
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L840
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L841
Local variable 'x' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L847
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L848
Missing commented default access modifier on field 'x'
- 🟡 `pmd:CommentDefaultAccessModifier` L849
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L850
Local variable 'y' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L856
Each class should declare at least one constructor
- 🟡 `pmd:UseShortArrayInitializer` L857
Array initialization can be written shorter
- 🟡 `pmd:CommentDefaultAccessModifier` L857
Missing commented default access modifier on field 'a'
- 🟡 `pmd:AtLeastOneConstructor` L861
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L862
Missing commented default access modifier on field 'x'
- 🟡 `pmd:UseUnderscoresInNumericLiterals` L862
Number 1000000 should separate every third digit with an underscore
- 🟡 `pmd:AtLeastOneConstructor` L866
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L867
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L868
Local variable 'len' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L874
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L875
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:LocalVariableCouldBeFinal` L876
Local variable 'x' could be declared final
- 🟡 `pmd:UnnecessaryConstructor` L898
Avoid unnecessary constructors - the compiler will generate these for you
- 🟡 `pmd:CommentDefaultAccessModifier` L898
Missing commented default access modifier on constructor 'ParentFix()'
- 🟡 `pmd:UnnecessaryConstructor` L902
Avoid unnecessary constructors - the compiler will generate these for you
- 🟡 `pmd:CommentDefaultAccessModifier` L902
Missing commented default access modifier on constructor 'ChildFix()'
- 🟡 `pmd:AtLeastOneConstructor` L908
Each class should declare at least one constructor
- 🟡 `pmd:PublicMemberInNonPublicType` L909
Public member 'getLength' declared in a non-public type
- 🟡 `pmd:MethodArgumentCouldBeFinal` L909
Parameter 'strings' is not assigned and could be declared final
- 🟡 `pmd:PrematureDeclaration` L910
Declaration of 'length' can be moved closer to its usages
- 🟡 `pmd:OnlyOneReturn` L912
A method should have only one exit point, and that should be the last statement in the method
- 🟡 `pmd:LocalVariableCouldBeFinal` L914
Local variable 'str' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L922
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L923
Missing commented default access modifier on method 'm()'
- 🟡 `pmd:UnusedAssignment` L924
The initializer for variable 'o' is never used (overwritten on line 925)
- 🟡 `pmd:UnnecessaryCast` L925
Unnecessary cast (Object)
- 🟡 `pmd:AtLeastOneConstructor` L935
Each class should declare at least one constructor
- 🟡 `pmd:AtLeastOneConstructor` L939
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L940
Missing commented default access modifier on field 'otherFoo'
- 🟡 `pmd:UselessQualifiedThis` L940
Useless qualified this usage in the same class.
- 🟡 `pmd:CommentDefaultAccessModifier` L941
Missing commented default access modifier on method 'doSomething()'
- 🟡 `pmd:UselessQualifiedThis` L942
Useless qualified this usage in the same class.
- 🟡 `pmd:AtLeastOneConstructor` L948
Each class should declare at least one constructor
- 🟡 `pmd:PublicMemberInNonPublicType` L949
Public member 'lengthSum' declared in a non-public type
- 🟡 `pmd:MethodArgumentCouldBeFinal` L949
Parameter 'strings' is not assigned and could be declared final
- 🟡 `pmd:LocalVariableCouldBeFinal` L955
Local variable 'str' could be declared final
- 🟡 `pmd:AtLeastOneConstructor` L963
Each class should declare at least one constructor
- 🟡 `pmd:PublicMemberInNonPublicType` L964
Public member 'compute' declared in a non-public type
- 🟡 `pmd:AtLeastOneConstructor` L968
Each class should declare at least one constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L969
Missing commented default access modifier on field 'count'
- 🟡 `pmd:CommentDefaultAccessModifier` L971
Missing commented default access modifier on method 'isEnabled()'
- 🟡 `pmd:CommentDefaultAccessModifier` L975
Missing commented default access modifier on method 'getCount()'
- 🟡 `pmd:CommentDefaultAccessModifier` L979
Missing commented default access modifier on method 'computeSomething()'
- 🟡 `pmd:AtLeastOneConstructor` L995
Each class should declare at least one constructor
- 🟡 `pmd:LinguisticNaming` L996
Linguistics Antipattern - The field 'isReady' indicates linguistically it is a boolean, but it is 'int'
- 🟡 `pmd:CommentDefaultAccessModifier` L996
Missing commented default access modifier on field 'isReady'
- 🟡 `pmd:LinguisticNaming` L998
Linguistics Antipattern - The method 'isValid' indicates linguistically it returns a boolean, but it returns 'int'
- 🟡 `pmd:CommentDefaultAccessModifier` L998
Missing commented default access modifier on method 'isValid()'
- 🟡 `pmd:AtLeastOneConstructor` L1004
Each class should declare at least one constructor
- 🟡 `pmd:PublicMemberInNonPublicType` L1005
Public member 'invalid' declared in a non-public type
- 🟡 `pmd:UnnecessaryConstructor` L1012
Avoid unnecessary constructors - the compiler will generate these for you
- 🟡 `pmd:CommentDefaultAccessModifier` L1012
Missing commented default access modifier on constructor 'ParentRemain()'
- 🟡 `pmd:UnnecessaryConstructor` L1016
Avoid unnecessary constructors - the compiler will generate these for you
- 🟡 `pmd:CallSuperInConstructor` L1016
It is a good practice to call super() in a constructor
- 🟡 `pmd:CommentDefaultAccessModifier` L1016
Missing commented default access modifier on constructor 'ChildRemain()'
- 🟡 `pmd:AtLeastOneConstructor` L1022
Each class should declare at least one constructor
- 🟡 `pmd:PublicMemberInNonPublicType` L1023
Public member 'lengthSum' declared in a non-public type
- 🟡 `pmd:MethodArgumentCouldBeFinal` L1023
Parameter 'strings' is not assigned and could be declared final
- 🟡 `pmd:VariableDeclarationUsageDistance` L1024
Distance between declaration of 'length' and its first usage is 11, current threshold is 7
- 🟡 `pmd:LocalVariableCouldBeFinal` L1035
Local variable 'str' could be declared final
- 🔵 `pmd:UnnecessaryImport` L14
Unused import 'java.nio.charset.StandardCharsets'
- 🔵 `pmd:UnnecessaryImport` L17
Unused import 'java.util.Date'
- 🔵 `pmd:UnnecessaryImport` L22
Unused import 'java.util.Iterator'
- 🔵 `pmd:UnnecessaryImport` L30
Unused static import 'java.lang.Math.min'
- 🔵 `pmd:UnnecessaryImport` L31
Unused static import 'java.lang.Math.abs'
- 🔵 `pmd:UnnecessaryImport` L32
Unused static import 'java.lang.Math.sqrt'
- 🔵 `pmd:UnnecessaryImport` L33
Unused static import 'java.lang.Math.pow'
- 🔵 `pmd:UnnecessaryImport` L34
Unused static import 'java.lang.Math.floor'
- 🔵 `pmd:UnnecessaryImport` L35
Unused static import 'java.lang.Math.ceil'
- 🔵 `pmd:UnnecessaryImport` L36
Unused static import 'java.lang.Math.round'
- 🔵 `pmd:UnnecessaryImport` L37
Unused static import 'java.lang.Math.random'
- 🔵 `pmd:UnnecessaryImport` L38
Unused static import 'java.lang.Math.sin'
- 🔵 `pmd:UnnecessaryImport` L39
Unused static import 'java.lang.Math.cos'
- 🔵 `pmd:UnnecessaryImport` L40
Unused static import 'java.lang.Math.tan'
- 🔵 `pmd:UseVarargs` L59
Consider using varargs for methods or constructors which take an array the last parameter.
- 🔵 `pmd:UseVarargs` L187
Consider using varargs for methods or constructors which take an array the last parameter.
- 🔵 `pmd:OneDeclarationPerLine` L206
Use one line for each declaration, it enhances code readability.
- 🔵 `pmd:UnnecessaryFullyQualifiedName` L487
Unnecessary qualifier 'java.util': 'Enumeration' is already in scope because it is imported in this file
- 🔵 `pmd:BooleanGetMethodName` L576
A getX() method which returns a boolean or Boolean should be named isX()
- 🔵 `pmd:ExtendsObject` L626
No need to explicitly extend Object.
- 🔵 `pmd:TypeParameterNamingConventions` L753
The type parameter name 'bad' doesn't match '[A-Z]'
- 🔵 `pmd:UnnecessaryFullyQualifiedName` L796
Unnecessary qualifier 'java.lang': 'String' is already in scope because it is declared in java.lang
- 🔵 `pmd:UnnecessaryFullyQualifiedName` L796
Unnecessary qualifier 'java.lang': 'String' is already in scope because it is declared in java.lang
- 🔵 `pmd:UselessParentheses` L841
Useless parentheses around `1 + 2`.
- 🔵 `pmd:UseVarargs` L909
Consider using varargs for methods or constructors which take an array the last parameter.
- 🔵 `pmd:UnnecessaryInterfaceDeclaration` L935
Unnecessary interface declaration 'com.demo.bpcs.IBase', already provided by 'com.demo.bpcs.IExt'.
- 🔵 `pmd:UseVarargs` L949
Consider using varargs for methods or constructors which take an array the last parameter.
- 🔵 `pmd:UseVarargs` L1023
Consider using varargs for methods or constructors which take an array the last parameter.
AI 审查 · 7 条建议
- 🔴 [AI] [bug] `null-statement-dereference` L268
**RsDemo 中 Statement 为 null 却直接调用 executeQuery,必然触发 NullPointerException**
L267 将 Statement 变量 st 初始化为 nullL268 立即调用 st.executeQuery("select 1"),在没有任何赋值的情况下必然抛出 NullPointerException。静态分析只报告了资源未关闭和 ResultSet 返回值未检查,但未识别这个必然的空指针。
建议: 先通过 Connection.createStatement() 正确初始化 Statement,或在调用前判空并处理;也可直接使用 try-with-resources 管理 Statement 与 ResultSet。
- 🟡 [AI] [bug] `incomplete-object-initialization` L71
**Hasher 构造函数吞掉 MessageDigest 初始化异常,对象处于不一致状态**
Hasher 构造函数在 catch(Exception) 中仅记录日志,MessageDigest.getInstance("SHA-256") 失败时 digest 保持为 null。对象仍会被创建并返回给调用方,后续任何使用 digest 的操作都会触发 NullPointerException。应 fail-fast,让对象在构造失败时不可用。
建议: 将 digest 声明为 final,构造函数改为初始化失败时抛出 IllegalStateException(携带原始异常),或使用静态初始化块并在失败时抛出 ExceptionInInitializerError。
- 🟡 [AI] [security] `hardcoded-ip-address` L93
**NetConfig 中硬编码了 IP 地址,存在安全风险**
L93 的 host 字段硬编码了内网 IP "192.168.1.1"。硬编码 IP 会使代码难以在不同环境部署,且易被攻击者直接定位内网地址;若该值被提交到源码仓库,可能成为信息泄露点。静态分析结果未包含 AvoidUsingHardCodedIP 规则。
建议: 将主机地址改为从配置、环境变量或系统属性读取,并在启动时校验格式。
- 🟡 [AI] [bug] `resource-leak-on-construction-failure` L176
**链式构造缓冲读取器时,若中间构造失败将泄漏底层 FileInputStream**
L176 使用 new BufferedReader(new InputStreamReader(new FileInputStream("h.txt"))) 链式构造资源。若 InputStreamReader 或 BufferedReader 的构造函数抛出异常,已经成功打开的 FileInputStream 不会被关闭,因为此时还没有引用指向它。静态分析报告了 CloseResource 和 UseTryWithResources,但未指出链式构造本身是泄漏点。
建议: 使用 Files.newBufferedReader(Paths.get("h.txt"), StandardCharsets.UTF_8) 一步创建,或先用独立变量创建 FileInputStream 并放入 try-with-resources。
- 🟡 [AI] [bug] `infinite-iteration` L490
**EnumerationImpl 的 hasMoreElements() 永远返回 true,造成无限迭代**
EnumerationImpl 的 hasMoreElements() 恒为 true,而 nextElement() 每次使 i 自增并返回新字符串,导致枚举序列无限增长,最终 i 会溢出为负数。此外类声明使用了裸类型 java.util.Enumeration,未指定泛型参数,存在类型安全隐患。
建议: 为 hasMoreElements() 设置明确的终止条件(如 i < 10),并为 Enumeration 指定泛型参数(如 Enumeration<String>),同时让 nextElement() 返回 String 类型。
- 🔵 [AI] [style] `redundant-local-variable` L868
**InlineVar 中局部变量 len 仅使用一次,可直接内联**
L868 声明的 int len = 5 只在 L869 使用一次,没有复用价值,属于冗余局部变量,增加阅读负担。静态分析未对 InlineVar 报告 VariableCanBeInlined。
建议: 删除 len 变量,直接将字面量 5 传给 System.out.println。
- 🔵 [AI] [design] `misleading-getter` L975
**getCount() 返回 computeSomething() 而非 count 字段,getter 语义误导**
L975 的 getCount() 方法名为获取 count 字段的 getter,实际却返回 computeSomething() 的计算结果(42)。调用方会误以为获取的是对象状态 count,但实际拿到的与字段无关,容易引入逻辑错误。静态分析仅报告了 L996/L998 的 LinguisticNaming,未覆盖此方法。
建议: 让 getCount() 返回 count 字段,或将方法重命名为 computeCount()/getComputedValue() 以准确表达语义。