我正在研究一个项目,用jenkins中的sonarqube分析代码。工作空间下的项目结构是:/var/lib/jenkins/workspace/myproject-trunk-sonar/myproject/pom.xml,Module1,Module2等
我的sonar-project.properties:
# Required metadata
sonar.projectKey=Myproject
sonar.projectName=Myproject
sonar.projectVersion=1.0
#Set modules IDs
sonar.modules=Module1, Module2
# Comma-separated paths to directories with sources (required)
sonar.sources=src/main/java
# Language
sonar.language=java
# Encoding of the source files
sonar.sourceEncoding=UTF-8
如果我在/ var / lib / jenkins / workspace / myproject-trunk-sonar / myproject下的sonar-project.properties文件中我的pom.xml和模块,我看到下面的错误:
ERROR: Error during SonarQube Scanner execution
ERROR: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.sources
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
ERROR: SonarQube scanner exited with non-zero code: 1
如果我在/ var / lib / jenkins / workspace / myproject-trunk-sonar下有sonar-project.properties文件,我会看到以下错误:
ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: The base directory of the module 'Module1' does not exist: /var/lib/jenkins/workspace/myproject-trunk-sonar/Module1
at org.sonarsource.scanner.cli.Conf.setModuleBaseDir(Conf.java:180)
at org.sonarsource.scanner.cli.Conf.loadModuleConfigFile(Conf.java:172)
at org.sonarsource.scanner.cli.Conf.loadModulesProperties(Conf.java:137)
at org.sonarsource.scanner.cli.Conf.loadProjectProperties(Conf.java:111)
at org.sonarsource.scanner.cli.Conf.properties(Conf.java:59)
at org.sonarsource.scanner.cli.Main.execute(Main.java:68)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
ERROR: SonarQube scanner exited with non-zero code: 1
如何让声纳扫描器查看带有java代码的模块的目录?当我在模块所在的目录中有属性文件时,它甚至找不到属性文件并抱怨缺少必填字段。
感谢您的帮助。
答案 0 :(得分:2)
感谢所有回复。我能够通过修改项目的目录结构来解决问题。我删除了目录'myproject'并将sonar-project.properties文件放在所有模块所在的位置,并且能够成功运行扫描程序。
感谢您的帮助。
答案 1 :(得分:0)
要让maven运行声纳分析,你必须将声纳maven插件添加到你的pom中。
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
并且运行设置jenkins用声纳目标运行maven mvn sonar:sonar 。
关于模块,问题的解决方案将取决于代码结构。
答案 2 :(得分:0)
在詹金斯做一个postjob Sonarqube动作。忘记sonar-project.properties。如果你的项目是用maven包构建好的,那么sonarqube会毫无问题地分析它。告诉我们。 THX