使用java库进行声纳多模块扫描

时间:2016-01-26 22:38:04

标签: ant sonarqube libraries multi-module

我正在使用以下版本进行声纳扫描:

  • ant v3.0.5
  • sonar v4.5.4
  • sonar-ant-task v2.3

我的蚂蚁项目包含100多个子模块;大约一半有外部库,一半没有

在我的ant构建文件中,设置了以下声纳属性:

sonar.projectKey = com.foo:bar
sonar.projectName = foobar
sonar.projectVersion = ${build.version.major}.${build.version.minor}.${build.version.subminor}
sonar.sourceEncoding=UTF-8
sonar.language = java
sonar.sources = src
sonar.java.binaries = build/classes
sonar.java.libraries = build/dependency/*.jar

上面的初始问题是,对于没有外部库的模块,它会失败,因为编译后没有jar / build / dependency。

根据此存档链接:http://sonarqube-archive.15.x6.nabble.com/Analysis-aborts-because-of-quot-No-files-nor-directories-matching-lib-jar-quot-td5035215.html

我应该可以将libraries属性更改为

sonar.java.libraries = build/dependency/*

但这对我上面列出的应用版本的组合不起作用。仅使用“*”会导致类找不到错误,所以我甚至认为它没有正确地抓取依赖jar文件。

如果我使用的版本组合不正确,或者是否已退化,有人会建议吗?

我目前的解决方法:

将“* .jar”保留为默认项目属性,并将单个模块的libraries属性添加到空文件夹中,以用于那些没有依赖jar的文件夹。 e.g。

module1.sonar.projectName=module1
module1.sonar.projectBaseDir=modules/module1
module1.sonar.java.libraries=build/dependency
module2.sonar.projectName=module2
module2.sonar.projectBaseDir=modules/module2
module2.sonar.java.libraries=build/dependency
... x 50 more of these

有更优雅的解决方案吗?

感谢, 斯科特

2 个答案:

答案 0 :(得分:1)

sonar.java.libraries属性由SonarQube Java插件处理。请提供其版本,如果不是最新的更新尝试。

答案 1 :(得分:0)

你走在正确的轨道上。 Java多模块项目的分析对于Maven用户来说很容易。 :-(