<li>Moved the two classes <ahref="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/cpd/impl/AntlrTokenizer.html#"><code>AntlrTokenizer</code></a> and <ahref="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/cpd/impl/JavaCCTokenizer.html#"><code>JavaCCTokenizer</code></a> from
<codeclass="language-plaintext highlighter-rouge">internal</code> package into package <ahref="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/cpd/impl/package-summary.html#"><code>net.sourceforge.pmd.cpd.impl</code></a>. These two classes are part of the API and
are base classes for CPD language implementations.</li>
<li><codeclass="language-plaintext highlighter-rouge">AntlrBaseRule</code> is gone in favor of <ahref="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/AbstractVisitorRule.html#"><code>AbstractVisitorRule</code></a>.</li>
<li>The classes <ahref="https://docs.pmd-code.org/apidocs/pmd-kotlin/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/kotlin/ast/KotlinInnerNode.html#"><code>KotlinInnerNode</code></a> and <ahref="https://docs.pmd-code.org/apidocs/pmd-swift/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/swift/ast/SwiftInnerNode.html#"><code>SwiftInnerNode</code></a>
<li>The parameter order of <ahref="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/FileCollector.html#addSourceFile(String,String)"><code>addSourceFile</code></a> has been swapped
in order to have the same meaning as in 6.55.0. That will make it easier if you upgrade from 6.55.0 to 7.0.0.
However, that means, that you need to change these method calls if you have migrated to 7.0.0-rc1 already.</li>
<li><ahref="pmd_rules_java_design.html#immutablefield"><codeclass="language-plaintext highlighter-rouge">ImmutableField</code></a>: the property <codeclass="language-plaintext highlighter-rouge">ignoredAnnotations</code> has been removed. The property was
<li><ahref="https://github.com/pmd/pmd/issues/4273">#4273</a>: [java] CommentDefaultAccessModifier ignoredAnnotations should include “org.junit.jupiter.api.extension.RegisterExtension” by default</li>
<li><ahref="https://github.com/pmd/pmd/issues/4487">#4487</a>: [java] UnnecessaryConstructor: false-positive with @<!---->Inject and @<!---->Autowired</li>
<li><ahref="https://github.com/pmd/pmd/issues/4449">#4449</a>: [java] AvoidAccessibilityAlteration: Possible false positive in AvoidAccessibilityAlteration rule when using Lambda expression</li>
<li><ahref="https://github.com/pmd/pmd/pull/4474">#4474</a>: [java] ImmutableField: False positive with lombok (fixes #4254) - <ahref="https://github.com/PimvanderLoos">Pim van der Loos</a> (@PimvanderLoos)</li>
<li><ahref="https://github.com/pmd/pmd/pull/4488">#4488</a>: [java] Fix #4477: A false-positive about SignatureDeclareThrowsException - <ahref="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
<li><ahref="https://github.com/pmd/pmd/pull/4494">#4494</a>: [java] Fix #4487: A false-positive about UnnecessaryConstructor and @<!---->Inject and @<!---->Autowired - <ahref="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
<li><ahref="https://github.com/pmd/pmd/pull/4495">#4495</a>: [java] Fix #4493: false-positive about MissingStaticMethodInNonInstantiatableClass and @<!---->Inject - <ahref="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
<h4id="revamped-command-line-interface">Revamped Command Line Interface</h4>
<ul>
<li>unified and consistent Command Line Interface for both Linux/Unix and Windows across our different utilities</li>
<li>single script <codeclass="language-plaintext highlighter-rouge">pmd</code> (<codeclass="language-plaintext highlighter-rouge">pmd.bat</code> for Windows) to launch the different utilities:
<ul>
<li><codeclass="language-plaintext highlighter-rouge">pmd check</code> to run PMD rules and analyze a project</li>
<li><codeclass="language-plaintext highlighter-rouge">pmd cpd</code> to run CPD (copy paste detector)</li>
<li><codeclass="language-plaintext highlighter-rouge">pmd designer</code> to run the PMD Rule Designer</li>
</ul>
</li>
<li>progress bar support for <codeclass="language-plaintext highlighter-rouge">pmd check</code></li>
<li>latest version supports ES6 and also some new constructs (see <ahref="https://github.com/mozilla/rhino">Rhino</a>])</li>
<li>comments are retained</li>
</ul>
<h4id="changed-language-versions">Changed: Language versions</h4>
<ul>
<li>more predefined language versions for each supported language</li>
<li>can be used to limit rule execution for specific versions only with <codeclass="language-plaintext highlighter-rouge">minimumLanguageVersion</code> and
<h3id="-new-and-changed-rules">🌟 New and changed rules</h3>
<h4id="new-rules">New Rules</h4>
<p><strong>Apex</strong></p>
<ul>
<li><ahref="pmd_rules_apex_design.html#unusedmethod"><codeclass="language-plaintext highlighter-rouge">UnusedMethod</code></a> finds unused methods in your code.</li>
</ul>
<p><strong>Java</strong></p>
<ul>
<li><ahref="pmd_rules_java_codestyle.html#unnecessaryboxing"><codeclass="language-plaintext highlighter-rouge">UnnecessaryBoxing</code></a> reports boxing and unboxing conversions that may be made implicit.</li>
<li><ahref="pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname"><codeclass="language-plaintext highlighter-rouge">UnnecessaryFullyQualifiedName</code></a>: 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.</li>
<li><ahref="pmd_rules_java_codestyle.html#uselessparentheses"><codeclass="language-plaintext highlighter-rouge">UselessParentheses</code></a>: the rule has two new properties which control how strict
the rule should be applied. With <codeclass="language-plaintext highlighter-rouge">ignoreClarifying</code> (default: true) parentheses that are strictly speaking
not necessary are allowed, if they separate expressions of different precedence.
The other property <codeclass="language-plaintext highlighter-rouge">ignoreBalancing</code> (default: true) is similar, in that it allows parentheses that help
reading and understanding the expressions.</li>
<li><ahref="pmd_rules_java_bestpractices.html#loosecoupling"><codeclass="language-plaintext highlighter-rouge">LooseCoupling</code></a>: the rule has a new property to allow some types to be coupled
to (<codeclass="language-plaintext highlighter-rouge">allowedTypes</code>).</li>
<li><ahref="pmd_rules_java_errorprone.html#emptycatchblock"><codeclass="language-plaintext highlighter-rouge">EmptyCatchBlock</code></a>: <codeclass="language-plaintext highlighter-rouge">CloneNotSupportedException</code> and <codeclass="language-plaintext highlighter-rouge">InterruptedException</code> are not
special-cased anymore. Rename the exception parameter to <codeclass="language-plaintext highlighter-rouge">ignored</code> to ignore them.</li>
<li><ahref="pmd_rules_java_errorprone.html#dontimportsun"><codeclass="language-plaintext highlighter-rouge">DontImportSun</code></a>: <codeclass="language-plaintext highlighter-rouge">sun.misc.Signal</code> is not special-cased anymore.</li>
<li><ahref="pmd_rules_java_codestyle.html#usediamondoperator"><codeclass="language-plaintext highlighter-rouge">UseDiamondOperator</code></a>: the property <codeclass="language-plaintext highlighter-rouge">java7Compatibility</code> is removed. The rule now
handles Java 7 properly without a property.</li>
<li><ahref="pmd_rules_java_design.html#singularfield"><codeclass="language-plaintext highlighter-rouge">SingularField</code></a>: Properties <codeclass="language-plaintext highlighter-rouge">checkInnerClasses</code> and <codeclass="language-plaintext highlighter-rouge">disallowNotAssignment</code> are removed.
The rule is now more precise and will check these cases properly.</li>
<li><ahref="pmd_rules_java_design.html#useutilityclass"><codeclass="language-plaintext highlighter-rouge">UseUtilityClass</code></a>: The property <codeclass="language-plaintext highlighter-rouge">ignoredAnnotations</code> has been removed.</li>
<li><ahref="pmd_rules_java_design.html#lawofdemeter"><codeclass="language-plaintext highlighter-rouge">LawOfDemeter</code></a>: the rule has a new property <codeclass="language-plaintext highlighter-rouge">trustRadius</code>. This defines the maximum degree
of trusted data. The default of 1 is the most restrictive.</li>
<li><ahref="pmd_rules_java_documentation.html#commentcontent"><codeclass="language-plaintext highlighter-rouge">CommentContent</code></a>: The properties <codeclass="language-plaintext highlighter-rouge">caseSensitive</code> and <codeclass="language-plaintext highlighter-rouge">disallowedTerms</code> are removed. The
new property <codeclass="language-plaintext highlighter-rouge">fobiddenRegex</code> can be used now to define the disallowed terms with a single regular
<li><ahref="pmd_rules_java_design.html#immutablefield"><codeclass="language-plaintext highlighter-rouge">ImmutableField</code></a>: the property <codeclass="language-plaintext highlighter-rouge">ignoredAnnotations</code> has been removed. The property was
<p>Many rules, that were previously deprecated have been finally removed.
See <ahref="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a> for the complete list.</p>
<h3id="-api">🚨 API</h3>
<p>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.</p>
<p>Also, there are some improvement and changes in different areas. For the detailed description
of the changes listed here, see <ahref="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a>.</p>
<ul>
<li>Miscellaneous smaller changes and cleanups</li>
<li>XPath 3.1 support for XPath-based rules</li>
<li>Node stream API for AST traversal</li>
<li>Metrics framework</li>
<li>Testing framework</li>
<li>Language Lifecycle and Language Properties</li>
</ul>
<h3id="-compatibility-and-migration-notes">💥 Compatibility and migration notes</h3>
<p>See <ahref="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a>.</p>
<h3id="-fixed-issues">🐛 Fixed Issues</h3>
<ul>
<li>miscellaneous
<ul>
<li><ahref="https://github.com/pmd/pmd/issues/881">#881</a>: [all] Breaking API changes for 7.0.0</li>
<li><ahref="https://github.com/pmd/pmd/issues/896">#896</a>: [all] Use slf4j</li>
<li><ahref="https://github.com/pmd/pmd/pull/1431">#1431</a>: [ui] Remove old GUI applications (designerold, bgastviewer)</li>
<li><ahref="https://github.com/pmd/pmd/issues/1451">#1451</a>: [core] RulesetFactoryCompatibility stores the whole ruleset file in memory as a string</li>
<li><ahref="https://github.com/pmd/pmd/issues/2496">#2496</a>: Update PMD 7 Logo on landing page</li>
<li><ahref="https://github.com/pmd/pmd/issues/2497">#2497</a>: PMD 7 Logo page</li>
<li><ahref="https://github.com/pmd/pmd/issues/2498">#2498</a>: Update PMD 7 Logo in documentation</li>
<li><ahref="https://github.com/pmd/pmd/issues/3797">#3797</a>: [all] Use JUnit5</li>
<li><ahref="https://github.com/pmd/pmd/issues/2218">#2218</a>: [core] <codeclass="language-plaintext highlighter-rouge">isFindBoundary</code> should not be an attribute</li>
<li><ahref="https://github.com/pmd/pmd/issues/2234">#2234</a>: [core] Consolidate PMD CLI into a single command</li>
<li><ahref="https://github.com/pmd/pmd/issues/2667">#2667</a>: [apex] Integrate nawforce/ApexLink to build robust Unused rule</li>
</ul>
</li>
<li>java
<ul>
<li><ahref="https://github.com/pmd/pmd/issues/520">#520</a>: [java] Allow <codeclass="language-plaintext highlighter-rouge">@SuppressWarnings</code> with constants instead of literals</li>
<li><ahref="https://github.com/pmd/pmd/issues/864">#864</a>: [java] Similar/duplicated implementations for determining FQCN</li>
<li><ahref="https://github.com/pmd/pmd/issues/905">#905</a>: [java] Add new node for anonymous class declaration</li>
<li><ahref="https://github.com/pmd/pmd/issues/910">#910</a>: [java] AST inconsistency between primitive and reference type arrays</li>
<li><ahref="https://github.com/pmd/pmd/issues/997">#997</a>: [java] Java8 parsing corner case with annotated array types</li>
<li><ahref="https://github.com/pmd/pmd/issues/998">#998</a>: [java] AST inconsistencies around FormalParameter</li>
<li><ahref="https://github.com/pmd/pmd/issues/1019">#1019</a>: [java] Breaking Java Grammar changes for PMD 7.0.0</li>
<li><ahref="https://github.com/pmd/pmd/issues/1124">#1124</a>: [java] ImmutableList implementation in the qname codebase</li>
<li><ahref="https://github.com/pmd/pmd/issues/3642">#3642</a>: [java] Parse error on rare extra dimensions on method return type on annotation methods</li>
<li><ahref="https://github.com/pmd/pmd/issues/342">#342</a>: [java] AccessorMethodGeneration: Name clash with another public field not properly handled</li>
<li><ahref="https://github.com/pmd/pmd/issues/755">#755</a>: [java] AccessorClassGeneration false positive for private constructors</li>
<li><ahref="https://github.com/pmd/pmd/issues/770">#770</a>: [java] UnusedPrivateMethod yields false positive for counter-variant arguments</li>
<li><ahref="https://github.com/pmd/pmd/issues/807">#807</a>: [java] AccessorMethodGeneration false positive with overloads</li>
<li><ahref="https://github.com/pmd/pmd/issues/833">#833</a>: [java] ForLoopCanBeForeach should consider iterating on this</li>
<li><ahref="https://github.com/pmd/pmd/issues/1189">#1189</a>: [java] UnusedPrivateMethod false positive from inner class via external class</li>
<li><ahref="https://github.com/pmd/pmd/issues/1455">#1455</a>: [java] JUnitTestsShouldIncludeAssert: False positives for assert methods named “check” and “verify”</li>
<li><ahref="https://github.com/pmd/pmd/issues/1969">#1969</a>: [java] MissingOverride false-positive triggered by package-private method overwritten in another package by extending class</li>
<li><ahref="https://github.com/pmd/pmd/issues/2130">#2130</a>: [java] UnusedLocalVariable: false-negative with array</li>
<li><ahref="https://github.com/pmd/pmd/issues/2147">#2147</a>: [java] JUnitTestsShouldIncludeAssert - false positives with lambdas and static methods</li>
<li><ahref="https://github.com/pmd/pmd/issues/2464">#2464</a>: [java] LooseCoupling must ignore class literals: ArrayList.class</li>
<li><ahref="https://github.com/pmd/pmd/issues/2542">#2542</a>: [java] UseCollectionIsEmpty can not detect the case <codeclass="language-plaintext highlighter-rouge">foo.bar().size()</code></li>
<li><ahref="https://github.com/pmd/pmd/issues/2650">#2650</a>: [java] UseTryWithResources false positive when AutoCloseable helper used</li>
<li><ahref="https://github.com/pmd/pmd/issues/2796">#2796</a>: [java] UnusedAssignment false positive with call chains</li>
<li><ahref="https://github.com/pmd/pmd/issues/2806">#2806</a>: [java] SwitchStmtsShouldHaveDefault false-positive with Java 14 switch non-fallthrough branches</li>
<li><ahref="https://github.com/pmd/pmd/issues/2822">#2822</a>: [java] LooseCoupling rule: Extend to cover user defined implementations and interfaces</li>
<li><ahref="https://github.com/pmd/pmd/pull/2843">#2843</a>: [java] Fix UnusedAssignment FP with field accesses</li>
<li><ahref="https://github.com/pmd/pmd/issues/2882">#2882</a>: [java] UseTryWithResources - false negative for explicit close</li>
<li><ahref="https://github.com/pmd/pmd/issues/2883">#2883</a>: [java] JUnitAssertionsShouldIncludeMessage false positive with method call</li>
<li><ahref="https://github.com/pmd/pmd/issues/2890">#2890</a>: [java] UnusedPrivateMethod false positive with generics</li>
<li><ahref="https://github.com/pmd/pmd/issues/2946">#2946</a>: [java] SwitchStmtsShouldHaveDefault false positive on enum inside enums</li>
<li><ahref="https://github.com/pmd/pmd/pull/3672">#3672</a>: [java] LooseCoupling - fix false positive with generics</li>
<li><ahref="https://github.com/pmd/pmd/pull/3675">#3675</a>: [java] MissingOverride - fix false positive with mixing type vars</li>
<li><ahref="https://github.com/pmd/pmd/issues/3858">#3858</a>: [java] UseCollectionIsEmpty should infer local variable type from method invocation</li>
<li><ahref="https://github.com/pmd/pmd/issues/1673">#1673</a>: [java] UselessParentheses false positive with conditional operator</li>
<li><ahref="https://github.com/pmd/pmd/issues/1790">#1790</a>: [java] UnnecessaryFullyQualifiedName false positive with enum constant</li>
<li><ahref="https://github.com/pmd/pmd/issues/1918">#1918</a>: [java] UselessParentheses false positive with boolean operators</li>
<li><ahref="https://github.com/pmd/pmd/issues/2134">#2134</a>: [java] PreserveStackTrace not handling <codeclass="language-plaintext highlighter-rouge">Throwable.addSuppressed(...)</code></li>
<li><ahref="https://github.com/pmd/pmd/issues/2299">#2299</a>: [java] UnnecessaryFullyQualifiedName false positive with similar package name</li>
<li><ahref="https://github.com/pmd/pmd/issues/2391">#2391</a>: [java] UseDiamondOperator FP when expected type and constructed type have a different parameterization</li>
<li><ahref="https://github.com/pmd/pmd/issues/2528">#2528</a>: [java] MethodNamingConventions - JUnit 5 method naming not support ParameterizedTest</li>
<li><ahref="https://github.com/pmd/pmd/issues/2739">#2739</a>: [java] UselessParentheses false positive for string concatenation</li>
<li><ahref="https://github.com/pmd/pmd/issues/2748">#2748</a>: [java] UnnecessaryCast false positive with unchecked cast</li>
<li><ahref="https://github.com/pmd/pmd/issues/2973">#2973</a>: [java] New rule: UnnecessaryBoxing</li>
<li><ahref="https://github.com/pmd/pmd/pull/3195">#3195</a>: [java] Improve rule UnnecessaryReturn to detect more cases</li>
<li><ahref="https://github.com/pmd/pmd/pull/3218">#3218</a>: [java] Generalize UnnecessaryCast to flag all unnecessary casts</li>
<li><ahref="https://github.com/pmd/pmd/issues/3221">#3221</a>: [java] PrematureDeclaration false positive for unused variables</li>
<li><ahref="https://github.com/pmd/pmd/issues/3238">#3238</a>: [java] Improve ExprContext, fix FNs of UnnecessaryCast</li>
<li><ahref="https://github.com/pmd/pmd/pull/3500">#3500</a>: [java] UnnecessaryBoxing - check for Integer.valueOf(String) calls</li>
<li><ahref="https://github.com/pmd/pmd/issues/4273">#4273</a>: [java] CommentDefaultAccessModifier ignoredAnnotations should include “org.junit.jupiter.api.extension.RegisterExtension” by default</li>
<li><ahref="https://github.com/pmd/pmd/issues/4487">#4487</a>: [java] UnnecessaryConstructor: false-positive with @<!---->Inject and @<!---->Autowired</li>
<li><ahref="https://github.com/pmd/pmd/issues/2175">#2175</a>: [java] LawOfDemeter: False positive for chained methods with generic method call</li>
<li><ahref="https://github.com/pmd/pmd/issues/2179">#2179</a>: [java] LawOfDemeter: False positive with static property access - should treat class-level property as global object, not dot-accessed property</li>
<li><ahref="https://github.com/pmd/pmd/issues/2180">#2180</a>: [java] LawOfDemeter: False positive with Thread and ThreadLocalRandom</li>
<li><ahref="https://github.com/pmd/pmd/issues/2182">#2182</a>: [java] LawOfDemeter: False positive with package-private access</li>
<li><ahref="https://github.com/pmd/pmd/issues/2188">#2188</a>: [java] LawOfDemeter: False positive with fields assigned to local vars</li>
<li><ahref="https://github.com/pmd/pmd/issues/2320">#2320</a>: [java] NullAssignment - FP with ternary and null as method argument</li>
<li><ahref="https://github.com/pmd/pmd/issues/2532">#2532</a>: [java] AvoidDecimalLiteralsInBigDecimalConstructor can not detect the case <codeclass="language-plaintext highlighter-rouge">new BigDecimal(Expression)</code></li>
<li><ahref="https://github.com/pmd/pmd/issues/2579">#2579</a>: [java] MissingBreakInSwitch detects the lack of break in the last case</li>
<li><ahref="https://github.com/pmd/pmd/issues/2880">#2880</a>: [java] CompareObjectsWithEquals - false negative with type res</li>
<li><ahref="https://github.com/pmd/pmd/issues/2893">#2893</a>: [java] Remove special cases from rule EmptyCatchBlock</li>
<li><ahref="https://github.com/pmd/pmd/issues/4449">#4449</a>: [java] AvoidAccessibilityAlteration: Possible false positive in AvoidAccessibilityAlteration rule when using Lambda expression</li>
<li><ahref="https://github.com/pmd/pmd/issues/2537">#2537</a>: [java] DontCallThreadRun can’t detect the case that call run() in <codeclass="language-plaintext highlighter-rouge">this.run()</code></li>
<li><ahref="https://github.com/pmd/pmd/issues/2538">#2538</a>: [java] DontCallThreadRun can’t detect the case that call run() in <codeclass="language-plaintext highlighter-rouge">foo.bar.run()</code></li>
<li><ahref="https://github.com/pmd/pmd/issues/2577">#2577</a>: [java] UseNotifyAllInsteadOfNotify falsely detect a special case with argument: <codeclass="language-plaintext highlighter-rouge">foo.notify(bar)</code></li>
<li><ahref="https://github.com/pmd/pmd/pull/1658">#1658</a>: [core] Node support for Antlr-based languages - <ahref="https://github.com/matifraga">Matías Fraga</a> (@matifraga)</li>
<li><ahref="https://github.com/pmd/pmd/pull/1698">#1698</a>: [core] [swift] Antlr Base Parser adapter and Swift Implementation - <ahref="https://github.com/lsoncini">Lucas Soncini</a> (@lsoncini)</li>
<li><ahref="https://github.com/pmd/pmd/pull/1882">#1882</a>: [swift] UnavailableFunction Swift rule - <ahref="https://github.com/tomidelucca">Tomás de Lucca</a> (@tomidelucca)</li>
<li><ahref="https://github.com/pmd/pmd/pull/4402">#4402</a>: [javascript] CPD: add support for Typescript using antlr4 grammar - <ahref="https://github.com/pguyot">Paul Guyot</a> (@pguyot)</li>
<li><ahref="https://github.com/pmd/pmd/pull/4474">#4474</a>: [java] ImmutableField: False positive with lombok (fixes #4254) - <ahref="https://github.com/PimvanderLoos">Pim van der Loos</a> (@PimvanderLoos)</li>
<li><ahref="https://github.com/pmd/pmd/pull/4488">#4488</a>: [java] Fix #4477: A false-positive about SignatureDeclareThrowsException - <ahref="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
<li><ahref="https://github.com/pmd/pmd/pull/4494">#4494</a>: [java] Fix #4487: A false-positive about UnnecessaryConstructor and @<!---->Inject and @<!---->Autowired - <ahref="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
<li><ahref="https://github.com/pmd/pmd/pull/4495">#4495</a>: [java] Fix #4493: false-positive about MissingStaticMethodInNonInstantiatableClass and @<!---->Inject - <ahref="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>