在jenkins插件中正确设置sonar.sources

时间:2013-10-17 08:28:40

标签: jenkins sonarqube

我正在尝试构建 Android java项目分支:feature-Fprototype_app

我收到此错误:

[INFO] [13:38:36.470] Base dir: /Users/Shared/Jenkins/Home/jobs/Textify/workspace/mobile 
[INFO] [13:38:36.470] Working dir: /Users/Shared/Jenkins/Home/jobs/Textify/workspace/mobile/target/sonar 
[INFO] [13:38:36.470] Source dirs: /Users/Shared/Jenkins/Home/jobs/Textify/workspace/mobile/src 
[INFO] [13:38:36.470] Binary dirs: /Users/Shared/Jenkins/Home/jobs/Textify/workspace/mobile/target/classes 
[INFO] [13:38:36.470] Source encoding: UTF-8, default locale: en_US 
[INFO] [13:38:36.489] Sensor JavaSourceImporter... 
[INFO] [13:38:36.710] Sensor JavaSourceImporter done: 221 ms 
[INFO] [13:38:36.710] Sensor JavaSquidSensor... 
[INFO] [13:38:36.800] Java AST scan... 
[ERROR] Sonar is unable to analyze file : '/Users/Shared/Jenkins/Home/jobs/Textify/workspace/mobile/src/main/java/com/simpragma/apps/textify/db/BookmarkDao.java' 
[INFO]
    ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------- 
[INFO] Total time:14.245s 
[INFO] Finished at: Thu Oct 17 13:38:36 GMT+05:30 2013 
[INFO] Final Memory: 14M/102M 
[INFO]
    ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.1:sonar (default-cli) on project Textify: Can not execute SonarQube analysis: Sonar is unable to analyze file :

    **'/Users/Shared/Jenkins/Home/jobs/Textify/workspace/mobile/src/main/java/com/simpragma/apps/textify/db/BookmarkDao.java': The source directory does not correspond to the package declaration** com.simpragma.apps.textify.db -> 
[Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.1:sonar (default-cli) on project Textify: Can not execute SonarQube analysis

在jenkins配置中构建后操作我尝试在其他属性框中设置sonar.sources(因为当我搜索错误时,人们建议使用为源设置正确的路径)。我尝试了很多组合,如:

 -Dsonar.sources=mobile/src/main/java
 -Dsonar.sources=/Users/Shared/Jenkins/Home/jobs/Textify/workspace/mobile/src/main/java
 -Dsonar.sources=/Users/Shared/Jenkins/Home/jobs/Textify/workspace/mobile

仍然是同样的错误。 我做错了什么?

好吧,让我清楚一下我创造的混乱。首先,它是一个android maven项目。包结构是com.xyz.abc,源根是src / main / java。在pom.xml中, sourceDirectory 属性最初设置为指向 src 。似乎maven对源的根没有任何问题,它正在编译项目。 然后,我为这个项目设置了jenkins和sonar。我使用Jenkins的构建后操作来为我的项目设置Sonar分析。这里的问题是“当使用Maven运行分析时,一些SonarQube属性总是被忽略,因为SonarQube内部从POM中提取它们” - SONAR-4536。其中一个属性是 sonar.sources 。因此,当我在Jenkins设置中尝试使用-Dsonar.sources时,它没有用。 后来我修改了我的pom指向src / main / java,这导致通过jenkins post-build动作成功分析。

我希望我澄清了。

2 个答案:

答案 0 :(得分:4)

如果您的项目是Maven项目并且您使用的是SonarQube Maven插件,则源位置取自Maven模型。 Sonar.sources属性仅在使用SonarQube Runner执行分析时使用。

查看你的项目pom.xml并检查。另外,请更新您的问题,以确定您是在常规Java项目还是其他任何东西(如android)。

答案 1 :(得分:1)

Vikas,

您必须指定为Java分析的Sonar属性的源目录必须是代码中的包声明的根目录。

请参阅: http://qualilogy.com/en/install-sonarqube-first-analysis-with-sonarqube-runner/ http://qualilogy.com/en/install-sonarqube-sonarqube-analysis-with-jenkins/

此致 JP