java - 如何在配置框中的 checkStyle 自定义检查中添加自定义检查消息

标签 java eclipse-plugin checkstyle

我正在将自定义检查添加为 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);
        }
    }
}

配置框如下所示:

enter image description here

我无法从这里更改自定义消息。我希望 Box 看起来像这样,所以我可以从配置框中设置自定义消息:

enter image description here

要使这项工作正常进行,我的代码或任何文件需要做哪些更改?

最佳答案

您只需将自定义消息添加到您的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>

关于java - 如何在配置框中的 checkStyle 自定义检查中添加自定义检查消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224400/

相关文章:

eclipse-plugin - 如何通过EGit/JGit插件为Git事件创建监听器?

java - IWorkbenchListener 类型解决错误

java - Checkstyle 检查方法开始处的空格

java - 在 Wiremock 中评估 XPath 表达式

java - mysql显示在java中创建表

java - 使用 Eclipse 连接到网络

java - 默认情况下,Checkstyle 中不允许使用 protected 变量,但是在枚举中又如何呢?

java - Eclipse/Checkstyle - 强制类/全局变量为私有(private)

java - Android基于baseAdapter在FRAGMENT中自定义Layout

java - 如何根据我的 REST API 实现操作