[pmd-devel] SF.net SVN: pmd: [6082] trunk/pmd/src/net/sourceforge/pmd/lang
A source code analyzer
Brought to you by:
adangel,
juansotuyo
From: <rg...@us...> - 2008-04-30 19:34:28
|
Revision: 6082 http://pmd.svn.sourceforge.net/pmd/?rev=6082&view=rev Author: rgustav Date: 2008-04-30 12:34:33 -0700 (Wed, 30 Apr 2008) Log Message: ----------- Fixed regression in message parameters for NPathComplexityRule, and other statistical rules. In refactoring, I missed an overridden method (it didn't have @Overriden on it). Basically added the necessary method to the StatisticalRule interface, and updated things accordingly. Modified Paths: -------------- trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/AbstractStatisticalJavaRule.java trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NPathComplexityRule.java trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssConstructorCountRule.java trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssMethodCountRule.java trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssTypeCountRule.java trunk/pmd/src/net/sourceforge/pmd/lang/rule/AbstractRule.java trunk/pmd/src/net/sourceforge/pmd/lang/rule/AbstractRuleViolationFactory.java trunk/pmd/src/net/sourceforge/pmd/lang/rule/RuleViolationFactory.java trunk/pmd/src/net/sourceforge/pmd/lang/rule/stat/StatisticalRule.java trunk/pmd/src/net/sourceforge/pmd/lang/rule/stat/StatisticalRuleHelper.java Modified: trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/AbstractStatisticalJavaRule.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/AbstractStatisticalJavaRule.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/AbstractStatisticalJavaRule.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -18,6 +18,10 @@ helper.addDataPoint(point); } + public Object[] getViolationParameters(DataPoint point) { + return null; + } + @Override public void apply(List<Node> nodes, RuleContext ctx) { super.apply(nodes, ctx); Modified: trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NPathComplexityRule.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NPathComplexityRule.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NPathComplexityRule.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -241,13 +241,11 @@ return children; } - - protected void makeViolations(RuleContext ctx, Set<DataPoint> p) { - for ( DataPoint point: p ) { - addViolation( ctx, point.getNode(), new String[] { - ( (ASTMethodDeclaration) point.getNode() ).getMethodName(), - String.valueOf( (int) point.getScore() ) } ); - } + + @Override + public Object[] getViolationParameters(DataPoint point) { + return new String[] { + ( (ASTMethodDeclaration) point.getNode() ).getMethodName(), + String.valueOf( (int) point.getScore() ) }; } - } Modified: trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssConstructorCountRule.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssConstructorCountRule.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssConstructorCountRule.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -1,8 +1,5 @@ package net.sourceforge.pmd.lang.java.rule.codesize; -import java.util.Set; - -import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.java.ast.ASTConstructorDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTExplicitConstructorInvocation; import net.sourceforge.pmd.stat.DataPoint; @@ -25,16 +22,12 @@ public Object visit(ASTExplicitConstructorInvocation node, Object data) { return NumericConstants.ONE; } - - protected void makeViolations(RuleContext ctx, Set<DataPoint> p) { - for ( DataPoint point: p ) { - // TODO need to put class name or constructor ID in string - addViolation( - ctx, - point.getNode(), - new String[] { + + @Override + public Object[] getViolationParameters(DataPoint point) { + // TODO need to put class name or constructor ID in string + return new String[] { String.valueOf( ( (ASTConstructorDeclaration) point.getNode() ).getParameterCount() ), - String.valueOf( (int) point.getScore() ) } ); - } + String.valueOf( (int) point.getScore() ) }; } } Modified: trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssMethodCountRule.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssMethodCountRule.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssMethodCountRule.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -3,6 +3,7 @@ import java.util.Set; import net.sourceforge.pmd.RuleContext; +import net.sourceforge.pmd.lang.java.ast.ASTConstructorDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration; import net.sourceforge.pmd.stat.DataPoint; @@ -23,13 +24,11 @@ public Object visit(ASTMethodDeclaration node, Object data) { return super.visit( node, data ); } - - protected void makeViolations(RuleContext ctx, Set<DataPoint> p) { - for ( DataPoint point: p ) { - addViolation( ctx, point.getNode(), new String[] { - ( (ASTMethodDeclaration) point.getNode() ).getMethodName(), - String.valueOf( (int) point.getScore() ) } ); - } + + @Override + public Object[] getViolationParameters(DataPoint point) { + return new String[] { + ( (ASTMethodDeclaration) point.getNode() ).getMethodName(), + String.valueOf( (int) point.getScore() ) }; } - } Modified: trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssTypeCountRule.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssTypeCountRule.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/java/rule/codesize/NcssTypeCountRule.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -70,12 +70,10 @@ public Object visit(ASTFieldDeclaration node, Object data) { return NumericConstants.ONE; } - - protected void makeViolations(RuleContext ctx, Set<DataPoint> p) { - for ( DataPoint point: p ) { - addViolation( ctx, point.getNode(), - String.valueOf( (int) point.getScore() ) ); - } + + @Override + public Object[] getViolationParameters(DataPoint point) { + return new String[] { + String.valueOf( (int) point.getScore() ) }; } - } Modified: trunk/pmd/src/net/sourceforge/pmd/lang/rule/AbstractRule.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/rule/AbstractRule.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/rule/AbstractRule.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -388,16 +388,6 @@ } /** - * @see RuleViolationFactory#addViolationWithMessage(RuleContext, Rule, Node, String) - */ - public final void addViolationWithMessage(Object data, Node node, - String message) { - RuleContext ruleContext = (RuleContext) data; - ruleContext.getLanguageVersion().getLanguageVersionHandler().getRuleViolationFactory().addViolationWithMessage( - ruleContext, this, node, message); - } - - /** * @see RuleViolationFactory#addViolation(RuleContext, Rule, Node, String) */ public final void addViolation(Object data, Node node, String arg) { @@ -416,6 +406,26 @@ } /** + * @see RuleViolationFactory#addViolationWithMessage(RuleContext, Rule, Node, String) + */ + public final void addViolationWithMessage(Object data, Node node, + String message) { + RuleContext ruleContext = (RuleContext) data; + ruleContext.getLanguageVersion().getLanguageVersionHandler().getRuleViolationFactory().addViolationWithMessage( + ruleContext, this, node, message); + } + + /** + * @see RuleViolationFactory#addViolationWithMessage(RuleContext, Rule, Node, String, Object[]) + */ + public final void addViolationWithMessage(Object data, Node node, + String message, Object[] args) { + RuleContext ruleContext = (RuleContext) data; + ruleContext.getLanguageVersion().getLanguageVersionHandler().getRuleViolationFactory().addViolationWithMessage( + ruleContext, this, node, message, args); + } + + /** * Rules are equal if: * <ol> * <li>They have the same implementation class.</li> Modified: trunk/pmd/src/net/sourceforge/pmd/lang/rule/AbstractRuleViolationFactory.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/rule/AbstractRuleViolationFactory.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/rule/AbstractRuleViolationFactory.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -13,10 +13,6 @@ ruleContext.getReport().addRuleViolation(createRuleViolation(rule, ruleContext, node)); } - public void addViolationWithMessage(RuleContext ruleContext, Rule rule, Node node, String message) { - ruleContext.getReport().addRuleViolation(createRuleViolation(rule, ruleContext, node, message)); - } - public void addViolation(RuleContext ruleContext, Rule rule, Node node, String arg) { ruleContext.getReport().addRuleViolation( createRuleViolation(rule, ruleContext, node, MessageFormat.format(rule.getMessage(), arg))); @@ -27,6 +23,14 @@ createRuleViolation(rule, ruleContext, node, MessageFormat.format(rule.getMessage(), args))); } + public void addViolationWithMessage(RuleContext ruleContext, Rule rule, Node node, String message) { + ruleContext.getReport().addRuleViolation(createRuleViolation(rule, ruleContext, node, message)); + } + + public void addViolationWithMessage(RuleContext ruleContext, Rule rule, Node node, String message, Object[] args) { + ruleContext.getReport().addRuleViolation(createRuleViolation(rule, ruleContext, node, MessageFormat.format(message, args))); + } + protected abstract RuleViolation createRuleViolation(Rule rule, RuleContext ruleContext, Node node); protected abstract RuleViolation createRuleViolation(Rule rule, RuleContext ruleContext, Node node, Modified: trunk/pmd/src/net/sourceforge/pmd/lang/rule/RuleViolationFactory.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/rule/RuleViolationFactory.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/rule/RuleViolationFactory.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -30,10 +30,10 @@ * the rule * @param node * the node that produces the violation - * @param message - * specific message to put in the report + * @param arg + * an argument to embed in the rule violation message */ - void addViolationWithMessage(RuleContext ruleContext, Rule rule, Node node, String message); + void addViolation(RuleContext ruleContext, Rule rule, Node node, String arg); /** * Adds a violation to the report. @@ -43,11 +43,26 @@ * @param rule * the rule * @param node + * the node that produces the violation, may be null, in which + * case all line and column info will be set to zero + * @param args + * arguments to embed in the rule violation message + */ + void addViolation(RuleContext ruleContext, Rule rule, Node node, Object[] args); + + /** + * Adds a violation to the report. + * + * @param ruleContext + * the RuleContext + * @param rule + * the rule + * @param node * the node that produces the violation - * @param arg - * an argument to embed in the rule violation message + * @param message + * specific message to put in the report */ - void addViolation(RuleContext ruleContext, Rule rule, Node node, String arg); + void addViolationWithMessage(RuleContext ruleContext, Rule rule, Node node, String message); /** * Adds a violation to the report. @@ -57,10 +72,11 @@ * @param rule * the rule * @param node - * the node that produces the violation, may be null, in which - * case all line and column info will be set to zero + * the node that produces the violation + * @param message + * specific message to put in the report * @param args * arguments to embed in the rule violation message */ - void addViolation(RuleContext ruleContext, Rule rule, Node node, Object[] args); + void addViolationWithMessage(RuleContext ruleContext, Rule rule, Node node, String message, Object[] args); } Modified: trunk/pmd/src/net/sourceforge/pmd/lang/rule/stat/StatisticalRule.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/rule/stat/StatisticalRule.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/rule/stat/StatisticalRule.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -14,4 +14,5 @@ */ public interface StatisticalRule extends Rule { void addDataPoint(DataPoint point); + Object[] getViolationParameters(DataPoint point); } Modified: trunk/pmd/src/net/sourceforge/pmd/lang/rule/stat/StatisticalRuleHelper.java =================================================================== --- trunk/pmd/src/net/sourceforge/pmd/lang/rule/stat/StatisticalRuleHelper.java 2008-04-29 17:19:49 UTC (rev 6081) +++ trunk/pmd/src/net/sourceforge/pmd/lang/rule/stat/StatisticalRuleHelper.java 2008-04-30 19:34:33 UTC (rev 6082) @@ -146,7 +146,7 @@ private void makeViolations(RuleContext ctx, Set<DataPoint> p) { for (DataPoint point: p) { - rule.addViolationWithMessage(ctx, point.getNode(), point.getMessage()); + rule.addViolationWithMessage(ctx, point.getNode(), point.getMessage(), ((StatisticalRule)rule).getViolationParameters(point)); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |