我正在将自定义检查添加为eclipse-cs插件,并遇到问题。
我用自定义检查创建了java文件。检查工作正常,但由于框不存在,我无法更改自定义检查消息。
Java文件如下所示:
package myCheck.checks;
import com.puppycrawl.tools.checkstyle.api.Check;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
public class MethodLimitCheck extends Check {
private int max = 30;
public int[] getDefaultTokens() {
return new int[] { TokenTypes.CLASS_DEF, TokenTypes.INTERFACE_DEF };
}
public void setMax(int limit) {
max = limit;
}
public void visitToken(DetailAST ast) {
// find the OBJBLOCK node below the CLASS_DEF/INTERFACE_DEF
DetailAST objBlock = ast.findFirstToken(TokenTypes.OBJBLOCK);
// count the number of direct children of the OBJBLOCK
// that are METHOD_DEFS
int methodDefs = objBlock.getChildCount(TokenTypes.METHOD_DEF);
// report error if limit is reached
if (methodDefs > max) {
log(ast.getLineNo(), "methodlimit", max);
}
}
}
配置框如下所示:
我无法从此处更改自定义消息。我希望Box看起来像这样,所以我可以从配置框设置自定义消息:
要在我的代码或任何文件中进行哪些更改才能使其工作?
答案 0 :(得分:1)
您只需将自定义消息添加到 checkstyle.xml :
即可<module name="MethodLimitCheck">
<property name="max" value="42"/>
<message key="methodlimit" value="my test message default"/>
</module>
然后它将出现在eclipse-cs对话框中。在您的支票中,您可以使用getCustomMessages()
方法(javadoc)访问自定义消息。
<强>更新强>
为了在默认情况下在eclipse-cs对话框中显示自定义消息而不将<message>
元素添加到 checkstyle.xml ,您必须创建 messages.properties 进行自定义检查as described here under "Logging Errors"。然后,在包含自定义检查的Eclipse插件中,向 checkstyle-metadata.xml 添加一个元素:
<rule-metadata name="MethodLimit" internal-name="MethodLimitCheck" parent="TreeWalker">
<alternative-name internal-name="com.foo.bar.MethodLimitCheck"/>
<description>...</description>
<!-- property-metadata -->
<message-key key="methodlimit" />
</rule-metadata>