是否可以从命令行告诉 Sonar 项目名称?

Is it possible to tell Sonar the project name from the command line?

在我公司创建的每个项目,Sonar 都使用新的命名约定。所以有些项目的名字是缩写的,有些是驼峰命名的,有些项目的名字只是带空格的单词。

如果我们可以传递 sonar-runner 一个 project-name 参数,那么我们就可以让集成团队(2-3 人)设置这些值,而不是每个项目的负责人( 10 多个可能的人)。

我觉得这可能会迫使我们为声纳属性创建一个声纳规则,这完全是元数据。

是否可以调用sonar-runner --rootProject='my project'之类的东西并拥有它?我已经试过了 sonar-runner -DprojectName=$name.

你很接近,sonar.projectName 就是你要找的。查看 Analysis Parameters.

的记录列表

请注意,某些 SonarQube 扫描仪具有特定的行为,例如:

  • Maven 的扫描器在任何情况下都会从项目定义本身获取值(例如 sonar.projectName 是项目的 <name> 属性)

  • scanner for Gradle默认为project.name

但是在使用标准扫描器 (sonar-runner) 时,通过显式设置 sonar.projectName.

来控制事情确实是个好主意

为我工作的例子如下:

mvn sonar:sonar \
-Dsonar.projectKey=internal_backend \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=28a95e1bdd9d31caed6d10687dd7210bcbf9ae7e