SonarScanner扫描Maven项目使用说明
最近在学习使用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/

SonarScanner扫描Maven项目使用说明的更多相关文章
- 利用 SonarScanner 静态扫描 Rainbond 上的 Maven 项目
对代码进行静态扫描是一种非常常见的代码质量保证手段,这种扫描不仅仅可以检查到代码中的缺陷,应用各种业界最佳实践,也可以检查出安全方面的漏洞,给予项目代码全方位的提升.在各种代码扫描方案之中,Sonar ...
- sonar扫描多模块的maven项目
SonarQube Scanner,作为代码扫描的工具,通过它,将项目的代码读取并发送至SonarQube服务器中,才能让SonarQube进行代码分析. 可以认为SonarQube Scanner就 ...
- SpringMVC框架入门配置 IDEA下搭建Maven项目
初衷:本人初学SpringMVC的时候遇到各种稀奇古怪的问题,网上各种技术论坛上的帖子又参差不齐,难以一步到位达到配置好的效果,这里我将我配置的总结写到这里供大家初学SpringMVC的同僚们共同学习 ...
- ssm框架整合+maven项目创建
在引入外部maven插件后就可以创建一个maven项目了,这篇文章主要介绍ssm框架的整合和如何创建一个maven项目 1.在开发工具的项目空白区单击右键,依次选择New.Other,会出现如下界面, ...
- IDEA中MAVEN项目打JAR包的简单方法
Idea中为一般的非Web项目打Jar包是有自己的方法的,网上一搜就能查到很多. 但是如果是为Maven项目打Jar包,其实是很简单的,因为maven本身就有打Jar包的命令. 最简单的方法 ...
- eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...
- dubbo入门学习笔记之入门demo(基于普通maven项目)
注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...
- maven项目引用时,导入类报错,选择两个项目同时执行Maven update
maven项目引用时,导入类报错,选择两个项目同时执行Maven update springboot引入第三方jar,需要扫描时加@ComponentScan("第三方的包名") ...
- IntelliJ IDEA 创建Spring+SpringMVC+mybatis+maven项目
参考自:https://www.cnblogs.com/hackyo/p/6646051.html 第一步: 创建maven项目 输入项目名和工程id 选择maven 默认就可以了 刚开始时间比较长, ...
随机推荐
- 快速上手CH340N电路设计(CH340N USB转串口模块 USB Type-C接口 CH340系列芯片讲解)
一.上模块 二.功能分析 l 芯片:CH340N l 输入接口:USB.TYPE-C l 输出接口:TTL(5V\3.3V\GND\TX\RX) l 指示灯:电源.TX.RX ...
- IDEA spring boot项目插件打包方式jar
一.打包 1.pom.xml中添加插件依赖 <build> <plugins> <plugin> <!--打包成可执行jar--> <groupI ...
- 【网络编程】TCPIP-7-域名与网络地址
目录 前言 7. 域名与网络地址 7.1 IP 7.2 域名 7.3 DNS 7.4 IP地址与域名之间的转换 7.4.1 利用域名获取IP地址 7.4.2 利用IP地址获取域名 7.4.3 升级版的 ...
- 两款轻量级服务器 Http-server && SimpleHTTPServer
Http-server # 全局安装 npm install http-server -g # 启动服务 # 禁用缓存 http-server -c-1 # 在当前目录下的www启动服务器 http- ...
- flutter中存储键值对简单数据(相当于前端localstorage概念)
首先需要安装一个官方推荐包: 1 dependencies: 2 flutter: 3 sdk: flutter 4 shared_preferences: any // 先获取 shared pre ...
- Spring整合Quartz轻松完成定时任务
一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...
- c++制表符
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 //制表符是8个字符,当在一个制表符开始的位置(明白什么位置是 ...
- redis集群访问,重启,关闭,带密码访问集群
安装ruby后查找如下文件 vi 进去后编辑 此处编写自己的密码,重启后便可带密码访问集群 随便选择一个节点输入如下指令查看集群信息 正常关闭redis命令如下: 重启redis集群再次以相同的命 ...
- Mysql You can't specify target table 'newsalrecord' for update in FROM clause
这个问题是不能先select出同一表中的某些值,再update这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值.解决办法就是建立个临时的表.
- 前端axios请求二进制数据流转换生成PDF文件空白问题(终极解决方案)
本文章共1570字,预计阅读时间1 - 3分钟. 问题场景: axios请求二进制数据转换生成PDF空白问题,使用axios请求后端接口,后端返回的二进制流文件,需要转换成PDF,但是在postman ...