检测代码潜在bug和质量之SonarQube
参数使用
项目分析参数可以在多个地方设置,继承关系如下:
- 全局分析参数,通过Web UI设置,作用于所有项目(配置–>通用–>通用中设置)
- 项目分析参数,通过WebUI设置,覆盖全局参数(在项目级别的配置–>设置中设置)
- 项目分析参数,定义在项目的分析设置文件(如:sonar-project.properties)和分析器的配置文件(如:sonar-runner.properties),覆盖WebUI中设置的项目分析参数
- 命令行参数,在开始分析时通过命令指定的参数(如:-d 或 /d:),可以覆盖项目分析参数
注:只有WebUI中配置的参数会存储在数据库中
下面的参数列表并不完整,在WebUI中全局或项目级别的设置,都可以作为分析参数,如下图中的关键字:

必备参数
执行项目分析必须指定的参数
| 关键字 | 描述 | 默认值 |
|---|---|---|
| sonar.host.url | 服务器地址 | http://localhost:9000 |
| sonar.projectKey | 项目Key唯一标示,可以是字母、数字、’-‘、’_‘、’.’和’:’,但至少要包含一个字母 | |
| sonar.projectName | 项目名称 | |
| sonar.projectVersion | 项目版本 | |
| sonar.sources | 源代码文件夹,多个用’,’分开 |
可选参数
| 关键字 | 描述 | 默认值 |
|---|---|---|
| 身份验证 | ||
| sonar.login | 用户名或者是身份认证令牌 | |
| sonar.password | 用户密码,若使用身份认证令牌则可忽略此属性 | |
| 项目配置 | ||
| sonar.projectDescription | 项目描述 | |
| sonar.tests | 测试文件目录,多个用’,’分开 | |
| sonar.analysis.mode | 分析模式(publish/preview/issues) | publish |
| sonar.language | 需要分析源码的语言,默认执行多语言分析 | |
| sonar.sourceEncoding | 源码编码格式 | 系统编码格式 |
| sonar.projectBaseDir | 项目主目录,用于分析开始时的当前目录不是项目主目录的情况,可以是相对目录也可以是绝对目录 | |
| sonar.working.directory | 用于SonarQube Runner执行分析时的工作目录,可以是相对目录,也可以是绝对目录 | .sonar |
| 分析日志 | ||
| sonar.log.level | 设置分析过程中的日志级别(INFO/DEBUG/TRACE,其中TRACE级别会输出SQL语句及其执行的事件) | INFO |
忽略文件
有以下几种方式来缩小要分析源码的范围,如下:
- 源代码目录:设置sonar.sources参数指定源代码目录的范围
- 文件后缀:许多语言都提供了限制文件后缀名的的参数,’配置’–>’通用’–>’[语言]’,设置File suffixes属性
- 选择指定文件:
- sonar.exclusions/sonar.test.exclusions 设置分析除指定文件以外的所有文件
- sonar.inclusions/sonar.test.inclusions 设置仅仅分析指定的文件
通配符
| 符号 | 匹配 |
|---|---|
| * | 匹配一个或多个字符 |
| ** | 匹配一个或多个目录 |
| ? | 匹配一个字符 |
如下:
# 排除所有Bean结尾的类
# 匹配org/sonar.api/MyBean.java, org/sonar/util/MyOtherBean.java, org/sonar/util/MyDTO.java等
sonar.exclusions=**/*Bean.java,**/*DTO.java
# 排除src/main/java/org/sonar目录下所有文件
# 但不包括其子目录下的文件
sonar.exclusions=src/main/java/org/sonar/*
# 排除bank目录及其子目录下的所有文件
sonar.exclusions=bank/**/*
# 排除bank目录及其子目录下的所有.cs文件
sonar.exclusions=bank/**/*.cs
比如:
CurrentPath=$(pwd)
CurrentPath=${CurrentPath#\/}
CurrentPath=${CurrentPath//\//_}
echo $CurrentPath sonar-scanner \
-X \
-Dsonar.projectKey=cms \
-Dsonar.sources=. \
# -Dsonar.tests=. \
-Dsonar.exclusions=**/_vgo/** \
-Dsonar.exclusions=**/vendor/** \
-Dsonar.host.url=http://{sonar qube server} \
-Dsonar.login=xxxxxx \
-Dsonar.projectName=${CurrentPath}


详情见官方文档
检测代码潜在bug和质量之SonarQube的更多相关文章
- 团队代码中Bug太多怎么办?怎样稳步提高团队的代码质量
最近负责的Android APP项目,由于团队成员变动.界面改版导致代码大幅修改等原因,产品发布后屡屡出现BUG导致的程序崩溃. 经过对异常统计和代码走读,BUG主要集中在空指针引起的NullPoin ...
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
java实现 HTTP/HTTPS请求绕过证书检测代码实现 1.开发需求 需要实现在服务端发起HTTP/HTTPS请求,访问其他程序资源. 2.URLConnection和HTTPClient的比较 ...
- 关于执行findbugs,checkstyle,jacoco插件检测代码,GitHook的脚本编写
Git钩子的作用: (pre-commit ) 在用户执行 git commit -m "xxx" 命令之前,先执行pre-commit文件中的脚本命令 在pre-commit文件 ...
- 一款检测代码中TODO的eslint插件
一款检测代码中TODO的eslint插件 前言 看了我标题进来的同学应该也知道我做的是个啥东西 没错是一个eslint插件,前端魔法师们日常所使用的工具之一 什么?你不知道eslint是干嘛的--吃鲸 ...
- 它说你的代码有 Bug「GitHub 热点速览 v.21.44」
作者:HelloGitHub-小鱼干 本周热点上的榜单大多数提升工作效率的实用工具,像是一个 API 管理所有通知消息(包括推送.邮件-)的 notifire,再是高速解析 JSON 文件的 simd ...
- IDEA插件(Android Studio插件)开发示例代码及bug解决
IDEA插件(Android Studio插件)开发示例代码及bug解决 代码在actionPerformed方法中,有个AnActionEvent e 插件开发就是要求我们复写上述的这个方法即可,在 ...
- 神兽保佑代码无bug O(∩_∩)O
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- Caffe使用step by step:r-cnn目标检测代码
深度学习算法火起来之后,基于深度学习各种模型都如雨后春笋一般在各个领域广泛应用. 由于想把深度学习算法应用在在视频目标检测方向,得到一个较好的结果.由于视频数据的复杂性,因此使用深度学习算法在视频中的 ...
- 神兽保佑-代码无BUG
┏┓ ┏┓┏┛┻━━━┛┻┓┃ ┃ ┃ ━ ┃┃ ┳┛ ┗┳ ┃┃ ┃┃ ┻ ┃┃ ┃┗━┓ ┏━┛ ┃ ┃ 神兽保佑 ┃ ┃ 代码无BUG! ┃ ┗━━━┓ ┃ ┣┓ ...
随机推荐
- Java内存模型。
Java内存模型: 准备知识:缓存,缓存一致性,硬件缓冲区:写缓冲区.无效化队列,内存重排序,内存屏障. 1.Java内存模型概念. 首先,在并发的情况下,计算机系统必须解决这样两个问题:第一,一个处 ...
- SQL Server 两条数据创建时自动关联
begin ),(, ))) from workplan a join org_employee b on b.id = a.idowner , LEN(aa.sglzbbh))) glh from ...
- Linux Workqueue【转】
转自:http://kernel.meizu.com/linux-workqueue.html 21 August 2016 Workqueue 是内核里面很重要的一个机制,特别是内核驱动,一般的 ...
- 201871010121 王方 《面向对象程序设计(JAVA)》第七周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- 201871010128-杨丽霞《面向对象程序设计(java)》第十六周学习总结
201871010128-杨丽霞<面向对象程序设计(java)>第十六周学习总结(1分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-dai ...
- 201871010133-赵永军《面向对象程序设计(java)》第十五周学习总结
201871010133-赵永军<面向对象程序设计(java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- day21_7.25 面向对象之继承
一.继承 什么是继承? 继承是一种关系,就是描述两者之间什么是什么的关系. 在程序中,继承描述的是类与类之间的关系. 例如a如果继承了b,a就具备了b的所有变量与方法,可以直接调用. class B: ...
- 【使用篇二】SpringBoot整合Listener(3)
两种方式: 通过注解扫描完成 Listener 组件的注册 通过方法完成 Listener 组件注册 一.通过注解扫描完成 Listener 组件的注册 1. 编写Listener类 /*** spr ...
- AWS云教育账号创建以及搭建数据库
注册过程繁琐,本文强调关键几点 首先拿到aws的二维码,进入之后填写相关个人信息,用学校邮箱注册,用学校邮箱注册!! 之后审核会有大约10分钟的过程,之后会收到确认邮件 点进去之后就可以设置自己的密码 ...
- 快速调用Android虚拟机
由于使用Android studio开发flutter 每次打开软件都需要很长时间,所以我自己使用vscode进行开发,没有虚拟机也开发不了,于是就有了这篇博客的作用啦 在本地桌面新建一个xxx.ba ...