data: demo-pmd 每文件审核报告入库(26 份,绝对路径规范化)

This commit is contained in:
范智鹏
2026-08-26 22:29:47 +08:00
parent 3c390cfa90
commit 3a66aa538f
26 changed files with 4943 additions and 0 deletions
@@ -0,0 +1,1078 @@
# 代码审查报告
**文件:** `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() 以准确表达语义。