sonarqube介绍
SonarQube®是一种自动代码审查工具,可检测代码中的错误,漏洞和代码味道。它可以与您现有的工作流程集成,以实现跨项目分支和提取请求的连续代码检查。
特征:
- 一个开源的代码质量管理系统
- 支持超过25种编程语言:Java、C/C++、C#、PHP、Flex、Groovy、JavaScript、Python、PL/SQL、COBOL等。(不过有些是商业软件插件)
- 可以在Android开发中使用
- 提供重复代码、编码标准、单元测试、代码覆盖率、代码复杂度、潜在Bug、注释和软件设计报告
- 提供了指标历史记录、计划图(“时间机器”)和微分查看
- 提供了完全自动化的分析:与Maven、Ant、Gradle和持续集成工具(Atlassian Bamboo、Jenkins、Hudson等)
- 与Eclipse开发环境集成
- 与JIRA、Mantis、LDAP、Fortify等外部工具集
- 支持扩展插件
- 利用SQALE计算技术债务
- 支持Tomcat。不过计划从SonarQube 4.1起终止对Tomcat的支持。
检测标准:
SonarQube(sonar)是一个开源平台,用于管理源代码的质量。 SonarQube不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。 SonarQube可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。
(1) 不遵循代码标准
SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
(2) 潜在的缺陷
SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
(3) 糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
(4) 重复
显然程序中包含大量复制粘贴的代码是质量低下的,SonarQube可以展示 源码中重复严重的地方。
(5) 注释不足或者过多
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
(6) 缺乏单元测试
SonarQube可以很方便地统计并展示单元测试覆盖率。
(7) 糟糕的设计
通过SonarQube可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过SonarQube可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合
原理:
SonarQube服务器
1.Web服务器的开发者,管理者,浏览质量快照和配置SonarQube实例
2.基于Elasticsearch搜索服务器从UI向后搜索
3.负责处理代码分析报告计算引擎服务器,并将其保存在数据库SonarQube
4.SonarQube数据库来存储
5.多个插件
6.一个或多个SonarQube Scanners:可以与CI服务进行集成
sonarqube安装
下载链接:https://www.sonarqube.org/downloads/
下载完成直接解压即可
java11下载并配置好环境变量(因为下载的是最新版本8.8,官方说明8.0以后就只支持java11运行环境,如果你安装的不是java11就会出现各种报错)
下载链接:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
sonarqube使用
打开安装目录下的bin目录,这里有多个系统的执行程序
进入win下面的目录,启动Starsonar.bat
启动界面如下则成功(启动时间有点长,请耐心等待):
启动完成后,进入管理界面
访问 http://127.0.0.1:9000/
输入默认的账号admin 密码admin,然后成功进入
然后可以参考我之前的教程进行汉化,这里就不在介绍
扫描项目
1.创建新项目,名称随便填
2.创建令牌
选择适合自己的环境配置,然后按照下面的步骤进行操作
下载地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
我这里选择windows,然后解压,解压完配置环境变量
进入需要扫描的项目,然后执行生成的扫描命令,每个人的命令不同,请不要复制我的哦
cd ***
sonar-scanner.bat -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://127.0.0.1:9000" -D"sonar.login=fa019059d2a973a8da0d3a24d9f1d6c10f843dd0"
执行会自动生成记录到系统中
进入127.0.0.1:9000
上面这种扫描方式适合临时使用,推荐使用下面的方法
首先在需要扫描的目录下创建sonar-project.properties文件,写入如下配置
# 唯一的键
sonar.projectKey=my:project
# 项目名称
sonar.projectName="My project"
# 项目版本
sonar.projectVersion=1.0
# 项目目录
sonar.sources=.
# 项目的语言
sonar.language=python
# 项目编码
sonar.sourceEncoding=UTF-8
# 项目令牌
sonar.login=9b2228eff7eb4fd17e1f08d9bd1324caa823c5f5
然后进入刚才的目录执行sonar-scanner,也同样扫描成功
后面重复执行时,只需要修改版本号即可