PMD 6.11.0
更新細節:
This is a minor release.
New and noteworthy:
Updated Apex Support.
The Apex language support has been bumped to version 45 (Spring '19). All new language features are now properly parsed and processed.
Many nodes now expose more informations, such as the operator for BooleanExpressions. This makes these operators consumable by XPath rules, e.g. //BooleanExpression[@Operator='&&'].
PL/SQL Grammar improvements:
In this release, many parser bugs in our PL/SQL support have been fixed. This adds e.g. support for table collection expressions (SELECT * FROM TABLE(expr)).
Support for parsing insert statements has been added.
More improvements are planned for the next release of PMD.
New Rules:
The new Java rule UnsynchronizedStaticFormatter (java-multithreading) detects unsynchronized usages of static java.text.Format instances. This rule is a more generic replacement of the rule UnsynchronizedStaticDateFormatter which focused just on DateFormat.
The new Java rule ForLoopVariableCount (java-bestpractices) checks for the number of control variables in a for-loop. Having a lot of control variables makes it harder to understand what the loop does. The maximum allowed number of variables is by default 1 and can be configured by a property.
The new Java rule AvoidReassigningLoopVariables (java-bestpractices) searches for loop variables that are reassigned. Changing the loop variables additionally to the loop itself can lead to hard-to-find bugs.
The new Java rule UseDiamondOperator (java-codestyle) looks for constructor calls with explicit type parameters. Since Java 1.7, these type parameters are not necessary anymore, as they can be inferred now.
Modified Rules:
The Java rule LocalVariableCouldBeFinal (java-codestyle) has a new property ignoreForEachDecl, which is by default disabled. The new property allows for ignoring non-final loop variables in a for-each statement.
Deprecated Rules:
The Java rule UnsynchronizedStaticDateFormatter has been deprecated and will be removed with PMD 7.0.0. The rule is replaced by the more general UnsynchronizedStaticFormatter.
Fixed Issues:
core
CPD results not consistent between runs.
Refactor metrics to be dealt with generically from pmd-core.
apex
Include the documentation category.
PMD parsing exception for Apex classes using 'inherited sharing' keyword.
AST node attribute @Image not usable / always null in XPath rule / Designer.
java
Default methods should not be considered abstract.
Private field is detected as public inside nested classes in interfaces.
java-bestpractices
OneDeclarationPerLine: False positive for loops.
New rule: AvoidReassigningLoopVariable.
New rule: ForLoopVariableCount.
java-codestyle
LocalVariableCouldBeFinal: allow excluding the variable in a for-each loop.
New Rule: UseDiamondOperator.
java-errorprone
ReturnFromFinallyBlock: False positive on lambda expression in finally block.
NPE in PMD 6.8.0 InvalidSlf4jMessageFormat.
java-multithreading
New rule: UnsynchronizedStaticFormatter.
plsql
Parse Exception when using '||' operator in where clause.
Parse Exception when using SELECT COUNT(*)
Parse Exception with OUTER/INNER Joins.
Parse Exception with IS NOT NULL.
ParseException when using TableCollectionExpression.
Update Set Clause should allow multiple columns.
Parse Exception when functions are used with LIKE.
Parse Exception with function calls in WHERE clause.
API Changes
StatisticalRule and the related helper classes and base rule classes are deprecated for removal in 7.0.0. This includes all of net.sourceforge.pmd.stat and net.sourceforge.pmd.lang.rule.stat, and also AbstractStatisticalJavaRule, AbstractStatisticalApexRule and the like. The methods Report#addMetric and metricAdded will also be removed.
setProperty is deprecated, because MultiValuePropertyDescriptor is deprecated as well.
External Contributions
[java] Fix for ReturnFromFinallyBlock false-positives.
[java] LocalVariableCouldBeFinal: allow excluding the variable in a for-each loop.
[java] OneDeclarationPerLine: Don't report multiple variables in a for statement.
[java] New rule: ForLoopVariableCount: check the number of control variables in a for loop.
[java] Upgrade to ASM7 for JDK 11 support.
[java] New rule: AvoidReassigningLoopVariables.
[java] This is the change regarding the usediamondoperator.
[doc] fixing dead links + tool to check for dead links automatically.
[java] InvalidSlf4jMessageFormatRule should not throw NPE for enums.
[core] Upgrading Google Gson from 2.5 to 2.8.5
[core] Upgrading System Rules dependency from 1.8.0 to 1.19.0
[plsql] updates should allow for multiple statements.
[core] Fixes 1196: inconsistencies of clones returned by different CPD executions for the same files.
版本下載:PMD 6.11.0
PMD 6.10.0
更新細節:
New Rules
The new Java rule UseUnderscoresInNumericLiterals (java-codestyle) verifies that numeric literals over a given length (4 chars by default, but configurable) are using underscores every 3 digits for readability. The rule only applies to Java 7+ codebases.
Modified Rules
The Java rule JUnitTestsShouldIncludeAssert (java-bestpractices) now also detects Soft Assertions.
The property exceptionfile of the rule AvoidDuplicateLiterals (java-errorprone) has been deprecated and will be removed with 7.0.0. Please use exceptionList instead.
Fixed Issues
All
[doc] Keep record of every currently deprecated API.
[test] Kotlin DSL to ease test writing.
[ci] Building docs for release fails.
[doc] Documentation Error with Regex Properties.
[doc] Missing escaping leads to XSS.
[core] XMLRenderer: ProcessingErrors from exceptions without a message missing.
[core] Analysis cache fails with wildcard classpath entries.
版本下載:PMD 6.10.0
PMD 6.9.0
更新細節:
New and noteworthy
Improved Golang CPD Support
Thanks to the work of ITBA students Matías Fraga, Tomi De Lucca and Lucas Soncini, Golang is now backed by a proper Antlr Grammar. This means CPD is now better at detecting duplicates, as comments are recognized as such and ignored.
New Rules
The new PLSQL rule CodeFormat (plsql-codestyle) verifies that PLSQL code is properly formatted. It checks e.g. for correct indentation in select statements and verifies that each parameter is defined on a separate line.
Fixed Issues
All
Exclude specific files from command line.
Could not find or load main class when using symlinked run.sh
LanguageRegistry uses default class loader when invoking ServiceLocator.
How to configure "-cache <path>"
Broken link to adding new cpd language documentation.
Apex
ClassCastException caused by Javadoc.
Java
PMD crashes with java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/xml/ws/Service
GuardLogStatement: "There is log block not surrounded by if" doesn't sound right.
UnusedImports false positive for static import with package-private method usage.
Update CommentDefaultAccessModifierRule to extend AbstractIgnoredAnnotationRule.
JUnitTestsShouldIncludeAssert false positive.
UnusedImports false positive with static ondemand import with method call.
UnnecessaryFullyQualifiedName doesn't flag same package FQCNs.
UnnecessaryModifier wrong message public->static
Processing error (ClassCastException) if a TYPE_USE annotation is used on a base class in the "extends" clause.
JspTokenManager has a problem about jsp scriptlet.
Documentation
Provide some explanation for WHY duplicate code is bad, like mutations.
API Changes
PMD has a new CLI option -ignorelist. With that, you can provide a file containing a comma-delimit list of files, that should be excluded during analysis. The ignorelist is applied after the files have been selected via -dir or -filelist, which means, if the file is in both lists, then it will be ignored. Note: there is no corresponding option for the Ant task, since the feature is already available via Ant's FileSet include/exclude filters.
External Contributions
Generalize ANTLR tokens preparing support for ANTLR token filter - Matías Fraga and Tomi De Lucca
Update cpd.md with information about risks - David M. Karr
Static Modifier on Internal Interface pmd #1356 - avishvat
Updated outdated note in the building documentation. - Maikel Steneker
Simplify check for 'Test' annotation in JUnitTestsShouldIncludeAssertRule. - Will Winder
Add missing null check AbstractJavaAnnotatableNode - Will Winder
Upgrading Apache Commons IO from 2.4 to 2.6 - Thunderforge
Upgrading Apache Commons Lang 3 from 3.7 to 3.8.1 - Thunderforge
Replacing deprecated IO methods with ones that specify a charset - Thunderforge
Improved message for GuardLogStatement rule - Felix Lampe
Add CPD support for Antlr based grammar on Golang - Matías Fraga
Upgrading SLF4J from 1.7.12 to 1.7.25 - Thunderforge
Fix Issue 1343: Update CommentDefaultAccessModifierRule - CrazyUnderdog
Replacing IOUtils.closeQuietly(foo) with try-with-resources statements - Thunderforge
Fix issue 1402: JspTokenManager has a problem about jsp scriptlet - JustPRV
Add ignore file path functionality - Jon Moroney
Fix broken link - Johan Hammar
版本下載:PMD 6.9.0
PMD 6.6.0
更新細節:
Java 11 Support.
New Rules:
The new Java rule LocalVariableNamingConventions (java-codestyle) detects local variable names that don’t comply to a given convention. It defaults to standard Java convention of using camelCase, but can be configured. Special cases can be configured for final variables and caught exceptions’ names.
The new Java rule FormalParameterNamingConventions (java-codestyle) detects formal parameter names that don’t comply to a given convention. It defaults to standard Java convention of using camelCase, but can be configured. Special cases can be configured for final parameters and lambda parameters (considering whether they are explicitly typed or not).
Modified Rules:
The Java rules AccessorClassGeneration and AccessorMethodGeneration (both in category java-bestpractices) have been modified to be only valid up until Java 10. Java 11 adds support for JEP 181: Nest-Based Access Control which avoids the generation of accessor classes / methods altogether.
Fixed Issues:
Core -
“Unsupported build listener” in gradle build.
Error in sed expression on line 82 of run.sh while detecting installed version of Java.
Doc -
TOC links don’t work?
Java-codestyle -
CommentDefaultAccessModifier false positive with nested interfaces (regression from 6.4.0).
UnnecessaryFullyQualifiedName false positive for the same name method.
Java-design-
CyclomaticComplexityRule counts ?-operator twice.
NPath complexity false negative due to overflow.
Plsql-
ParseException for CREATE TABLE.
ParseException when parsing VIEW.
ParseException when parsing EXECUTE IMMEDIATE.
UI
XPath autocomplete arrows on first and last items.
API Changes:
The findDescendantsOfType methods in net.sourceforge.pmd.lang.ast.AbstractNode no longer search for exact type matches, but will match subclasses, too. That means, it’s now possible to look for abstract node types such as AbstractJavaTypeNode and not only for it’s concrete subtypes.
External Contributions:
[UI] XPath AutoComplete.
[Doc] Minor typo fix in installation.md.
[Ci] [GSoC] Upload baseline of pmdtester automatically.
版本下載:PMD 6.6.0
PMD 6.2.0
更新細節:
New and noteworthy:
Ecmascript (JavaScript).
Disable Incremental Analysis.
New Rules:
The new Java rule MissingOverride (category bestpractices) detects overridden and implemented methods, which are not marked with the @Override annotation. Annotating overridden methods with @Override ensures at compile time that the method really overrides one, which helps refactoring and clarifies intent.
The new Java rule UnnecessaryAnnotationValueElement (category codestyle) detects annotations with a single element (value) that explicitely names it. That is, doing @SuppressWarnings(value = "unchecked") would be flagged in favor of @SuppressWarnings("unchecked").
The new Java rule ControlStatementBraces (category codestyle) enforces the presence of braces on control statements where they are optional. Properties allow to customize which statements are required to have braces. This rule replaces the now deprecated rules WhileLoopMustUseBraces, ForLoopMustUseBraces, IfStmtMustUseBraces, and IfElseStmtMustUseBraces. More than covering the use cases of those rules, this rule also supports do ... while statements and case labels of switch statements (disabled by default).
Modified Rules:
The Java rule CommentContentRule (java-documentation) previously had the property wordsAreRegex. But this property never had been implemented and is removed now.
The Java rule UnusedPrivateField (java-bestpractices) now has a new ignoredAnnotations property that allows to configure annotations that imply the field should be ignored. By default @java.lang.Deprecated and @javafx.fxml.FXML are ignored.
The Java rule UnusedPrivateMethod (java-bestpractices) now has a new ignoredAnnotations property that allows to configure annotations that imply the method should be ignored. By default @java.lang.Deprecated is ignored.
The Java rule ImmutableField (java-design) now has a new ignoredAnnotations property that allows to configure annotations that imply the method should be ignored. By default several lombok annotations are ignored.
The Java rule SingularField (java-design) now has a new ignoredAnnotations property that allows to configure annotations that imply the method should be ignored. By default several lombok annotations are ignored.
Deprecated Rules:
The Java rules WhileLoopMustUseBraces, ForLoopMustUseBraces, IfStmtMustUseBraces, and IfElseStmtMustUseBraces are deprecated. They will be replaced by the new rule ControlStatementBraces, in the category codestyle.
Fixed Issues:
All -
[core] PMD build failure on Windows.
java-bestpracrtices -
[java] UnusedPrivateField false-positive with @FXML.
[java] ArrayIsStoredDirectly not triggered from variadic functions.
java-codestyle -
[java] Merge *StmtMustUseBraces rules.
[java] Detect annotations with single value element.
java-design -
[java] AvoidThrowingNullPointerException documentation suggestion.
[java] CFGs of declared but not called lambdas are treated as parts of an enclosing method’s CFG.
[java] SignatureDeclareThrowsException’s IgnoreJUnitCompletely property not honored for constructors.
[java] UseUtilityClassRule reports false positive with lombok NoArgsConstructor.
Documentation -
[core] Broken link in CONTRIBUTING.md.
[core] Include info about rule doc generation in “Writing Documentation” md page.
API Changes:
A new CLI switch, -no-cache, disables incremental analysis and the related suggestion. This overrides the -cache option. The corresponding Ant task parameter is noCache.
The static method PMDParameters.transformParametersIntoConfiguration(PMDParameters) is now deprecated, for removal in 7.0.0. The new instance method PMDParameters.toConfiguration() replaces it.
The method ASTConstructorDeclaration.getParameters() has been deprecated in favor of the new method getFormalParameters(). This method is available for both ASTConstructorDeclaration and ASTMethodDeclaration.
版本下載:PMD 6.2.0
PMD 6.0.1
更新細節:
PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Java, JavaScript, XML, XSL.
Available Plugins include:
- Maven PMD.
- Eclipse.
- NetBeans.
- JBuilder.
- JDeveloper.
- IntelliJ IDEA.
PMD additionally includes CPD, the copy-paste-detector. CPD finds duplicated code in Java, C, C++, C#, PHP, Ruby, Fortran, JavaScript, PLSQL, Apache Velocity, Scala, Objective C, Matlab, Python, Go.
版本下載:PMD 6.0.1
PMD 5.8.1
更新細節:
Fixed Issues:
Java
[java] Error while processing class when EnumMap is used in PMD 5.8.0.
[core] NoClassDefFoundError under 5.8.
[core] Processing issues dealing with anonymous classes.
API Changes:
The getGenericArgs() method introduced to TypeNode in 5.8.0 was removed. You can access to generics' info through the JavaTypeDefinition object.
The JavaTypeDefinitionBuilder class introduced in 5.8.0 is not more. You can use factory methods available on JavaTypeDefinition.
External Contributions:
[java] fix error with raw types.
版本下載:PMD 5.8.1
PMD 5.7.0
更新細節:
Modified Rules:
The rule “FieldDeclarationsShouldBeAtStartOfClass” of the java-design ruleset has a new property ignoreInterfaceDeclarations. Setting this property to true ignores interface declarations, that precede fields.
Renderers:
Added the ‘empty’ renderer which will write nothing. Does not affect other behaviors, for example the command line PMD exit status will still indicate whether violations were found.
Fixed Issues:
General
[core] Use maven wrapper and upgrade to maven 3.5.0.
[core] Improve build time on travis.
[java] Parser Error for empty statements.
java-coupling
[java] Law of Demeter violations for the Builder pattern.
Java-design
[java] FieldDeclarationsShouldBeAtStartOfClass: Add ability to ignore interfaces.
[java] RuleSetCompatibility - not taking rename of UnusedModifier into account.
Java-junit
[java] Mockito verify method is not taken into account in JUnitTestsShouldIncludeAssert rule.
Java-strings
[java] [doc] Add suggestion to use StringUtils#isBlank for InefficientEmptyStringCheck.
Jsp-basic
[jsp] Wrong issue “JSP file should use UTF-8 encoding”.
API Changes:
The method net.sourceforge.pmd.util.StringUtil#htmlEncode(String) is deprecated. org.apache.commons.lang3.StringEscapeUtils#escapeHtml4(String) should be used instead.
External Contributions:
[vf] Adding proper AST support for negation expressions.
[core] Fix XSS in HTML renderer.
[java] Add property to ignore interfaces in FieldDeclarationsShouldBeAtStartOfClassRule.
[core] Fix broken link in the site’s doc.
[java] Added documentation details on InefficientEmptyStringCheck.
[jsp] Fixed JspEncoding false positive.
[java] Remove trailing whitespaces in design.xml.
[apex] Fix documentation typo.
[java] False positive for Law Of Demeter (Builder pattern).
[java] Mockito verify method is not taken into account in JUnitTestsShouldIncludeAssert rule.
版本下載:PMD 5.7.0
PMD 5.6.0
更新細節:
Fixed Issues:
General:
Inconsistent behavior of Rule.start/Rule.end.
Zip file stream closes spuriously when loading rulesets.
Shortnames option is broken with relative paths.
PMD not executing under git bash.
Automated release - github release notes missing.
Version 5.5.4 seems to hold file lock on rules JAR (affects Windows only).
Apex-apexunit:
ApexUnitTestClassShouldHaveAsserts assumes APEX is case sensitive.
Apex-complexity:
NCSS Method length is incorrect when using method chaining.
NCSS Type length is incorrect when using method chaining.
apex-security:
ApexXSSFromURLParamRule shouldn’t enforce ESAPI usage. String.escapeHtml4 is sufficient.
Documentation flaw on Apex Sharing Violations.
java:
CPD runs into NPE when analyzing Lucene.
Parse error on annotation fields with generics.
Parse error on method reference with generics.
Parse error with local class with 2 or more annotations.
CPD: OutOfMemory when analyzing Lucene.
Parse error on method reference.
CPD throws an NPE when parsing enums with -ignore-identifiers.
Symbol Table fails to resolve inner classes.
java-basic:
SimplifiedTernary: Incorrect ternary operation can be simplified.
java-coupling:
LoD false positive.
java-design:
UnnecessaryLocalBeforeReturn false positive for SuppressWarnings annotation.
ImmutableField: Private field in inner class gives false positive with lambdas.
UnnecessaryLocalBeforeReturn with assert.
New Rule: AccesorMethodGeneration - complements accessor class rule.
Combine rules AvoidConstantsInInterface and ConstantsInInterface.
MissingBreakInSwitch - False positive for continue.
UseLocaleWithCaseConversions does not works with ResultSet (false negative).
SingularField with lambdas as final fields.
NonThreadSafeSingleton: Be more explicit as to why double checked locking is not recommended.
UnnecessaryLocalBeforeReturn: ClassCastException in switch case with local variable returned.
UnnecessaryLocalBeforeReturn: Enhance by checking usages.
AccessorMethodGeneration: Method inside static inner class incorrectly reported.
FinalFieldCouldBeStatic: Constant in @interface incorrectly reported as “could be made static”.
UnnecessaryLocalBeforeReturn false positive when cloning Maps.
Improve quality of AccessorClassGeneration.
UnnecessaryLocalBeforeReturn enhancement is overly restrictive – method order matters.
AccessorClassGeneration throws ClassCastException when seeing array construction.
java-imports:
False positive on DontImportJavaLang when importing java.lang.ProcessBuilder.
False positive on DontImportJavaLang when importing Java 7’s java.lang.invoke.MethodHandles.
UnnecessaryFullyQualifiedNameRule doesn’t take into consideration conflict resolution.
UnusedImportRule - False Positive for only usage in Javadoc - {@link ClassName#CONSTANT}.
UnnecessaryFullyQualifiedName: Really necessary fully qualified name.
java-junit:
JUnitTestsShouldIncludeAssertRule should support @Rule as well as @Test(expected = …).
NPE applying rule JUnitTestsShouldIncludeAssert.
java-logging-java:
InvalidSlf4jMessageFormat: False positive with placeholder and exception.
InvalidSlf4jMessageFormat: fails with NPE.
java-optimizations:
RedundantFieldInitializer report for annotation field not explicitly marked as final.
UseStringBufferForStringAppends: False Positive with ternary operator.
java-strings:
ConsecutiveAppendsShouldReuse is not really an optimization.
InefficientEmptyStringCheck misses String.trim().isEmpty().
java-unnecessary:
UselessParentheses: Parentheses in return statement are incorrectly reported as useless.
java-unusedcode:
UnusedModifier doesn’t check annotations.
UnusedModifier doesn’t check annotations inner classes.
UnusedModifier doesn’t check static keyword on nested enum declaration.
UnusedLocalVariable false positive.
XML:
Error while processing xml file with “.webapp” in the file or directory name.
psql:
Parse error for IS [NOT] NULL construct.
javascript:
Template strings are not correctly parsed.
版本下載:PMD 5.6.0
PMD 5.5.1
更新細節:
# New Rules:
- New rules for Salesforce.com Apex: apex-apexunit: ApexUnitTestClassShouldHaveAsserts, ApexUnitTestShouldNotUseSeeAllDataTrue.
# Pull Requests:
- [java] Improve multithreading performance: do not lock on classloader.
- [apex] Restrict AvoidLogicInTrigger rule to max. 1 violation per file.
- [java] [apex] Fix for 1501: CyclomaticComplexity rule causes OOM when class reporting is disabled.
- [core] [java] Close opened file handles.
- [apex] Basic apex unit test rules.
# Bugfixes:
- Apex : [java] [apex] CyclomaticComplexity rule causes OOM when class reporting is disabled.
- Java: [java] [apex] CyclomaticComplexity rule causes OOM when class reporting is disabled.
# General
- [core] CPD test break PMD 5.5.1 build on Windows.
- [core] [java] PMD is leaking file handles.
版本下載:PMD 5.5.1
PMD 5.4.2
更新細節:
# New Supported Languages:
- CPD supports now Swift
# Feature Request and Improvements:
- A JSON-renderer for PMD which is compatible with CodeClimate.
- Provide backwards compatibility for PMD configuration file
# Modified Rules:
- java-design/UseVargs: public static void main method is ignored now and so are methods, that are annotated with Override.
# Pull Requests:
- Added support for Raw String Literals (C++11).
- Added support for files with UTF-8 BOM to JSP tokenizer.
- Removed file filter for files that are explicitly specified on the CPD command line using the '--files' command line option.
- Added file encoding detection to CPD.
- Extended Objective-C grammar to accept UTF-8 escapes (uXXXX) in string literals.
- Added support for Swift to CPD.
- do not flag public static void main(String[]) as UseVarargs; ignore @Override for UseVarargs
- Update mvn-plugin.md
- Adds new Code Climate-compliant JSON renderer
- #1340 UseStringBufferForStringAppends False Positive with Ternary Operator
# Bugfixes:
- java-basic/DoubleCheckedLocking:False positives for DoubleCheckedLocking
- java-basic/SimplifiedTernary: False positive with ternary operator
- java-codesize/TooManyMethods: TooManyMethods counts inner class methods
- java-controversial/AvoidUsingShortType: false positive when casting a variable to short
- java-design/AccessorClassGeneration: ArrayIndexOutOfBoundsException with Annotations for AccessorClassGenerationRule
- java-design/CloseResource: CloseResource false positive on Statement
- java-design/UseUtilityClass: UseUtilityClass can't correctly check functions with multiple annotations
- java-imports/UnusedImports: False Positve UnusedImports with javadoc @link
- java-junit/TestClassWithoutTestCases: Test Class Without Test Cases gives false positive
- java-optimizations/UseStringBufferForStringAppends: UseStringBufferForStringAppends False Positive with ternary operator
- java-sunsecure/ArrayIsStoredDirectly: False positive of MethodReturnsInternalArray.: False positive of ArrayIsStoredDirectly
- java-unnecessary/UnnecessaryFinalModifier: UnnecessaryFinalModifier false positive on a @SafeVarargs method
- java-unusedcode/UnusedFormalParameter: UnusedFormalParameter should ignore overriding methods
- java-unusedcode/UnusedLocalVariable: UnusedLocalVariable - false positive - parenthesis
- java-unusedcode/UnusedModifier: false positive on public modifier used with inner interface in enum
# General
- PMD doesn't handle Java 8 explicit receiver parameters
- Performance degradation scanning large XML files with XPath custom rules
- Possible threading issue due to PR#75
- Error with type-bound lambda
- no problems found results in blank file instead of empty xml
# CLI Changes:
- CPD: If a complete filename is specified, the language dependent filename filter is not applied. This allows to scan files, that are not using the standard file extension. If a directory is specified, the filename filter is still applied and only those files with the correct file extension of the language are scanned.
- CPD: If no problems found, an empty report will be output instead of nothing. See also #1481
- New command line parameter for PMD: -norulesetcompatibility - this disables the ruleset factory compatibility filter and fails, if e.g. an old rule name is used in the ruleset. See also #1360. This option is also available for the ant task: <noRuleSetCompatibility>true</noRuleSetCompatibility>.
版本下載:PMD 5.4.2
HWiNFO 5.22
PMD 5.4.1
更新細節:
# Feature Request and Improvements:
* CPD: New command line parameter --ignore-usings: Ignore using directives in C# when comparing text.
# Modified Rules:
* java-comments/CommentRequired: New property serialVersionUIDCommentRequired which controls the comment requirements for serialVersionUID fields. By default, no comment is required for this field.
# Pull Requests:
* Added option to exclude C# using directives from CPD analysis
* Added capability in Java and JSP parser for tracking tokens.
* Fix rendering CommentDefaultAccessModifier description as code
* RuleSetFactory Performance Enhancement
# Bugfixes:
* java-comments/CommentDefaultAccessModifier
- CommentDefaultAccessModifier triggers on field annotated with @VisibleForTesting
* java-comments/CommentRequired
- CommentRequired raises violation on serialVersionUID field
* java-design/UseNotifyAllInsteadOfNotify
- UseNotifyAllInsteadOfNotify gives false positive
* java-finalizers/AvoidCallingFinalize
- NPE in AvoidCallingFinalize
* java-imports/UnnecessaryFullyQualifiedName
- UnnecessaryFullyQualifiedName false positive on clashing static imports with enums
* java-junit/JUnitAssertionsShouldIncludeMessage
- JUnitAssertionsShouldIncludeMessage is no longer compatible with TestNG
* java-migrating/JUnit4TestShouldUseBeforeAnnotation
- False positive with JUnit4TestShouldUseBeforeAnnotation when TestNG is used
* java-naming/SuspiciousEqualsMethodName
- SuspiciousEqualsMethodName false positive
* java-optimizations/RedundantFieldInitializer
- RedundantFieldInitializer: False positive for small floats
* java-unnecessary/UselessQualifiedThis
- UselessQualifiedThis: False positive with Java 8 Function
* java-unusedcode/UnusedPrivateField
- False positive in UnusedPrivateField when local variable hides member variable
* General
- Invalid XML Characters in Output
- Java - Parse Error: Cast in return expression
- PMD: Update documentation how to compile after modularization
版本下載:PMD 5.4.1