0

我写了一个新的 checkstyle 检查作为文件扫描器。我按照我在 checkstyle 代码中找到的代码对我的 junits 进行了建模。junits 运行良好,一切看起来都很好。

但是,我将支票添加到我的项目中。

<module name="TreeWalker">
    <property name="tabWidth" value="4" />

    <module name="com.onuspride.codetools.checkstyles.DuplicateClassNames"/>
</module>

和我的蚂蚁任务

<taskdef resource="checkstyletask.properties">
    <classpath refid="classpath" />
</taskdef>

<property name="checkstyle.suppressions.file" value="checkstyle/suppressions.xml" />
<property name="translation.severity" value="error" />

<target name="checkStyle" description="TestTask to evaluate the checkstyle system.">
    <checkstyle config="checkstyle/checkstyle_checks.xml">
        <fileset dir="${msg.src}" includes="**/*.java" />
        <formatter type="plain" />
        <formatter type="xml" toFile="${msg.build.jar}/checkstyle_errors.xml" />
        <classpath refid="classpath" />
    </checkstyle>
</target>

duplicateclassnames 类在同一个 jar 中调用多个类。由于某种原因,当ant运行它时,当它们都在同一个jar文件中时,ant找到了检查类,但找不到支持类。这是我在蚂蚁中得到的

  [checkstyle] [class]:0: Got an exception - java.lang.NoClassDefFoundError: com/onuspride/codetools/common/classpath/criteria/ClassNameCriteriaCollector

我难住了。我检查了我的 jar 的所有依赖项,它们都在类路径中,我不明白它如何在同一个 jar 中找到一个类文件而不是另一个类文件。我已经做了所有肮脏的小把戏,我就是不明白。

有任何想法吗?

4

1 回答 1

0

你可以这样做:

  1. 创建插件项目并在那里添加您的自定义检查
  2. 对plugin.xmlcheckstyle_packages.xml进行适当的更改。
  3. 将项目导出为可部署插件和片段导出 > 插件开发
  4. 将 jar 文件复制到Eclipse Plugin文件夹,因此无需安装您的自定义检查

您可以阅读本教程以供参考

为了减少工作量,请下载 Sample Check,该文件位于此处的名称下net.sf.eclipsecs.sample

只需替换 src 文件夹中的源代码即可。在替换之前,请参考src/net/sf/eclipsecs/sample/checks/目录中的这 3 个文件,因为您将在com/onuspride/codetools/checkstyles/目录中需要它们:

  1. checkstyle-metadata.properties
  2. checkstyle-metadata.xml
  3. 消息属性

替换代码后,在src/目录中的checkstyle_packages.xml文件中进行适当的更改。

那里很好地描述了扩展检查。

于 2013-08-27T12:40:16.963 回答