关于java:生成Checkstyle报告(带有扩展检查)

Generating Checkstyle Reports (with extended checks)

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

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

我已经检查了这一点,如果rule.xml文件中未包含任何扩展检查,则此方法很好用。但是在进行扩展检查的情况下,ant构建会给出错误。

错误是:

1
2
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,以便获得所需的结果?


我发现了以下解决方案,效果很好。

  • 提取checkstyle-x.x-all.jar
  • 将扩展的类复制到提取的目录中
  • 将扩展检查的元数据,消息和属性文件复制到同一目录中。
  • 如果存在任何文件,请编辑文件并添加扩展检查中的内容。
  • 创建一个包括所有这些文件的新.jar文件。
  • 在ant build.xml <taskdef>中,将此.jar设置为classpath
  • 就像完成第二步之后,我发现checkstyle_packages.xml已经存在,因此我对其进行了编辑,并将扩展的内容添加到了适当的位置。

    以前的版本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?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>

    更改的版本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?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>

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