专栏首页互扯程序项目有BUG?代码审查没做好?没关系!SonarQube详细使用教程

项目有BUG?代码审查没做好?没关系!SonarQube详细使用教程

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

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 

1.2、创建一个sonar用户并把这个用户的密码设置为soanr

CREATE USER 'sonar' IDENTIFIED BY 'sonar';

1.3、将第二步中创建的sonar数据库的所有权限赋给第三步中创建的sonar用户

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 文件 加入如下代码

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 文件 在文件中加入如下代码:

<profile>
    <id>sonar</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
    <sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8&amp;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中 添加如下代码即可

<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 教程到此结束 !如果有小伙伴运行发生错误 请留言进行讨论

本文分享自微信公众号 - 互扯程序(chat_routine),作者:暴走森

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis 单线程还高并发?不冲突吗?

    最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分...

    互扯程序
  • Java集合深度解析之ArrayList

    KS Knowledge Sharing 知识分享 现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。 转自:...

    互扯程序
  • 量子计算机研发20年,刚进入它的“电子管时代”

    量子计算机(quantum computer)是一类遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置。当某个装置处理和计算的是量子信息,运行...

    互扯程序
  • Mac上sonar插件的安装及使用

      sonqube下载地址:http://www.sonarqube.org/downloads/

    用户7798898
  • sonar+Jenkins 构建代码质量自动化分析平台

    Sonar 是一个用于管理代码质量的开源工具,可以分析代码中的bug和漏洞以及Code Smells,支持20多种编程语言的检测,如java,c/c++,pyt...

    民工哥
  • Sonar本地环境搭建

    一个新项目准备上线提测了,为了在提测之前做一下代码走查,同时了解项目目前的质量情况,就在本地搭建了一套sonar环境。搭建的过程中遇到了很多问题,sonar官方...

    庞小明
  • 配置sonarqube+maven

     Maven与Sonar配合使用       准备工作:下载sonarqube源码即可  步骤: 1)、安装sonar           解压,启动sonar...

    庞小明
  • SonarQube部署及代码质量扫描入门教程

    参考:https://ken.io/note/centos-mysql57-setup

    KenTalk
  • sonarQube

    SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C...

    一滴水的眼泪
  • 检测代码潜在bug和质量之SonarQube

    下面的参数列表并不完整,在WebUI中全局或项目级别的设置,都可以作为分析参数,如下图中的关键字:

    sunsky

扫码关注云+社区

领取腾讯云代金券