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 默认就可以了 刚开始时间比较长, ...
随机推荐
- Java MyEclipse:The type java.lang.CharSequence cannot be resolved. It is indirectly referen
从svn上下载项目后配置weblogic后启动报错: myeclipse The type java.lang.CharSequence cannot be resolved. It is indi ...
- 在docker安装tomcat的时候,报错:Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true
初识docker,试着在docker中安装tomcat(安装的tomcat8.5),并且挂载到宿主机的相关目录下,结果启动的时候报错: 12-May-2020 01:14:34.061 SEVERE ...
- WPF 中TextBox 增加输入检测,错误提示
先来总结下实现错误提示功能的几个要点 1:binding 的ValidationRules 2 :Validation.ErrorTemplate 首先我们在界面添加一个TextBox, Text绑定 ...
- 【springcloud】一文带你搞懂API网关
作者:aCoder2013 https://github.com/aCoder2013/blog/issues/35 前言 假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员.商品 ...
- 一. Go微服务--隔离设计
1. 前言 隔离设计源于船舶行业,一般而言无论大船还是小船,都会有一些隔板,将船分为不同的空间,这样如果有船舱漏水一般只会影响这一小块空间,不至于把整个船都给搞沉了. 同样我们的软件服务也是一个道理, ...
- 微信小程序 div选中效果
._left{ position: relative; margin-top: 40rpx; width: 40%; height: 350rpx; border-radius: 12rpx; tex ...
- 那些优秀的python代码
时间:2019-04-18 收藏:PangYuaner 标题:Python如何生成树形图案 地址:https://www.jb51.net/article/132049.htm 标题:用python- ...
- T-SQL - 习题01_查询每门课都大于80分的学生姓名
时间:2017-09-11 整理:byzqy 题目:用一条SQL语句查询出每门课都大于80分的学生姓名. 最近面试C#开发工程师,碰到上面这个考数据库的题目,自己感觉有点难度,没有思路,现将找到的解决 ...
- 笔记本+ubuntu18.04 关闭触摸板touchpad
方法1: Settings -> Devices -> Mouse&Touchpad -> Touchpad OFF 方法2: 终端运行如下命令 touchpad off: ...
- J2EE之DAO设计模式及简单实现
JAVAEE(Java Enterprise Edition ) 模式 : DAO模式 因此在了解DAO模式之前,我们先来学习一下Java EE的体系结构: (一)JavaEE体系结构 客户端: 客户 ...