【问题标题】:How to add custom check message in checkStyle custom check from configuration box如何在配置框中的 checkStyle 自定义检查中添加自定义检查消息
【发布时间】:2013-08-14 06:12:24
【问题描述】:

我正在将自定义检查添加为 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 看起来像这样,所以我可以从配置框中设置自定义消息:

要对我的代码或任何文件进行哪些更改才能使其正常工作?

【问题讨论】:

    标签: java eclipse-plugin checkstyle


    【解决方案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 对话框中默认显示您的自定义消息而不将 &lt;message&gt; 元素添加到您的 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>
    

    【讨论】:

    • 我不能让它出现在第一位吗?我的意思是如果我remove the check and add again,那么我必须让change in xml file again。是否可以首先在eclipse-cs对话框中获得MessageBox
    猜你喜欢
    • 2011-11-20
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2011-06-04
    相关资源
    最近更新 更多