2013-06-12 2 views
0

감사합니다. new RuleViolation를 들어생성자 RuleViolation (ParameterNameConvention, int, String, RuleContext)이 정의되지 않았습니다.

public class ParameterNameConvention extends AbstractJavaRule { 

private final static String PATTERN = "[p][a-zA-Z]+"; 

public Object visit(ASTMethodDeclaration node, Object data) { 
    RuleContext result = (RuleContext) data; 
    String rulePattern = (!getStringProperty("rulePattern") 
      .equalsIgnoreCase("")) ? getStringProperty("rulePattern") 
      : PATTERN; 
    if (node.containsChildOfType(ASTFormalParameter.class)) { 
     Iterator iterator = node.findChildrenOfType(
       ASTFormalParameter.class).iterator(); 
     while (iterator.hasNext()) { 
      ASTFormalParameter element = (ASTFormalParameter) iterator 
        .next(); 
      Iterator decIdIterator = element.findChildrenOfType(
        ASTVariableDeclaratorId.class).iterator(); 
      while (decIdIterator.hasNext()) { 
       ASTVariableDeclaratorId decElement = (ASTVariableDeclaratorId) decIdIterator 
         .next(); 
       if (!decElement.getImage().matches(rulePattern)) { 

        result.getReport() 
          .addRuleViolation(
            new RuleViolation(
              this, 
              node.getBeginLine(), 
              "Parameter '" 
                + decElement.getImage() 
                + "' should match regular expression pattern '" 
                + rulePattern + "'", 
              result)); 
       } 
      } 
     } 
    } 
    return result; 
} 

}

가 문제가있는 것입니다 :

생성자 RuleViolation (ParameterNameConvention은 INT는, 문자열, RuleContext가) 정의되지

이유는 무엇입니까?

답변

0

어떤 PMD 버전을 사용하고 있습니까? PMD 4.2.5 IN, RuleViolation의 생성자는 다음과 같습니다

RuleViolation(Rule rule, RuleContext ctx, SimpleNode node) 

RuleViolation(Rule rule, RuleContext ctx, SimpleNode node, java.lang.String specificMsg) 

귀하의 코드는 다음 중 하나를 일치하지 않습니다.

+0

감사합니다. 나는이 일을 끝냈다. 모든 문제는 버전의 문제입니다. 이제 다른 부분을 시작하겠습니다. 고마워. – Esct

+0

그것은 단지 버전의 문제 일뿐입니다. 감사. – Esct

관련 문제