sonar是什么
sonar是一个代码质量管理的开源平台,用于管理源代码的质量,通过插件形式,可以支持包括java、C#、JavaScript等二十余种编程语言的代码质量管理与检测。
sonar是从七个维度检测代码质量:1) 不遵循代码标准sonar可以通过PMD,CheckStyle,Findbugs等代码规则检测工具规范代码编写 2)
潜在的缺陷sonar可以通过PMD,CheckStyle,Findbugs等代码规则检测工具检测出潜在的缺陷 3)
糟糕的复杂度分布文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且没有自动化的单元测
试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试 4)
重复显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方 5)
注释不足或者过多没有注释将使代码可读性变差,特别是当不可避免出现人员变动时,程序的可读性大幅度下降,而过多的注释又会使得开发人员将精力过多的花费在阅读注释上,亦违背初衷
6) 缺乏单元测试sonar可以很方便地统计并展示单元测试覆盖率 7)
糟糕的设计通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则,
可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况,检测耦合。
sonar安装
以mac安装sonar为例,并且只是前端安装sonar的过程,不涉及后端数据等安装
1. 安装JDK
JDK下载地址
安装步骤: 按照提示安装即可
2. sonar-SonarQube 安装
1)
sonar-SonarQube 安装地址
2)下载完成:解压缩到 /usr/local
Mac下/usr/local目录默认是对于Finder是隐藏,
如果需要到/usr/local下去,打开Finder,然后使用command+shift+G
3)终端进入
cd /usr/local/sonarqube-9.1.0.47736/bin/macosx-universal-64
4)启动/停止/重启服务
./sonar.sh start //启动服务
mac中如果提示无法打开“wrapper”,因为无法验证开发者,则执行sudo spctl –master-disable命令,并在系统设置——安全与隐私——通用中,允许任何来源下载的App
5)打开网址 http://localhost:9000 登录admin/admin
6)汉化-> 按图操作
搜索Chinese,找到插件后点击install。这个过程可能会失败,就多点击几次install
安装完成后需要重启
重启后再次进入就已经是中文了(重启后需要手动刷新一下页面)
3. sonar-scanner扫描器安装
1)
sonar-scanner下载地址
下载最新版本即可(我下载的sonar-scanner-cli-4.6.2.2472-macosx.zip)
2)下载完成:解压缩到 /usr/local
3)修改环境变量 进入/usr/local
1. sudo vi /etc/profile(需要输入自己的密码)
2. 进入/etc/profile文件,按下键盘字母i,进入编辑模式
3. 在 /etc/profile 的末尾添加
PATH=$PATH:/usr/local/sonar-scanner-4.6.2.2472-macosx/bin
export PATH
4. 添加之后按esc退出编辑模式
5. 在终端输入 :wq! 保存编辑并退出文件
4)source /etc/profile 运行更改
sonar使用
1) 打开http://localhost:9000/ sonarqube平台创建项目并生成projectKey
输入显示名,点击设置后选择CLI,并输入令牌名称
2) 修改环境变量
//在/usr/local目录终端下
vi ~/.bash_profile
//在 bash_profile 的末尾添加(如果文件中原本导出homebrew的环境变量,要注释)
export SONAR_RUNNER_HOME=/usr/local/sonar-scanner-4.6.2.2472-macosx
export PATH=$PATH:$SONAR_RUNNER_HOME/bin
//运行更改
source ~/.bash_profile
3) 查看sonar-scanner是否安装成功
sonar-scanner -v
以下代表安装成功
4) 在项目根目录创建sonar-project.properties文件,并填入以下内容sonar.projectKey是用SonarQube生成的projectKeysonar.sources代表项目源
# must be unique in a given SonarQube instance
sonar.projectKey=datamapping \
# this is the name displayed in the SonarQube UI
sonar.projectName=i2work-operation
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=. \
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
#path to your project build output path
sonar.java.binaries=target/classes
5) 在项目根目录执行
sonar-scanner \
-Dsonar.projectKey=datamapping \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=174cda9b53a749a07d67bbd81462c533b620ab35
//如果指向检测src文件夹下的代码,把 sources设置一下,即执行
sonar-scanner \
-Dsonar.projectKey=datamapping \
-Dsonar.sources=src \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=174cda9b53a749a07d67bbd81462c533b620ab35
运行成功之后,就可以在http://localhost:9000/ 就可以查看检测结果了
sonar设置文件扫描排斥项(或指定扫描源)