最近在学习使用sonar扫描代码,已经成功扫描python项目,而扫描java代码不成功。

在网上找到的扫描java项目文章,经过尝试之后也没有成功。

本人自己研究了sonar官方的使用说明文章,将其翻译成中文。

前言

建议将用于Maven的SonarScanner作为Maven项目的默认扫描程序。

通过常规Maven目标执行SonarQube分析的能力使得它可以在任何Maven可用的地方使用(开发人员构建、CI服务器等),不需要手动下载、安装和维护SonarQube Runner安装。Maven构建已经拥有SonarQube成功分析项目所需的许多信息。通过基于这些信息预先配置分析,手动配置的需求大大减少。

前提条件

  • 使用Maven 3.0及以上版本
  • 至少使用了您的SonarQube服务器支持的最小版本的Java(其实就是要注意jdk的版本,这里可能要注意一下,现在sonarqube最低要求的jdk版本是11,而SonarScanner最低要求的版本是8,最好就使用11版本吧)

全局设置

编辑setting.xml文件,位置在$MAVEN_HOME/conf或者~/.m2,来设置插件前缀和可选的SonarQube服务器URL。按我的理解,需要把“http://myserver:9000”改成是自己所搭建的sonarqube服务器地址,其他地方应该不需要改动。

    <pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://myserver:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>

扫描

扫描Maven项目包括运行一个Maven目标路径:这是从保存主项目pom.xml的目录中获取。 你需要在扫描命令中加入认证token,如下:

mvn clean verify sonar:sonar -Dsonar.login=myAuthenticationToken

在某些情况下,您可能想运行sonar:sonar作为专用步骤。对于多模块项目,第一步是安装。如下:

mvn clean install
mvn sonar:sonar -Dsonar.login=myAuthenticationToken

要指定snoar-maven插件的版本而不是使用最新版本,如下:

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar

要获得扫描覆盖率信息,您需要在分析之前生成覆盖率报告。

配置分析

大多数分析属性将从项目中读取。如果您想覆盖指定附加参数的默认值,请配置pom.xml文件的 部分,如下:

<properties>
<sonar.buildString> [...] </sonar.buildString>
</properties>

示例项目

为了帮助你开始,可以使用这个简单的示例项目:https://github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-maven

可在下面地址直接下载压缩包:https://github.com/SonarSource/sonar-scanning-examples

排除扫描的模块

  • 在pom.xml文件的 <sonar.skip>true</sonar.skip> 定义要排除的模块的属性
  • 使用构建概要文件排除某些模块(如集成测试)
  • 使用前置的选项(例如“-pl”)。如mvn sonar:sonar -pl !module2

如何修复Maven插件的版本

建议锁定Maven插件的版本:

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.7.0.1746</version>
</plugin>
</plugins>
</pluginManagement>
</build>

故障排除

如果你遇到java.lang.OutOfMemoryError,设置MAVEN_OPTS环境变量,就像在*nix环境中这样:

export MAVEN_OPTS="-Xmx512m"

在Windows环境中,避免使用双引号,因为它们会被误解。

set MAVEN_OPTS=-Xmx512m

原文链接

本篇文章基于20210926的官网文章,翻译之中可能有不够恰当的地方,推荐直接阅读官方文档。

原文链接如下:

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/

最新文章

  1. 上传图片shell绕过过滤的几种方法
  2. jQuery插件制作方法
  3. nand以及yaffs2
  4. 循环遍历泛型集合List绑定到table
  5. 数据人员Sql必会——行转列
  6. C++ Generate Rand Number Array by &quot;srand()&quot; 生成随机数
  7. Python字典增删操作技巧简述
  8. Some_sort_algorithms
  9. CSS skills: 2) change hover dynamically by js
  10. 【转】vsftp 遇到错误 500 OOPS: vsftpd: refusing to run with writable root inside chroot()--不错
  11. 一百万数据索引实例測试--mysql
  12. 获取AJAX加载的内容
  13. Tomcat如何实现WebSocket
  14. Ubuntu使用小技巧
  15. QTP 自动化测试--点滴 获取datatable数值/dafault文件位置
  16. SpringBoot统一错误处理
  17. Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId
  18. BZOJ2135 刷题计划(贪心+二分)
  19. select as table
  20. sudo和su的区别

热门文章

  1. ASP.NET Core 修改开源协议为MIT,.NET全平台 MIT协议开源了
  2. 寻找写代码感觉(三)之使用 Spring Boot 编写接口
  3. MySQL——分表,分库操作
  4. asp.net core 声明controller的方法
  5. 【C++】 四种强制类型转换(static_cast 与 dynamic_cast 的区别!)
  6. 初探Spring Security
  7. linux系统下深度学习环境搭建和使用
  8. Java并发之AQS原理解读(二)
  9. APMserv 5.2.6 安装教程
  10. 剑指 Offer 32 - III. 从上到下打印二叉树 III