KS
Knowledge Sharing
知识分享
现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。
前言
现在很少有公司做 code review(对写好的程序做代码级检查),于是很多人在进度的压力下潦草应付,只要测试通过就算搞定。表面上看,开发速度很快,进度有保障;但实际上,这样的程序连开发者自己都很难读懂,一旦有bug,很难调试,将来维护升级都非常困难。
OK,如果你意识到没有进行 code review 有很大风险,而且你的项目已经开发了很久了,如果现在一行一行去看代码进行审核的话,可想而知是非常痛苦的一件事情,给大家推荐一款非常实用的软件SonarQube,他能帮你找出代码潜在BUG,安全漏洞,不良做法,不良规范,等等。
从现在开始,从我做起,每天进行代码审查。
SonarQube简介
sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量,对于领导来说用来审查代码质量再好不过了,当然 作为开发者使用 实时审查代码 防止代码不过关 防止被领导上级说你 再好不过了!
sonar 通过插件形式,可以支持包括:java,C#,C/C ,P/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测
sonar界面如下:
它可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题
- 不遵循代码标准sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规
- 范代码编写潜在的缺陷sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷
- 糟糕的复杂度分布文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
- 重复显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方
- 注释不足或者过多没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
- 缺乏单元测试sonar可以很方便地统计并展示单元测试覆盖率
- 糟糕的设计
安装准备
mysql5.7(64位) 下载地址如下:
https://dev.mysql.com/downloads/installer/
maven3 自行下载 并配置环境变量
jdk1.8(64位) 自行下载并配置环境变量
SonarQube7.0 下载地址如下
https://www.sonarqube.org/downloads/
注:sonar对版本要求很大 尤其是jdk和mysql 一定要是使用较新的版本
sonar搭建
1、配置mysql
sonar需要数据库的支持所以要安装数据库并配置
mysql的安装步骤我就不说了 这里强调一下 编码使用 utf-8
1.1、创建数据库名为 sonar
代码语言:javascript复制CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
1.2、创建一个sonar用户并把这个用户的密码设置为soanr
代码语言:javascript复制CREATE USER 'sonar' IDENTIFIED BY 'sonar';
1.3、将第二步中创建的sonar数据库的所有权限赋给第三步中创建的sonar用户
代码语言:javascript复制GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
1.4、最重要的一步修改(此处是坑一定要修改要不然会出错)
修改mysql配置文件 my.ini
将 max_allowed_packet 的值改为150M (原来为4M 改大点就行)
找不到mysql的配置文件位置的小伙伴请把显示隐藏目录打开
我的mysql配置文件路径如下(仅供参考):
2、安装并配置SonarQube
2.1、将下载好的sonar解压到本地 目录结构如下:
启动文件在bin文件夹下
2.2、修改conf文件夹下面的 sonar.properties 文件 加入如下代码
代码语言:javascript复制sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
如图所示:
2.3、启动SonarQube 启动文件
成功如下图:
2.4、登陆并修改中文显示
输入 localhost:9000 登陆 sonar 界面是英文 并登陆 账号 admin 密码 admin 如图所示:
登陆成功界面 如图:安装中文插件如图所示:
安装之后软件会要求重启 确认并重启 此时 sonar 已经是中文显示了
2.5、添加 svn 账号 (git 设置与之类似 如果项目并非 svn 检出 或 git 检出 那么忽略此步骤)
打开sonarqube的控制台,使用admin登录后 ,在配置->SCM->菜单中,将Disabled the SCM Sensor设置为true 或者在svn页面,设置svn的用户名和密码。
(博主为了给大家演示 将中文插件卸载 结果现在还没安装上 心里苦啊 网不好)
至此 sonar 本地环境搭建完毕
3、使用Maven集成sonar
修改在 maven 安装目录 conf文件夹下面的 settings.xml 文件 在文件中加入如下代码:
代码语言:javascript复制<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true</sonar.jdbc.url>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://localhost:9000</sonar.host.url>
</properties>
</profile>
如图:
在idea中使用sonar扫描项目
此时 在 sonar 运行的情况下 在 idea 的 terminal控制台下(alt F9)执行 mvn sonar:sonar 或者 mvn clean install sonar:sonar -e 命令 即可 等待成功
温馨提示:可能会报错 什么 test 什么 博主忘记了 如果出现此错误 在项目主pom中 添加如下代码即可
代码语言:javascript复制<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</profiles>
具体位置在 :提供参考
此时 在执行上面的命令 等待即可 等待的时间与项目大小成正比
这时 打开sonar首页(localhost:9000) 就会发现 此时项目已经被扫描 如图所示:
之后你就可以知道哪里发生了bug并进行修改了!!
在idea中安装sonar插件
sonar不仅提供以上功能 在开发中还提到警示作用 如果在开发中使用 并进行编写代码 发现bug及时处理 会提高代码的健壮性和维护性 所以 我们在idea中安装sonar插件 实时分析当前代码
1、打开 idea中 的 setting(设置) 如下图所示步骤:
此处我已经安装好 你们点 install 就好
2、重启idea
3、在idea下方工具栏中就会看到 sonarline 的字样 此时打来一个类 sonar就会对当前类进行分析 如图:
根据提示并修改代码 提高代码质量!
此时 sonar 教程到此结束 !如果有小伙伴运行发生错误 请留言进行讨论