From 4214a75fc4cef339b212454fa22f24fb82963c17 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 24 Nov 2017 20:13:20 +0100 Subject: [PATCH 1/5] [core] Add bean-like getter/setter for Rule --- .../main/java/net/sourceforge/pmd/Rule.java | 79 ++++++++++++++++--- .../java/net/sourceforge/pmd/RuleSet.java | 8 +- .../net/sourceforge/pmd/RuleSetWriter.java | 4 +- .../pmd/cache/AbstractAnalysisCache.java | 2 +- .../pmd/lang/rule/AbstractDelegateRule.java | 56 +++++++++++-- .../pmd/lang/rule/AbstractRule.java | 60 +++++++++++--- .../lang/rule/AbstractRuleChainVisitor.java | 2 +- .../sourceforge/pmd/rules/RuleBuilder.java | 14 +--- .../sourceforge/pmd/RuleSetFactoryTest.java | 4 +- .../java/net/sourceforge/pmd/RuleSetTest.java | 4 +- .../pmd/cache/FileAnalysisCacheTest.java | 4 +- .../pmd/testframework/RuleTstTest.java | 8 +- 12 files changed, 184 insertions(+), 61 deletions(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java b/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java index dfaa672013..f0a2760a2c 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java @@ -257,53 +257,106 @@ public interface Rule extends PropertySource { /** * Sets whether this Rule uses Data Flow Analysis. + * @deprecated Use {@link #setDfa(boolean)} instead. */ - // FUTURE Use JavaBean conventions for boolean attributes + @Deprecated // To be removed in PMD 7.0.0 void setUsesDFA(); + /** + * Sets whether this Rule uses Data Flow Analysis. + */ + void setDfa(boolean isDfa); + + /** + * Gets whether this Rule uses Data Flow Analysis. + * + * @return true if Data Flow Analysis is used. + * @deprecated Use {@link #isDfa()} instead. + */ + @Deprecated // To be removed in PMD 7.0.0 + boolean usesDFA(); + /** * Gets whether this Rule uses Data Flow Analysis. * * @return true if Data Flow Analysis is used. */ - // FUTURE Use JavaBean conventions for boolean attributes - boolean usesDFA(); + boolean isDfa(); + + /** + * Sets whether this Rule uses Type Resolution. + * @deprecated Use {@link #setTypeResolution(boolean)} instead. + */ + @Deprecated // To be removed in PMD 7.0.0 + void setUsesTypeResolution(); /** * Sets whether this Rule uses Type Resolution. */ - // FUTURE Use JavaBean conventions for boolean attributes - void setUsesTypeResolution(); + void setTypeResolution(boolean usingTypeResolution); + + /** + * Gets whether this Rule uses Type Resolution. + * + * @return true if Type Resolution is used. + * + * @deprecated Use {@link #isTypeResolution()} instead + */ + @Deprecated // To be removed in PMD 7.0.0 + boolean usesTypeResolution(); /** * Gets whether this Rule uses Type Resolution. * * @return true if Type Resolution is used. */ - // FUTURE Use JavaBean conventions for boolean attributes - boolean usesTypeResolution(); + boolean isTypeResolution(); + + /** + * Sets whether this Rule uses multi-file analysis. + * @deprecated use {@link #setMultifile(boolean)} instead. + */ + @Deprecated // To be removed in PMD 7.0.0 + void setUsesMultifile(); /** * Sets whether this Rule uses multi-file analysis. */ - // FUTURE Use JavaBean conventions for boolean attributes - void setUsesMultifile(); + void setMultifile(boolean multifile); + + /** + * Gets whether this Rule uses multi-file analysis. + * + * @return true if the multi file analysis is used. + * + * @deprecated Use {@link #isMultifile()} instead. + */ + @Deprecated // To be removed in PMD 7.0.0 + boolean usesMultifile(); /** * Gets whether this Rule uses multi-file analysis. * * @return true if the multi file analysis is used. */ - // FUTURE Use JavaBean conventions for boolean attributes - boolean usesMultifile(); + boolean isMultifile(); + + /** + * Gets whether this Rule uses the RuleChain. + * + * @return true if RuleChain is used. + * + * @deprecated USe {@link #isRuleChain()} instead. + */ + @Deprecated // To be removed in PMD 7.0.0 + boolean usesRuleChain(); /** * Gets whether this Rule uses the RuleChain. * * @return true if RuleChain is used. */ - // FUTURE Use JavaBean conventions for boolean attributes - boolean usesRuleChain(); + boolean isRuleChain(); /** * Gets the collection of AST node names visited by the Rule on the diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSet.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSet.java index bf3572e437..2d48338a6c 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSet.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSet.java @@ -498,7 +498,7 @@ public class RuleSet implements ChecksumAware { long start = System.nanoTime(); for (Rule rule : rules) { try { - if (!rule.usesRuleChain() && applies(rule, ctx.getLanguageVersion())) { + if (!rule.isRuleChain() && applies(rule, ctx.getLanguageVersion())) { rule.apply(acuList, ctx); long end = System.nanoTime(); Benchmarker.mark(Benchmark.Rule, rule.getName(), end - start, 1); @@ -609,7 +609,7 @@ public class RuleSet implements ChecksumAware { */ public boolean usesDFA(Language language) { for (Rule r : rules) { - if (r.getLanguage().equals(language) && r.usesDFA()) { + if (r.getLanguage().equals(language) && r.isDfa()) { return true; } } @@ -626,7 +626,7 @@ public class RuleSet implements ChecksumAware { */ public boolean usesTypeResolution(Language language) { for (Rule r : rules) { - if (r.getLanguage().equals(language) && r.usesTypeResolution()) { + if (r.getLanguage().equals(language) && r.isTypeResolution()) { return true; } } @@ -645,7 +645,7 @@ public class RuleSet implements ChecksumAware { */ public boolean usesMultifile(Language language) { for (Rule r : rules) { - if (r.getLanguage().equals(language) && r.usesMultifile()) { + if (r.getLanguage().equals(language) && r.isMultifile()) { return true; } } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetWriter.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetWriter.java index 5697db3f00..856ce4549f 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetWriter.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetWriter.java @@ -47,7 +47,7 @@ public class RuleSetWriter { /** * @deprecated use {@link #RULESET_2_0_0_NS_URI} instead */ - @Deprecated + @Deprecated // To be removed in PMD 7.0.0 public static final String RULESET_NS_URI = RULESET_2_0_0_NS_URI; private final OutputStream outputStream; @@ -196,7 +196,7 @@ public class RuleSetWriter { return createSingleRuleElement(rule instanceof ImmutableLanguage ? null : rule.getLanguage(), rule.getMinimumLanguageVersion(), rule.getMaximumLanguageVersion(), rule.isDeprecated(), rule.getName(), rule.getSince(), null, rule.getMessage(), rule.getExternalInfoUrl(), - rule.getRuleClass(), rule.usesDFA(), rule.usesTypeResolution(), rule.usesMultifile(), + rule.getRuleClass(), rule.isDfa(), rule.isTypeResolution(), rule.isMultifile(), rule.getDescription(), rule.getPriority(), rule.getPropertyDescriptors(), rule.getPropertiesByPropertyDescriptor(), rule.getExamples()); diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cache/AbstractAnalysisCache.java b/pmd-core/src/main/java/net/sourceforge/pmd/cache/AbstractAnalysisCache.java index 93269f25f4..66404e2d4d 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cache/AbstractAnalysisCache.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cache/AbstractAnalysisCache.java @@ -115,7 +115,7 @@ public abstract class AbstractAnalysisCache implements AnalysisCache { if (cacheIsValid && currentAuxClassPathChecksum != auxClassPathChecksum) { // Do we even care? for (final Rule r : ruleSets.getAllRules()) { - if (r.usesDFA() || r.usesTypeResolution()) { + if (r.isDfa() || r.isTypeResolution()) { LOG.info("Analysis cache invalidated, auxclasspath changed."); cacheIsValid = false; break; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractDelegateRule.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractDelegateRule.java index 93eea678b0..f607d03aa5 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractDelegateRule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractDelegateRule.java @@ -220,38 +220,80 @@ public abstract class AbstractDelegateRule implements Rule { } @Override + @Deprecated // To be removed in PMD 7.0.0 public void setUsesDFA() { - rule.setUsesDFA(); + rule.setDfa(true); } @Override + public void setDfa(boolean isDfa) { + rule.setDfa(isDfa); + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public boolean usesDFA() { - return rule.usesDFA(); + return rule.isDfa(); } @Override + public boolean isDfa() { + return rule.isDfa(); + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public void setUsesTypeResolution() { - rule.setUsesTypeResolution(); + rule.setTypeResolution(true); } @Override + public void setTypeResolution(boolean usingTypeResolution) { + rule.setTypeResolution(usingTypeResolution); + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public boolean usesTypeResolution() { - return rule.usesTypeResolution(); + return rule.isTypeResolution(); } @Override + public boolean isTypeResolution() { + return rule.isTypeResolution(); + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public void setUsesMultifile() { - rule.setUsesMultifile(); + rule.setMultifile(true); } @Override + public void setMultifile(boolean multifile) { + rule.setMultifile(multifile); + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public boolean usesMultifile() { - return rule.usesMultifile(); + return rule.isMultifile(); } @Override + public boolean isMultifile() { + return rule.isMultifile(); + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public boolean usesRuleChain() { - return rule.usesRuleChain(); + return rule.isRuleChain(); + } + + @Override + public boolean isRuleChain() { + return rule.isRuleChain(); } @Override diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRule.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRule.java index cb5b74eb5a..eb14359179 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRule.java @@ -229,37 +229,79 @@ public abstract class AbstractRule extends AbstractPropertySource implements Rul } @Override + @Deprecated // To be removed in PMD 7.0.0 public void setUsesDFA() { - usesDFA = true; + setDfa(true); } @Override + public void setDfa(boolean isDfa) { + usesDFA = isDfa; + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public boolean usesDFA() { + return isDfa(); + } + + @Override + public boolean isDfa() { return usesDFA; } @Override + @Deprecated // To be removed in PMD 7.0.0 public void setUsesTypeResolution() { - usesTypeResolution = true; + setTypeResolution(true); } @Override + public void setTypeResolution(boolean usingTypeResolution) { + usesTypeResolution = usingTypeResolution; + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public boolean usesTypeResolution() { + return isTypeResolution(); + } + + @Override + public boolean isTypeResolution() { return usesTypeResolution; } @Override + @Deprecated // To be removed in PMD 7.0.0 public void setUsesMultifile() { - usesMultifile = true; + setMultifile(true); } @Override + public void setMultifile(boolean multifile) { + usesMultifile = multifile; + } + + @Override + @Deprecated // To be removed in PMD 7.0.0 public boolean usesMultifile() { + return isMultifile(); + } + + @Override + public boolean isMultifile() { return usesMultifile; } @Override + @Deprecated // To be removed in PMD 7.0.0 public boolean usesRuleChain() { + return isRuleChain(); + } + + @Override + public boolean isRuleChain() { return !getRuleChainVisits().isEmpty(); } @@ -407,15 +449,9 @@ public abstract class AbstractRule extends AbstractPropertySource implements Rul rule.setMessage(getMessage()); rule.setRuleSetName(getRuleSetName()); rule.setExternalInfoUrl(getExternalInfoUrl()); - if (usesDFA()) { - rule.setUsesDFA(); - } - if (usesTypeResolution()) { - rule.setUsesTypeResolution(); - } - if (usesMultifile()) { - rule.setUsesMultifile(); - } + rule.setDfa(isDfa()); + rule.setTypeResolution(isTypeResolution()); + rule.setMultifile(isMultifile()); rule.setDescription(getDescription()); for (final String example : getExamples()) { rule.addExample(example); diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleChainVisitor.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleChainVisitor.java index 176e1f7c35..a95592cc24 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleChainVisitor.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleChainVisitor.java @@ -138,7 +138,7 @@ public abstract class AbstractRuleChainVisitor implements RuleChainVisitor { Map.Entry> entry = entryIterator.next(); for (Iterator ruleIterator = entry.getValue().iterator(); ruleIterator.hasNext();) { Rule rule = ruleIterator.next(); - if (rule.usesRuleChain()) { + if (rule.isRuleChain()) { visitedNodes.addAll(rule.getRuleChainVisits()); } else { // Drop rules which do not participate in the rule chain. diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleBuilder.java b/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleBuilder.java index 85ded58a95..68706306c7 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleBuilder.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleBuilder.java @@ -197,17 +197,9 @@ import net.sourceforge.pmd.properties.PropertyDescriptor; rule.addExample(example); } - if (isUsesDfa) { - rule.setUsesDFA(); - } - - if (isUsesMultifile) { - rule.setUsesMultifile(); - } - - if (isUsesTyperesolution) { - rule.setUsesTypeResolution(); - } + rule.setDfa(isUsesDfa); + rule.setMultifile(isUsesMultifile); + rule.setTypeResolution(isUsesTyperesolution); for (PropertyDescriptor descriptor : definedProperties) { if (!rule.getPropertyDescriptors().contains(descriptor)) { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java index 99e152a4e3..a4ab4557f9 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java @@ -249,12 +249,12 @@ public class RuleSetFactoryTest { @Test public void testFacadesOffByDefault() throws RuleSetNotFoundException { Rule r = loadFirstRule(XPATH); - assertFalse(r.usesDFA()); + assertFalse(r.isDfa()); } @Test public void testDFAFlag() throws RuleSetNotFoundException { - assertTrue(loadFirstRule(DFA).usesDFA()); + assertTrue(loadFirstRule(DFA).isDfa()); } @Test diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetTest.java index 831fa44691..7260e089c3 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetTest.java @@ -63,7 +63,7 @@ public class RuleSetTest { public void testIncludesRuleWithDFA() { MockRule mock = new MockRule("name", "desc", "msg", "rulesetname"); mock.setLanguage(LanguageRegistry.getLanguage(DummyLanguageModule.NAME)); - mock.setUsesDFA(); + mock.setDfa(true); RuleSet rs = new RuleSetFactory().createSingleRuleRuleSet(mock); assertTrue(rs.usesDFA(LanguageRegistry.getLanguage(DummyLanguageModule.NAME))); } @@ -416,7 +416,7 @@ public class RuleSetTest { rule.setName("FooRule1"); rule.setLanguage(LanguageRegistry.getLanguage(DummyLanguageModule.NAME)); rule.addRuleChainVisit("dummyNode"); - assertTrue("RuleChain rule", rule.usesRuleChain()); + assertTrue("RuleChain rule", rule.isRuleChain()); RuleSet ruleSet1 = createRuleSetBuilder("RuleSet1") .addRule(rule) .build(); diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/cache/FileAnalysisCacheTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/cache/FileAnalysisCacheTest.java index f67c0a9f6a..74eb20abd0 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/cache/FileAnalysisCacheTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/cache/FileAnalysisCacheTest.java @@ -169,7 +169,7 @@ public class FileAnalysisCacheTest { Files.write(Paths.get(classpathFile.getAbsolutePath()), "some text".getBytes()); final net.sourceforge.pmd.Rule r = mock(net.sourceforge.pmd.Rule.class); - when(r.usesDFA()).thenReturn(true); + when(r.isDfa()).thenReturn(true); when(rs.getAllRules()).thenReturn(Collections.singleton(r)); reloadedCache.checkValidity(rs, cl); assertFalse("Cache believes unmodified file is up to date after auxclasspath changed", @@ -185,7 +185,7 @@ public class FileAnalysisCacheTest { when(cl.getURLs()).thenReturn(new URL[] { classpathFile.toURI().toURL(), }); final net.sourceforge.pmd.Rule r = mock(net.sourceforge.pmd.Rule.class); - when(r.usesDFA()).thenReturn(true); + when(r.isDfa()).thenReturn(true); when(rs.getAllRules()).thenReturn(Collections.singleton(r)); setupCacheWithFiles(newCacheFile, rs, cl, sourceFile); diff --git a/pmd-test/src/test/java/net/sourceforge/pmd/testframework/RuleTstTest.java b/pmd-test/src/test/java/net/sourceforge/pmd/testframework/RuleTstTest.java index ae83bc9bfa..3c8a43eaaa 100644 --- a/pmd-test/src/test/java/net/sourceforge/pmd/testframework/RuleTstTest.java +++ b/pmd-test/src/test/java/net/sourceforge/pmd/testframework/RuleTstTest.java @@ -37,10 +37,10 @@ public class RuleTstTest { verify(rule).start(any(RuleContext.class)); verify(rule).end(any(RuleContext.class)); verify(rule, times(5)).getLanguage(); - verify(rule).usesDFA(); - verify(rule).usesTypeResolution(); - verify(rule).usesMultifile(); - verify(rule, times(2)).usesRuleChain(); + verify(rule).isDfa(); + verify(rule).isTypeResolution(); + verify(rule).isMultifile(); + verify(rule, times(2)).isRuleChain(); verify(rule).getMinimumLanguageVersion(); verify(rule).getMaximumLanguageVersion(); verify(rule).apply(anyList(), any(RuleContext.class)); From fa1e16fcf81ec94fd5c3fad99611990fbdc16819 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 24 Nov 2017 20:15:58 +0100 Subject: [PATCH 2/5] [java] Remove FUTURE comment from AccessNode --- .../main/java/net/sourceforge/pmd/lang/java/ast/AccessNode.java | 1 - 1 file changed, 1 deletion(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AccessNode.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AccessNode.java index 6fb95bbfdf..1f233512df 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AccessNode.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AccessNode.java @@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.java.ast; import net.sourceforge.pmd.lang.ast.Node; -// FUTURE Remove non JavaBean setters /** * This interface captures Java access modifiers. */ From b879e76d8ba0e6fbef376dab88e120f1f5747ade Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 24 Nov 2017 20:21:12 +0100 Subject: [PATCH 3/5] Update release notes --- TODO-6-0-0.md | 14 -------------- docs/pages/release_notes.md | 10 ++++++++++ 2 files changed, 10 insertions(+), 14 deletions(-) delete mode 100644 TODO-6-0-0.md diff --git a/TODO-6-0-0.md b/TODO-6-0-0.md deleted file mode 100644 index 090a37036b..0000000000 --- a/TODO-6-0-0.md +++ /dev/null @@ -1,14 +0,0 @@ -# TODO for 6.0.0 - -* pmd-core/src/main/java/net/sourceforge/pmd/Rule.java: - Make use of java bean naming conventions for getters/setters/booleans - -# Documentation need - -* Document ruleset dtd - -> need to add "metrics" attribute - - -# Rules - -* EmptyCatchBlock: By default ignore "ignored|expected" exception names diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 2c8b48cd74..35de6eba4a 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -463,6 +463,16 @@ a warning will now be produced suggesting users to adopt it for better performan * `net.sourceforge.pmd.util.viewer.model.ViewerModelListener` * `net.sourceforge.pmd.util.viewer.util.NLS` +* The following methods in `net.sourceforge.pmd.Rule` have been deprecated and will be removed in PMD 7.0.0. + All methods are replaced by their bean-like counterparts + * `void setUsesDFA()`. Use `void setDfa(boolean)` instead. + * `boolean usesDFA()`. Use `boolean isDfa()` instead. + * `void setUsesTypeResolution()`. Use `void setTypeResolution(boolean)` instead. + * `boolean usesTypeResolution()`. Use `boolean isTypeResolution()` instead. + * `void setUsesMultifile()`. Use `void setMultifile(boolean)` instead. + * `boolean usesMultifile()`. Use `boolean isMultifile()` instead. + * `boolean usesRuleChain()`. Use `boolean isRuleChain()` instead. + ### External Contributions * [#287](https://github.com/pmd/pmd/pull/287): \[apex] Make Rule suppression work - [Robert Sösemann](https://github.com/up2go-rsoesemann) From 08b018274c34fa1c82d9709cf1df01f21d5080fb Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 24 Nov 2017 20:45:13 +0100 Subject: [PATCH 4/5] [core] Fix rule loading - only override the flags, if they are true Avoid disabling type resolution --- .../java/net/sourceforge/pmd/rules/RuleBuilder.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleBuilder.java b/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleBuilder.java index 68706306c7..99063e45ca 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleBuilder.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleBuilder.java @@ -197,9 +197,15 @@ import net.sourceforge.pmd.properties.PropertyDescriptor; rule.addExample(example); } - rule.setDfa(isUsesDfa); - rule.setMultifile(isUsesMultifile); - rule.setTypeResolution(isUsesTyperesolution); + if (isUsesDfa) { + rule.setDfa(isUsesDfa); + } + if (isUsesMultifile) { + rule.setMultifile(isUsesMultifile); + } + if (isUsesTyperesolution) { + rule.setTypeResolution(isUsesTyperesolution); + } for (PropertyDescriptor descriptor : definedProperties) { if (!rule.getPropertyDescriptors().contains(descriptor)) { From 456432ad6f7a7df34deded6303a4cce4345265f1 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 24 Nov 2017 20:48:02 +0100 Subject: [PATCH 5/5] Resolve deprecated usages --- .../net/sourceforge/pmd/lang/java/dfa/JavaDFAGraphRule.java | 2 +- .../net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java | 2 +- .../net/sourceforge/pmd/lang/plsql/dfa/DFAPLSQLGraphRule.java | 3 +-- .../net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/dfa/JavaDFAGraphRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/dfa/JavaDFAGraphRule.java index 7ab1ea5cd5..4a3eec562c 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/dfa/JavaDFAGraphRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/dfa/JavaDFAGraphRule.java @@ -18,7 +18,7 @@ public class JavaDFAGraphRule extends AbstractJavaRule implements DFAGraphRule { private List methods; public JavaDFAGraphRule() { - super.setUsesDFA(); + super.setDfa(true); } public List getMethods() { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java index bf77442a2f..85171ce729 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java @@ -19,7 +19,7 @@ public abstract class AbstractJavaRule extends AbstractRule implements JavaParse public AbstractJavaRule() { super.setLanguage(LanguageRegistry.getLanguage(JavaLanguageModule.NAME)); // Enable Type Resolution on Java Rules by default - super.setUsesTypeResolution(); + super.setTypeResolution(true); } @Override diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/dfa/DFAPLSQLGraphRule.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/dfa/DFAPLSQLGraphRule.java index 0568c35933..9a8bf3ed61 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/dfa/DFAPLSQLGraphRule.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/dfa/DFAPLSQLGraphRule.java @@ -21,8 +21,7 @@ public class DFAPLSQLGraphRule extends AbstractPLSQLRule implements DFAGraphRule private List executables; public DFAPLSQLGraphRule() { - super(); - super.setUsesDFA(); + super.setDfa(true); } public List getMethods() { diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java index 51f6450845..cb4b0a8948 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java @@ -22,7 +22,7 @@ public abstract class AbstractPLSQLRule extends AbstractRule implements PLSQLPar public AbstractPLSQLRule() { super.setLanguage(LanguageRegistry.getLanguage(PLSQLLanguageModule.NAME)); // Enable Type Resolution on PLSQL Rules by default - super.setUsesTypeResolution(); + super.setTypeResolution(true); } @Override