当前位置: 首页 > 知识库问答 >
问题:

与maven父模块中的Checkstyle和PMD配置不同

许亦
2023-03-14

我有一个java应用程序与maven具有以下结构:

parent
| - pom.xml
| - child
    | - pom.xml
| - analyzers
    | - pmdrules.xml
    | - checkstyle.xml

我已经在父pom中配置了PMD和checkstyle。xml。对于PMD,规则集的配置如下所示,对于父模块和子模块都可以正常工作:

<configuration>
    <rulesets>
        <rulehtml" target="_blank">set>${basedir}/../analyzers/pmdrules.xml</ruleset>
    </rulesets>
</configuration>

但是,对于检查样式,如果我以同样的方式配置配置位置,它将在父级或子级中失败。我必须使用自定义属性来克服这一点。

<configuration>
    <!-- Below config with ${projectRootDir}, a custom property always pointing to parent root works fine -->
    <configLocation>${projectRootDir}/analyzers/checkstyle.xml</configLocation>
    <!-- Below configurations with ${basedir} will fail build for child -->
    <!--<configLocation>${basedir}/analyzers/checkstyle.xml</configLocation>-->
    <!-- Below configurations with ${basedir} will fail build for parent -->
    <!--<configLocation>${basedir}/../analyzers/checkstyle.xml</configLocation>-->
</configuration>

这是一个复制样本-https://github.com/ramtech123/pocs/blob/master/myapp-parent-module/pom.xml

我尝试在调试模式下运行maven构建。从日志中,对我来说,实际的PMD执行似乎发生在独子模块上,因此它是毫无问题地进行的。

有人能帮我了解根本原因,并改进我的配置吗。

提前感谢。

共有1个答案

柴昆杰
2023-03-14

当您创建childpom时。xml它继承其父配置,但诸如baseDir之类的属性被子属性覆盖,因此在模板化插件配置时,它使用自己的路径。

作为一个选项,您可以只留下

不过,您的解决方案也很好,因为您在父根目录中指定了projectRootDir,并且在那里对其进行计算,并且子pom不会覆盖您的自定义属性,因此它是正确的。

pmd总是有效的,因为pmd插件只针对子模块运行。

 类似资料:
  • 问题内容: 我们正在将静态分析工具引入Java产品的构建系统中。我们正在使用Maven2,因此Checkstyle和PMD集成是免费提供的。但是,就执行基本样式规则而言,这两个工具之间似乎在功能上有很大的重叠。 同时使用这两者有好处吗?如果一个工具可以工作,我不想维护两个工具。如果选择一种,应该使用哪一种,为什么? 我们还计划使用FindBugs。还有其他静态分析工具值得我们关注吗? 更新: 共识

  • Mark问这是什么样子的,下面是这段代码。 pom和Checkstyle配置文件都正常工作,但 如果它是Treewalker的子文件,我会从Maven插件得到错误,但不能从Eclipse插件得到错误,不过,我只能让它与Eclipse插件一起工作。

  • 我使用的是sonarqube community Version6.7.2,我记得,SonarJava插件的目标是用squid规则取代(至少大部分是)Findbugs和PMD规则。当有一个合适的squid规则替换时,这些提供者提供了一个关于规则的信息,但现在我无法找到它,例如,来自findbugs的一些规则与我从squid中知道的其他规则非常相似。 Sonarqube建议只使用squid规则?这些

  • 我需要在Eclipse中为一个开发项目使用PMD、Findbugs和Checkstyle。Java6足以使用这些工具吗?或者我需要java 7?

  • 我没有更改Checkstyle、Findbugs、Jacoco或PMD插件配置。我在Surefire插件配置中添加了一些行: 这些是声纳插件: 当运行它时,我会得到这样的消息:“'Sonar.DynamicAnalysis‘is deprecated sund version4.3 and should nower be used”。但我不确定还能用什么。相关的JIRA问题也没有说明这一点(htt