1

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

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

我已经检查了这个,如果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以便我得到所需的结果?

4

1 回答 1

0

我发现了以下解决方案,它工作正常。

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

就像,在完成到第二步之后,我发现 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>

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

于 2013-09-11T09:29:14.853 回答