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 默认就可以了 刚开始时间比较长, ...
随机推荐
- 整理自己部署项目需要使用的Linux命令
1.修改文件名: mv test test 12.创建test文件夹: mkdir test3.解压文件至 test文件夹下: unzip test.war -d test/4.将work文件移动至 ...
- 旅游景点 Tourist Attractions 题解
题面在这里 再次破了纪录,连做了3天... 让我们从头来一点一点分析 1.预处理 先看题面,乍一看貌似是个图论题,有n个点m条边,给定一些必须经过的点和强制经过顺序,求一条最短路 我们发现n和m都比较 ...
- Java:学习什么是多线程
线程是什么 进程是对CPU的抽象,而线程更细化了进程的运行流程 先看一下这个图 线程和进程的关系有 进程中就是线程在执行,所有(主)线程执行完了进程也就结束了 多个线程从1秒钟是同时运行完成,从1纳秒 ...
- QT 中的QTableWidget
- [SWMM]弗汝德数
弗汝德数(Froude number)是流体内惯性力与重力的比值.弗汝德数(Fr)是水力学中重要的无量纲数之一,它表示过水断面上单位重量液体具有的平均动能与平均势能的比值,它也表示水流惯性力与重力的比 ...
- python下 conda命令手册
0.说明: 对于tensorflow配合keras使用,因为linux服务器没有root权限,所以目前最高可用版本是 1.6.0,否则就会报错某些 so找不到 conda install -n xu ...
- JAVA中的clone方法剖析
原文出自:http://blog.csdn.net/shootyou/article/details/3945221 java中也有这么一个概念,它可以让我们很方便的"制造"出一个 ...
- playwright-python 处理Text input、Checkboxs 和 radio buttons(三)
Text input 输入框输入元素,直接用fill方法即可,支持 <input>,<textarea>, [contenteditable] 和<label>这些 ...
- Dubbo | Dubbo快速上手笔记 - 环境与配置
目录 前言 1. Dubbo相关概念 1.1 自动服务发现工作原理 2. 启动文件 2.1 zookeeper-3.4.11\bin\zkServer.cmd 2.2 zookeeper-3.4.11 ...
- Shell 脚本如何输出帮助信息?
作者展示了一个技巧,将帮助信息写在 Bash 脚本脚本的头部,然后只要执行"脚本名 + help",就能输出这段帮助信息 https://samizdat.dev/help-mes ...