diff --git a/pmd-java/src/main/resources/rulesets/java/design.xml b/pmd-java/src/main/resources/rulesets/java/design.xml index 56ac9b6fce..0fe5d0bf1c 100644 --- a/pmd-java/src/main/resources/rulesets/java/design.xml +++ b/pmd-java/src/main/resources/rulesets/java/design.xml @@ -1413,6 +1413,7 @@ public void doSomething() { since="3.4" message="Document empty constructor" class="net.sourceforge.pmd.lang.rule.XPathRule" + typeResolution="true" externalInfoUrl="${pmd.website.baseurl}/rules/java/design.html#UncommentedEmptyConstructor"> Uncommented Empty Constructor finds instances where a constructor does not @@ -1425,8 +1426,10 @@ and unintentional empty constructors. +//ConstructorDeclaration[@Private='false'] + [count(BlockStatement) = 0 and ($ignoreExplicitConstructorInvocation = 'true' or not(ExplicitConstructorInvocation)) and @containsComment = 'false'] + [not(../Annotation/MarkerAnnotation/Name[typeof(@Image, 'javax.inject.Inject', 'Inject')])] +]]> diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/UncommentedEmptyConstructor.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/UncommentedEmptyConstructor.xml index 48bc28e55a..c598374200 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/UncommentedEmptyConstructor.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/UncommentedEmptyConstructor.xml @@ -170,4 +170,32 @@ public class WebAgent { } ]]> + + + #357 UncommentedEmptyConstructor consider annotations on Constructor + 0 + + + + + + #357 UncommentedEmptyConstructor consider fully qualified annotations on Constructor + 0 + + + diff --git a/src/site/markdown/overview/changelog.md b/src/site/markdown/overview/changelog.md index c5ad56c325..9217b32ccc 100644 --- a/src/site/markdown/overview/changelog.md +++ b/src/site/markdown/overview/changelog.md @@ -82,6 +82,9 @@ and include them to such reports. * The rule `UnnecessaryParentheses` (ruleset `java-controversial`) has been merged into `UselessParentheses` (ruleset `java-unnecessary`). The rule covers all scenarios previously covered by either rule. +* The rule `UncommentedEmptyConstructor` (ruleset `java-design`) will now ignore empty constructors annotated with + `javax.inject.Inject`. + #### Removed Rules * The deprecated rule `UseSingleton` has been removed from the ruleset `java-design`. The rule has been renamed @@ -126,6 +129,8 @@ All existing rules have been updated to reflect these changes. If you have custo * java-controversial * [#408](https://github.com/pmd/pmd/issues/408): \[java] DFA not analyzing asserts * [#537](https://github.com/pmd/pmd/issues/537): \[java] UnnecessaryParentheses fails to detect obvious scenario +* java-design + * [#357](https://github.com/pmd/pmd/issues/357): \[java] UncommentedEmptyConstructor consider annotations on Constructor * java-sunsecure * [#468](https://github.com/pmd/pmd/issues/468): \[java] ArrayIsStoredDirectly false positive * java-unusedcode @@ -173,5 +178,6 @@ All existing rules have been updated to reflect these changes. If you have custo * [#550](https://github.com/pmd/pmd/pull/550): \[java] Add basic resolution to type inference - [Bendegúz Nagy](https://github.com/WinterGrascph) * [#554](https://github.com/pmd/pmd/pull/554): \[java] Fix #537: UnnecessaryParentheses fails to detect obvious scenario - [Clément Fournier](https://github.com/oowekyala) * [#555](https://github.com/pmd/pmd/pull/555): \[java] Changed metrics/CyclomaticComplexityRule to use WMC when reporting classes - [Clément Fournier](https://github.com/oowekyala) +* [#556](https://github.com/pmd/pmd/pull/556): \[java] Fix #357: UncommentedEmptyConstructor consider annotations on Constructor - [Clément Fournier](https://github.com/oowekyala) * [#557](https://github.com/pmd/pmd/pull/557): \[java] Fix NPath metric not counting ternaries correctly - [Clément Fournier](https://github.com/oowekyala)