Thread: [pmd-devel] [ANNOUNCE] PMD 7.0.0-rc1 released
A source code analyzer
Brought to you by:
adangel,
juansotuyo
|
From: Andreas D. <and...@pm...> - 2023-03-25 14:04:58
Attachments:
OpenPGP_signature
|
* Downloads:
https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.0.0-rc1
* Documentation: https://docs.pmd-code.org/pmd-doc-7.0.0-rc1/
25-March-2023 - 7.0.0-rc1
We're excited to bring you the next major version of PMD!
Since this is a big release, we provide here only a concise version of
the release notes. We prepared a separate
page with the full Detailed Release Notes for PMD 7.0.0
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_release_notes_pmd7.html>.
*βΉοΈ Release Candidates*
PMD 7.0.0 is finally almost ready. In order to gather feedback, we are
going to ship a couple of release candidates. These are officially
available on GitHub and Maven Central and can be used as usual (e.g. as
a dependency). We encourage you to try out the new features, but keep in
mind that we may introduce API breaking changes between the release
candidates. It should be stable enough if you don't use custom rules.
We have still some tasks planned for the next release candidates. You
can see the progress in PMD 7 Tracking Issue #3898
<https://github.com/pmd/pmd/issues/3898>.
If you find any problem or difficulty while updating from PMD 6, please
provide feedback via our issue tracker
<https://github.com/pmd/pmd/issues/new/choose>. That way we can improve
the experience for all.
Table Of Contents
* π Major Features and Enhancements
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#π-major-features-and-enhancements>
o New official logo
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#new-official-logo>
o Revamped Java module
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#revamped-java-module>
o Revamped Command Line Interface
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#revamped-command-line-interface>
o Full Antlr support
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#full-antlr-support>
* π Language Related Changes
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#π-language-related-changes>
o New: Swift support
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#new:-swift-support>
o New: Kotlin support (experimental)
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#new:-kotlin-support-(experimental)>
o Changed: JavaScript support
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#changed:-javascript-support>
o Changed: Language versions
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#changed:-language-versions>
* π New and changed rules
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#π-new-and-changed-rules>
o New Rules
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#new-rules>
o Changed Rules
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#changed-rules>
o Removed Rules
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#removed-rules>
* π¨ API
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#π¨-api>
* π₯ Compatibility and migration notes
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#π₯-compatibility-and-migration-notes>
* π Fixed Issues
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#π-fixed-issues>
* β¨ External Contributions
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#β¨-external-contributions>
* π Stats
<https://sourceforge.net/p/pmd/news/2023/03/pmd-700-rc1-25-march-2023-released/#π-stats>
π Major Features and Enhancements
New official logo
The new official logo of PMD:
New PMD Logo
Revamped Java module
* Java grammar substantially refactored - more correct regarding the
Java Language Specification (JLS)
* Built-in rules have been upgraded for the changed AST
* Rewritten type resolution framework and symbol table correctly
implements the JLS
* AST exposes more semantic information (method calls, field accesses)
For more information, see the Detailed Release Notes for PMD 7
<https://sourceforge.net/p/pmd/news/2023/03/pmd_release_notes_pmd7.html>.
Contributors: ClΓ©ment Fournier <https://github.com/oowekyala>
(@oowekyala <https://sourceforge.net/u/oowekyala/>),
Andreas Dangel <https://github.com/adangel> (@adangel
<https://sourceforge.net/u/adangel/>),
Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod)
Revamped Command Line Interface
* unified and consistent Command Line Interface for both Linux/Unix
and Windows across our different utilities
* single script |pmd| (|pmd.bat| for Windows) to launch the different
utilities:
* |pmd check| to run PMD rules and analyze a project
* |pmd cpd| to run CPD (copy paste detector)
* |pmd designer| to run the PMD Rule Designer
* progress bar support for |pmd check|
* shell completion
Demo
For more information, see the Detailed Release Notes for PMD 7
<https://sourceforge.net/p/pmd/news/2023/03/pmd_release_notes_pmd7.html>.
Contributors: Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod>
(@jsotuyod)
Full Antlr support
* Antlr <https://www.antlr.org/> based grammars can now be used to
build full-fledged PMD rules.
* Previously, Antlr grammar could only be used for CPD
* New supported languages: Swift and Kotlin
For more information, see the Detailed Release Notes for PMD 7
<https://sourceforge.net/p/pmd/news/2023/03/pmd_release_notes_pmd7.html>.
Contributors: Lucas Soncini <https://github.com/lsoncini> (@lsoncini),
MatΓas Fraga <https://github.com/matifraga> (@matifraga),
TomΓ‘s De Lucca <https://github.com/tomidelucca> (@tomidelucca)
π Language Related Changes
Note that this is just a concise listing of the highlight.
For more information on the languages, see the Detailed Release Notes
for PMD 7
<https://sourceforge.net/p/pmd/news/2023/03/pmd_release_notes_pmd7.html>.
New: Swift support
* use PMD to analyze Swift code with PMD rules
* initially 4 built-in rules
Contributors: Lucas Soncini <https://github.com/lsoncini> (@lsoncini),
MatΓas Fraga <https://github.com/matifraga> (@matifraga),
TomΓ‘s De Lucca <https://github.com/tomidelucca> (@tomidelucca)
New: Kotlin support (experimental)
* use PMD to analyze Kotlin code with PMD rules
* Support for Kotlin 1.8 grammar
* initially 2 built-in rules
Changed: JavaScript support
* latest version supports ES6 and also some new constructs (see Rhino
<https://github.com/mozilla/rhino>])
* comments are retained
Changed: Language versions
* more predefined language versions for each supported language
* can be used to limit rule execution for specific versions only with
|minimumLanguageVersion| and
|maximumLanguageVersion| attributes.
π New and changed rules
New Rules
*Apex* * |UnusedMethod|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_apex_design.html#unusedmethod>
finds unused methods in your code.
*Java* * |UnnecessaryBoxing|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_codestyle.html#unnecessaryboxing>
reports boxing and unboxing conversions that may be made implicit.
*Kotlin* * |FunctionNameTooShort|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_kotlin_bestpractices.html#functionnametooshort>
* |OverrideBothEqualsAndHashcode|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_kotlin_errorprone.html#overridebothequalsandhashcode>
*Swift* * |ProhibitedInterfaceBuilder|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_swift_bestpractices.html#prohibitedinterfacebuilder>
* |UnavailableFunction|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_swift_bestpractices.html#unavailablefunction>
* |ForceCast|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_swift_errorprone.html#forcecast>
* |ForceTry|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_swift_errorprone.html#forcetry>
Changed Rules
*Java*
* |UnnecessaryFullyQualifiedName|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname>:
the rule has two new properties,
to selectively disable reporting on static field and method
qualifiers. The rule also has been improved
to be more precise.
* |UselessParentheses|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_codestyle.html#uselessparentheses>:
the rule has two new properties which control how strict
the rule should be applied. With |ignoreClarifying| (default: true)
parentheses that are strictly speaking
not necessary are allowed, if they separate expressions of different
precedence.
The other property |ignoreBalancing| (default: true) is similar, in
that it allows parentheses that help
reading and understanding the expressions.
* |LooseCoupling|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_bestpractices.html#loosecoupling>:
the rule has a new property to allow some types to be coupled
to (|allowedTypes|).
* |EmptyCatchBlock|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_errorprone.html#emptycatchblock>:
|CloneNotSupportedException| and |InterruptedException| are not
special-cased anymore. Rename the exception parameter to |ignored|
to ignore them.
* |DontImportSun|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_errorprone.html#dontimportsun>:
|sun.misc.Signal| is not special-cased anymore.
* |UseDiamondOperator|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_codestyle.html#usediamondoperator>:
the property |java7Compatibility| is removed. The rule now
handles Java 7 properly without a property.
* |SingularField|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_design.html#singularfield>:
Properties |checkInnerClasses| and |disallowNotAssignment| are removed.
The rule is now more precise and will check these cases properly.
* |UseUtilityClass|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_design.html#useutilityclass>:
The property |ignoredAnnotations| has been removed.
* |LawOfDemeter|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_design.html#lawofdemeter>:
the rule has a new property |trustRadius|. This defines the maximum
degree
of trusted data. The default of 1 is the most restrictive.
* |CommentContent|
<https://pmd.github.io/pmd-7.0.0-rc1/pmd_rules_java_documentation.html#commentcontent>:
The properties |caseSensitive| and |disallowedTerms| are removed. The
new property |fobiddenRegex| can be used now to define the
disallowed terms with a single regular
expression.
Removed Rules
Many rules, that were previously deprecated have been finally removed.
See Detailed Release Notes for PMD 7
<https://sourceforge.net/p/pmd/news/2023/03/pmd_release_notes_pmd7.html>
for the complete list.
π¨ API
The API of PMD has been growing over the years and needed some cleanup.
The goal is, to
have a clear separation between a well-defined API and the
implementation, which is internal.
This should help us in future development.
Also, there are some improvement and changes in different areas. For the
detailed description
of the changes listed here, see Detailed Release Notes for PMD 7
<https://sourceforge.net/p/pmd/news/2023/03/pmd_release_notes_pmd7.html>.
* Miscellaneous smaller changes and cleanups
* XPath 3.1 support for XPath-based rules
* Node stream API for AST traversal
* Metrics framework
* Testing framework
* Language Lifecycle and Language Properties
π₯ Compatibility and migration notes
See Detailed Release Notes for PMD 7
<https://sourceforge.net/p/pmd/news/2023/03/pmd_release_notes_pmd7.html>.
π Fixed Issues
* miscellaneous
o #881 <https://github.com/pmd/pmd/issues/881>: [all] Breaking API
changes for 7.0.0
o #896 <https://github.com/pmd/pmd/issues/896>: [all] Use slf4j
o #1431 <https://github.com/pmd/pmd/pull/1431>: [ui] Remove old
GUI applications (designerold, bgastviewer)
o #1451 <https://github.com/pmd/pmd/issues/1451>: [core]
RulesetFactoryCompatibility stores the whole ruleset file in
memory as a string
o #2496 <https://github.com/pmd/pmd/issues/2496>: Update PMD 7
Logo on landing page
o #2497 <https://github.com/pmd/pmd/issues/2497>: PMD 7 Logo page
o #2498 <https://github.com/pmd/pmd/issues/2498>: Update PMD 7
Logo in documentation
o #3797 <https://github.com/pmd/pmd/issues/3797>: [all] Use JUnit5
* ant
o #4080 <https://github.com/pmd/pmd/issues/4080>: [ant] Split off
Ant integration into a new submodule
* core
o #880 <https://github.com/pmd/pmd/issues/880>: [core] Make
visitors generic
o #1622 <https://github.com/pmd/pmd/pull/1622>: [core] NodeStream API
o #1687 <https://github.com/pmd/pmd/issues/1687>: [core] Deprecate
and Remove XPath 1.0 support
o #1785 <https://github.com/pmd/pmd/issues/1785>: [core] Allow
abstract node types to be valid rulechain visits
o #1825 <https://github.com/pmd/pmd/pull/1825>: [core] Support
NoAttribute for XPath
o #2038 <https://github.com/pmd/pmd/issues/2038>: [core] Remove DCD
o #2218 <https://github.com/pmd/pmd/issues/2218>: [core]
|isFindBoundary| should not be an attribute
o #2234 <https://github.com/pmd/pmd/issues/2234>: [core]
Consolidate PMD CLI into a single command
o #2239 <https://github.com/pmd/pmd/issues/2239>: [core] Merging
Javacc build scripts
o #2518 <https://github.com/pmd/pmd/issues/2518>: [core] Language
properties
o #2602 <https://github.com/pmd/pmd/issues/2602>: [core] Remove
ParserOptions
o #2614 <https://github.com/pmd/pmd/pull/2614>: [core] Upgrade
Saxon, add XPath 3.1, remove Jaxen
o #2696 <https://github.com/pmd/pmd/pull/2696>: [core] Remove DFA
o #2821 <https://github.com/pmd/pmd/issues/2821>: [core] Rule
processing error filenames are missing paths
o #2873 <https://github.com/pmd/pmd/issues/2873>: [core] Utility
classes in pmd 7
o #2885 <https://github.com/pmd/pmd/issues/2885>: [core] Error
recovery mode
o #3203 <https://github.com/pmd/pmd/issues/3203>: [core] Replace
RuleViolationFactory implementations with ViolationDecorator
o #3692 <https://github.com/pmd/pmd/pull/3692>: [core] Analysis
listeners
o #3782 <https://github.com/pmd/pmd/issues/3782>: [core] Language
lifecycle
o #3815 <https://github.com/pmd/pmd/issues/3815>: [core] Update
Saxon HE to 10.7
o #3893 <https://github.com/pmd/pmd/pull/3893>: [core] Text documents
o #3902 <https://github.com/pmd/pmd/issues/3902>: [core] Violation
decorators
o #3918 <https://github.com/pmd/pmd/issues/3918>: [core] Make
LanguageRegistry non static
o #3922 <https://github.com/pmd/pmd/pull/3922>: [core] Better
error reporting for the ruleset parser
o #4035 <https://github.com/pmd/pmd/issues/4035>: [core]
ConcurrentModificationException in DefaultRuleViolationFactory
o #4120 <https://github.com/pmd/pmd/issues/4120>: [core]
Explicitly name all language versions
o #4353 <https://github.com/pmd/pmd/pull/4353>: [core] Micro
optimizations for Node API
o #4365 <https://github.com/pmd/pmd/pull/4365>: [core] Improve
benchmarking
o #4420 <https://github.com/pmd/pmd/pull/4420>: [core] Remove PMD.EOL
* cli
o #2234 <https://github.com/pmd/pmd/issues/2234>: [core]
Consolidate PMD CLI into a single command
o #3828 <https://github.com/pmd/pmd/issues/3828>: [core] Progress
reporting
o #4079 <https://github.com/pmd/pmd/issues/4079>: [cli] Split off
CLI implementation into a pmd-cli submodule
* testing
o #2435 <https://github.com/pmd/pmd/issues/2435>: [test] Remove
duplicated Dummy language module
o #4234 <https://github.com/pmd/pmd/issues/4234>: [test] Tests
that change the logging level do not work
Language specific fixes:
* apex
o #1937 <https://github.com/pmd/pmd/issues/1937>: [apex] Apex
should only have a single RootNode
o #1648 <https://github.com/pmd/pmd/issues/1648>: [apex,vf] Remove
CodeClimate dependency
o #1750 <https://github.com/pmd/pmd/pull/1750>: [apex] Remove apex
statistical rules
o #2836 <https://github.com/pmd/pmd/pull/2836>: [apex] Remove Apex
ProjectMirror
o #4427 <https://github.com/pmd/pmd/issues/4427>: [apex]
ApexBadCrypto test failing to detect inline code
* apex-design
o #2667 <https://github.com/pmd/pmd/issues/2667>: [apex] Integrate
nawforce/ApexLink to build robust Unused rule
* java
o #520 <https://github.com/pmd/pmd/issues/520>: [java] Allow
|@SuppressWarnings| with constants instead of literals
o #864 <https://github.com/pmd/pmd/issues/864>: [java]
Similar/duplicated implementations for determining FQCN
o #905 <https://github.com/pmd/pmd/issues/905>: [java] Add new
node for anonymous class declaration
o #910 <https://github.com/pmd/pmd/issues/910>: [java] AST
inconsistency between primitive and reference type arrays
o #997 <https://github.com/pmd/pmd/issues/997>: [java] Java8
parsing corner case with annotated array types
o #998 <https://github.com/pmd/pmd/issues/998>: [java] AST
inconsistencies around FormalParameter
o #1019 <https://github.com/pmd/pmd/issues/1019>: [java] Breaking
Java Grammar changes for PMD 7.0.0
o #1124 <https://github.com/pmd/pmd/issues/1124>: [java]
ImmutableList implementation in the qname codebase
o #1128 <https://github.com/pmd/pmd/issues/1128>: [java] Improve
ASTLocalVariableDeclaration
o #1150 <https://github.com/pmd/pmd/issues/1150>: [java]
ClassOrInterfaceType AST improvements
o #1207 <https://github.com/pmd/pmd/issues/1207>: [java] Resolve
explicit types using FQCNs, without hitting the classloader
o #1367 <https://github.com/pmd/pmd/issues/1367>: [java] Parsing
error on annotated inner class
o #1661 <https://github.com/pmd/pmd/issues/1661>: [java] About
operator nodes
o #2366 <https://github.com/pmd/pmd/pull/2366>: [java] Remove
qualified names
o #2819 <https://github.com/pmd/pmd/issues/2819>: [java] GLB bugs
in pmd 7
o #3763 <https://github.com/pmd/pmd/issues/3763>: [java] Ambiguous
reference error in valid code
o #3749 <https://github.com/pmd/pmd/issues/3749>: [java] Improve
|isOverridden| in ASTMethodDeclaration
o #3750 <https://github.com/pmd/pmd/issues/3750>: [java] Make
symbol table support instanceof pattern bindings
o #3752 <https://github.com/pmd/pmd/issues/3752>: [java] Expose
annotations in symbol API
o #4237 <https://github.com/pmd/pmd/pull/4237>: [java] Cleanup
handling of Java comments
o #4317 <https://github.com/pmd/pmd/issues/4317>: [java] Some AST
nodes should not be TypeNodes
o #4359 <https://github.com/pmd/pmd/issues/4359>: [java] Type
resolution fails with NPE when the scope is not a type declaration
o #4367 <https://github.com/pmd/pmd/issues/4367>: [java] Move
testrule TypeResTest into internal
* java-bestpractices
o #342 <https://github.com/pmd/pmd/issues/342>: [java]
AccessorMethodGeneration: Name clash with another public field
not properly handled
o #755 <https://github.com/pmd/pmd/issues/755>: [java]
AccessorClassGeneration false positive for private constructors
o #770 <https://github.com/pmd/pmd/issues/770>: [java]
UnusedPrivateMethod yields false positive for counter-variant
arguments
o #807 <https://github.com/pmd/pmd/issues/807>: [java]
AccessorMethodGeneration false positive with overloads
o #833 <https://github.com/pmd/pmd/issues/833>: [java]
ForLoopCanBeForeach should consider iterating on this
o #1189 <https://github.com/pmd/pmd/issues/1189>: [java]
UnusedPrivateMethod false positive from inner class via external
class
o #1205 <https://github.com/pmd/pmd/issues/1205>: [java] Improve
ConstantsInInterface message to mention alternatives
o #1212 <https://github.com/pmd/pmd/issues/1212>: [java] Don't
raise JUnitTestContainsTooManyAsserts on JUnit 5's assertAll
o #1422 <https://github.com/pmd/pmd/issues/1422>: [java]
JUnitTestsShouldIncludeAssert false positive with inherited
@Rule field
o #1565 <https://github.com/pmd/pmd/issues/1565>: [java]
JUnitAssertionsShouldIncludeMessage false positive with AssertJ
o #1747 <https://github.com/pmd/pmd/issues/1747>: [java]
PreserveStackTrace false-positive
o #1969 <https://github.com/pmd/pmd/issues/1969>: [java]
MissingOverride false-positive triggered by package-private
method overwritten in another package by extending class
o #1998 <https://github.com/pmd/pmd/issues/1998>: [java]
AccessorClassGeneration false-negative: subclass calls private
constructor
o #2130 <https://github.com/pmd/pmd/issues/2130>: [java]
UnusedLocalVariable: false-negative with array
o #2147 <https://github.com/pmd/pmd/issues/2147>: [java]
JUnitTestsShouldIncludeAssert - false positives with lambdas and
static methods
o #2464 <https://github.com/pmd/pmd/issues/2464>: [java]
LooseCoupling must ignore class literals: ArrayList.class
o #2542 <https://github.com/pmd/pmd/issues/2542>: [java]
UseCollectionIsEmpty can not detect the case |foo.bar().size()|
o #2650 <https://github.com/pmd/pmd/issues/2650>: [java]
UseTryWithResources false positive when AutoCloseable helper used
o #2796 <https://github.com/pmd/pmd/issues/2796>: [java]
UnusedAssignment false positive with call chains
o #2797 <https://github.com/pmd/pmd/issues/2797>: [java]
MissingOverride long-standing issues
o #2806 <https://github.com/pmd/pmd/issues/2806>: [java]
SwitchStmtsShouldHaveDefault false-positive with Java 14 switch
non-fallthrough branches
o #2822 <https://github.com/pmd/pmd/issues/2822>: [java]
LooseCoupling rule: Extend to cover user defined implementations
and interfaces
o #2843 <https://github.com/pmd/pmd/pull/2843>: [java] Fix
UnusedAssignment FP with field accesses
o #2882 <https://github.com/pmd/pmd/issues/2882>: [java]
UseTryWithResources - false negative for explicit close
o #2883 <https://github.com/pmd/pmd/issues/2883>: [java]
JUnitAssertionsShouldIncludeMessage false positive with method call
o #2890 <https://github.com/pmd/pmd/issues/2890>: [java]
UnusedPrivateMethod false positive with generics
o #2946 <https://github.com/pmd/pmd/issues/2946>: [java]
SwitchStmtsShouldHaveDefault false positive on enum inside enums
o #3672 <https://github.com/pmd/pmd/pull/3672>: [java]
LooseCoupling - fix false positive with generics
o #3675 <https://github.com/pmd/pmd/pull/3675>: [java]
MissingOverride - fix false positive with mixing type vars
* java-codestyle
o #1208 <https://github.com/pmd/pmd/issues/1208>: [java]
PrematureDeclaration rule false-positive on variable declared to
measure time
o #1429 <https://github.com/pmd/pmd/issues/1429>: [java]
PrematureDeclaration as result of method call (false positive)
o #1673 <https://github.com/pmd/pmd/issues/1673>: [java]
UselessParentheses false positive with conditional operator
o #1790 <https://github.com/pmd/pmd/issues/1790>: [java]
UnnecessaryFullyQualifiedName false positive with enum constant
o #1918 <https://github.com/pmd/pmd/issues/1918>: [java]
UselessParentheses false positive with boolean operators
o #2134 <https://github.com/pmd/pmd/issues/2134>: [java]
PreserveStackTrace not handling |Throwable.addSuppressed(...)|
o #2299 <https://github.com/pmd/pmd/issues/2299>: [java]
UnnecessaryFullyQualifiedName false positive with similar
package name
o #2391 <https://github.com/pmd/pmd/issues/2391>: [java]
UseDiamondOperator FP when expected type and constructed type
have a different parameterization
o #2528 <https://github.com/pmd/pmd/issues/2528>: [java]
MethodNamingConventions - JUnit 5 method naming not support
ParameterizedTest
o #2739 <https://github.com/pmd/pmd/issues/2739>: [java]
UselessParentheses false positive for string concatenation
o #2748 <https://github.com/pmd/pmd/issues/2748>: [java]
UnnecessaryCast false positive with unchecked cast
o #2973 <https://github.com/pmd/pmd/issues/2973>: [java] New rule:
UnnecessaryBoxing
o #3195 <https://github.com/pmd/pmd/pull/3195>: [java] Improve
rule UnnecessaryReturn to detect more cases
o #3218 <https://github.com/pmd/pmd/pull/3218>: [java] Generalize
UnnecessaryCast to flag all unnecessary casts
o #3221 <https://github.com/pmd/pmd/issues/3221>: [java]
PrematureDeclaration false positive for unused variables
o #3238 <https://github.com/pmd/pmd/issues/3238>: [java] Improve
ExprContext, fix FNs of UnnecessaryCast
o #3500 <https://github.com/pmd/pmd/pull/3500>: [java]
UnnecessaryBoxing - check for Integer.valueOf(String) calls
o #4357 <https://github.com/pmd/pmd/pull/4357>: [java] Fix
IllegalStateException in UseDiamondOperator rule
* java-design
o #1014 <https://github.com/pmd/pmd/issues/1014>: [java]
LawOfDemeter: False positive with lambda expression
o #1605 <https://github.com/pmd/pmd/issues/1605>: [java]
LawOfDemeter: False positive for standard UTF-8 charset name
o #2175 <https://github.com/pmd/pmd/issues/2175>: [java]
LawOfDemeter: False positive for chained methods with generic
method call
o #2179 <https://github.com/pmd/pmd/issues/2179>: [java]
LawOfDemeter: False positive with static property access -
should treat class-level property as global object, not
dot-accessed property
o #2180 <https://github.com/pmd/pmd/issues/2180>: [java]
LawOfDemeter: False positive with Thread and ThreadLocalRandom
o #2182 <https://github.com/pmd/pmd/issues/2182>: [java]
LawOfDemeter: False positive with package-private access
o #2188 <https://github.com/pmd/pmd/issues/2188>: [java]
LawOfDemeter: False positive with fields assigned to local vars
o #2536 <https://github.com/pmd/pmd/issues/2536>: [java]
ClassWithOnlyPrivateConstructorsShouldBeFinal can't detect inner
class
o #3668 <https://github.com/pmd/pmd/pull/3668>: [java]
ClassWithOnlyPrivateConstructorsShouldBeFinal - fix FP with
inner private classes
o #3754 <https://github.com/pmd/pmd/issues/3754>: [java]
SingularField false positive with read in while condition
o #3786 <https://github.com/pmd/pmd/issues/3786>: [java]
SimplifyBooleanReturns should consider operator precedence
o #4238 <https://github.com/pmd/pmd/pull/4238>: [java] Make
LawOfDemeter not use the rulechain
* java-documentation
o #4369 <https://github.com/pmd/pmd/pull/4369>: [java] Improve
CommentSize
o #4416 <https://github.com/pmd/pmd/pull/4416>: [java] Fix
reported line number in CommentContentRule
* java-errorprone
o #659 <https://github.com/pmd/pmd/issues/659>: [java]
MissingBreakInSwitch - last default case does not contain a break
o #1005 <https://github.com/pmd/pmd/issues/1005>: [java]
CloneMethodMustImplementCloneable triggers for interfaces
o #1669 <https://github.com/pmd/pmd/issues/1669>: [java]
NullAssignment - FP with ternay and null as constructor argument
o #1899 <https://github.com/pmd/pmd/issues/1899>: [java] Recognize
@SuppressWanings("fallthrough") for MissingBreakInSwitch
o #2320 <https://github.com/pmd/pmd/issues/2320>: [java]
NullAssignment - FP with ternary and null as method argument
o #2532 <https://github.com/pmd/pmd/issues/2532>: [java]
AvoidDecimalLiteralsInBigDecimalConstructor can not detect the
case |new BigDecimal(Expression)|
o #2579 <https://github.com/pmd/pmd/issues/2579>: [java]
MissingBreakInSwitch detects the lack of break in the last case
o #2880 <https://github.com/pmd/pmd/issues/2880>: [java]
CompareObjectsWithEquals - false negative with type res
o #2893 <https://github.com/pmd/pmd/issues/2893>: [java] Remove
special cases from rule EmptyCatchBlock
o #2894 <https://github.com/pmd/pmd/issues/2894>: [java] Improve
MissingBreakInSwitch
o #3071 <https://github.com/pmd/pmd/issues/3071>: [java]
BrokenNullCheck FP with PMD 6.30.0
o #308...
[truncated message content] |