我有一个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执行似乎发生在独子模块上,因此它是毫无问题地进行的。
有人能帮我了解根本原因,并改进我的配置吗。
提前感谢。
当您创建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