【问题标题】:Generating Checkstyle Reports (with extended checks)生成检查样式报告(带有扩展检查)
【发布时间】:2026-01-15 10:45:01
【问题描述】:

我有一些自己的扩展检查。我已将它们导出为插件,在 Eclipse 中,它们显示警告/错误。所以扩展检查工作正常。

现在我想以 HTML 格式生成违规报告。

我有checked this,如果 rule.xml 文件中没有包含扩展检查,这可以正常工作。但在扩展检查的情况下,ant build 会给出错误。

错误是:

BUILD FAILED
D:\Java_Work\JUnit_CheckStyle\buildCheckStyle.xml:12: Unable to create a Checker: cannot initialize module TreeWalker - Unable to instantiate InterfaceModifier

InterfaceModifier 是我的扩展检查,它在 eclipse 中运行良好。

在 build.xml 中,在哪里提供 extendedCheck.jar 以便我得到所需的结果?

【问题讨论】:

    标签: java html xml ant checkstyle


    【解决方案1】:

    我找到了以下解决方案,效果很好。

    1. 提取checkstyle-x.x-all.jar
    2. 复制解压目录中的扩展类
    3. 将扩展检查的元数据、消息和属性文件复制到同一目录下。
    4. 如果任何文件已经存在,则编辑该文件并添加扩展检查的内容。
    5. 创建一个包含所有这些的新 .jar 文件。
    6. 在ant build.xml <taskdef>中,设置这个.jar为classpath

    就像,在完成到第 2 步之后,我发现 checkstyle_packages.xml 已经存在,所以我编辑它并将扩展的内容添加到适当的位置。


    以前的版本

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE checkstyle-packages PUBLIC
        "-//Puppy Crawl//DTD Package Names 1.0//EN"
        "http://www.puppycrawl.com/dtds/packages_1_0.dtd">
    
    <checkstyle-packages>
      <package name="com.puppycrawl.tools.checkstyle">
        <package name="checks">
          <package name="annotation"/>
          <package name="blocks"/>
          <package name="coding"/>
          <package name="design"/>
          <package name="duplicates"/>
          <package name="header"/>
          <package name="imports"/>
          <package name="indentation"/>
          <package name="javadoc"/>
          <package name="metrics"/>
          <package name="modifier"/>
          <package name="naming"/>
          <package name="regexp"/>
          <package name="sizes"/>
          <package name="whitespace"/>
        </package>
        <package name="filters"/>
      </package>
    </checkstyle-packages>
    

    更改版本

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE checkstyle-packages PUBLIC
        "-//Puppy Crawl//DTD Package Names 1.0//EN"
        "http://www.puppycrawl.com/dtds/packages_1_0.dtd">
    
    <checkstyle-packages>
      <package name="com.puppycrawl.tools.checkstyle">
        <package name="checks">
          <package name="annotation"/>
          <package name="blocks"/>
          <package name="coding"/>
          <package name="design"/>
          <package name="duplicates"/>
          <package name="header"/>
          <package name="imports"/>
          <package name="indentation"/>
          <package name="javadoc"/>
          <package name="metrics"/>
          <package name="modifier"/>
          <package name="naming"/>
          <package name="regexp"/>
          <package name="sizes"/>
          <package name="whitespace"/>
        </package>
        <package name="filters"/>
      </package>
    
      <!-- Added this lines -->
      <package name="myCheck">
        <package name="checks"/>
      </package>
      <!--                  -->
    
    </checkstyle-packages>
    

    现在构建文件正在成功运行,并且在报告中我也违反了扩展检查。

    【讨论】: