专栏首页A周立SpringCloud手把手使用SonarQube分析、改善项目代码质量

手把手使用SonarQube分析、改善项目代码质量

TIPS 本文基于SonarQube 7.9.1,理论支持6.0及更高版本。

SonarQube是一个开源的代码质量管理系统,可用来快速定位代码中的Bug、漏洞以及不优雅的代码。它支持几乎所有的常见编程语言,例如Java、JavaScript、TypeScript、Kotlin、Ruby、Go, Scala等。并且还有插件机制,利用插件,可以让SonarQube更加强大,例如可以整合Findbugs、PMD、Checkstyle等。可以说,SonarQube是一款提升项目代码质量必备的根据。

本文手把手搭建、使用SonarQube。

下载

前往 https://www.sonarqube.org/downloads/ ,按照如图说明下载即可。建议下载 LTS 版本,以便获得长期的维护与支持。

系统需求

•X64的操作系统•JDK(对于7.9.x,那么需要JDK 11或更高版;对于6.x - 7.8.x,需要JDK 8或更高版本)•2G内存

其他需求详见:https://docs.sonarqube.org/7.9/requirements/requirements/[1]

TIPS •《其他需求》建议大家参照一下,里面探讨如何修改Linux文件描述符限制等说明;•上面贴的是是7.9版的链接,如果你使用的是其他版本,只需将版本名称改掉即可,例如改为7.8即可查看7.8.x的需求。

安装与启动

1 解压压缩包

2 将目录切换到SonarQube的 /bin 目录,可看到类似如下的目录结构:

├── bin
│   ├── jsw-license
│   ├── linux-x86-64
│   ├── macosx-universal-64
│   └── windows-x86-64

3 根据你的操作系统,切换到响应目录。例如,您的机器是macOS ,则可切换到 macosx-universal-64 目录。

4 执行如下命令即可启动SonarQube。

./sonar.sh start

当然,该shell还有其他命令,可输入 ./sonar.sh --help 或者 ./sonar.sh 查阅。

5 稍等片刻,访问 http://localhost:9000/ 即可看到类似如下的界面,说明安装成功。

6 停止SonarQube,只需执行 ./sonar.sh stop 即可。

7 如需重启,只需执行 ./sonar.sh restart 即可。

管理员登录

访问:http://localhost:9000

账号:admin

密码:admin

生产环境可用

默认情况下,SonarQube使用的是H2数据库,这是一款非常流行的嵌入式数据库。但生产环境中,SonarQube并不建议使用H2。SonarQube支持多种数据库,例如Qracle、PostgreSQL、SQL Server等。下面,我们以PostgreSQL为例,让SonarQube使用PostgreSQL存储数据。

TIPS 支持的数据库及数据库版本请前往这篇文档查看,避免SonarQube不支持你的数据库版本以及注意点。 https://docs.sonarqube.org/7.9/requirements/requirements/[2] 举个例子:SonarQube 7.9要求使用PostgreSQL 9.3-9.6或者PostgreSQL 10,并且必须配置使用UTF-8

搭建PostgreSQL

简单起见,我用Docker搭建PostgreSQL。

version: '3.1'

services:
  postgres:
    image: postgres:10
    restart: always
    environment:
      - POSTGRES_USER=itmuch
      - POSTGRES_PASSWORD=itmuch
      - POSTGRES_DB=sonar
    ports:
      - "5432:5432"

修改SonarQube配置

1 修改配置文件:$SONARQUBE_HOME/conf/sonar.properties

2 找到类似如下的内容:

#----- PostgreSQL 9.3 or greater
# By default the schema named "public" is used. It can be overridden with the parameter "currentSchema".
#sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema

在这行下面,添加如下内容:

sonar.jdbc.url=jdbc:postgresql://localhost/sonar?currentSchema=public
sonar.jdbc.username=itmuch
sonar.jdbc.password=itmuch

这里,数据库地址、账号、密码根据你的需求修改。

3 执行 ./sonar.sh restart ,重启SonarQube。观察PostgreSQL,可以发现,此时SonarQube会自动在PostgreSQL数据库中建表并插入初始化数据。

4 类似的方式,你也可以为你的SonarQube配置其他数据库。

整合Maven

方法一:全局配置

1 在Maven的全局配置文件: $MAVEN_PATH/conf/settings.xml (也可能是.m2/settings.xml 看你是怎么配置Maven的)中添加如下内容:

<profile>
  <id>sonar</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
  <properties>
    <sonar.jdbc.url>jdbc:postgresql://localhost/sonar?currentSchema=public</sonar.jdbc.url>
    <sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
    <sonar.jdbc.username>itmuch</sonar.jdbc.username>
    <sonar.jdbc.password>itmuch</sonar.jdbc.password>
    <sonar.host.url>http://127.0.0.1:9000</sonar.host.url>
  </properties>
</profile>

2 到Maven项目的根目录执行如下命令,即可使用SonarQube分析项目:

mvn sonar:sonar -Dsonar.java.binaries=target/sonar

等待片刻后,项目构建成功:

[INFO] Spring Cloud YES ................................... SUCCESS [ 12.431 s]
[INFO] turbine-stream-server .............................. SKIPPED
[INFO] zuul-server ........................................ SKIPPED
[INFO] hystrix-dashboard .................................. SKIPPED
[INFO] commons ............................................ SKIPPED
[INFO] ms-content-sample-mybatis .......................... SKIPPED
[INFO] ms-consumer-sample ................................. SKIPPED

3 此时,再次访问 http://localhost:9000 ,即可看到类似如下的界面:

如右上角所示,此时可以看到SonarQube已经为我们分析了一个项目,该项目有1个Bug、2个脆弱点、31个代码味道问题。点击项目名称(图中的 Spring Cloud YES)即可看到详情,可以根据SonarQube给我们的提示进行修正、重构。

方法二:直接命令行控制

1 右上角头像 - My Account - Security页中,在 Generate New Token 中填入你的Token名称,并点击Generate 按钮。

2 点击按钮后,将会看到生成的Token,例如 62b615f477557f98bc60b396c2b4ca2793afbdea

3 使用如下命令,即可使用Sonar分析项目。

mvn sonar:sonar \
    -Dsonar.host.url=http://localhost:9000 \
    -Dsonar.login=62b615f477557f98bc60b396c2b4ca2793afbdea \
    -Dsonar.java.binaries=target/sonar

插件安装

SonarQube有一个强大的插件机制。以安装汉化插件为例——

1 按照图示进行操作:

2 点击 Install 按钮后,将会弹出重启SonarQube的提示,点击即可重启。重启后,可看到类似如下的界面

3 类似的方式,也可为SonarQube安装其他插件。

References

[1]: https://docs.sonarqube.org/7.9/requirements/requirements/ [2]: https://docs.sonarqube.org/7.9/requirements/requirements/

本文分享自微信公众号 - IT牧场(itmuch_com),作者:itmuch

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

原始发表时间:2019-08-31

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 网易云音乐的消息队列改造之路

    网易云音乐自2013年上线后,业务保持了高速增长。云音乐除了提供好听的音乐外,还留下了我们在乐和人上的美好回忆。本文整理自网易云音乐消息队列负责人林德智在近期 ...

    用户1516716
  • Spring Boot、Dubbo项目Mock测试踩坑与总结

    本文是对Spring Boot、Dubbo项目进行Mock测试的总结与踩坑实录。 搜索了一圈,居然没发现类似的文章,莫非用Dubbo的朋友们都不Mock测试,或...

    用户1516716
  • 手动安装Docker 17.06

    以前我们已经讨论过如何使用 yum 之类的包管理工具安装Docker(可在本博客搜索)。 然而有时,我们的机器无法联网,此时就需离线安装了。 本文详细探讨如何...

    用户1516716
  • 手把手使用SonarQube分析、改善项目代码质量

    SonarQube是一个开源的代码质量管理系统,可用来快速定位代码中的Bug、漏洞以及不优雅的代码。它支持几乎所有的常见编程语言,例如Java、JavaScri...

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

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

    民工哥
  • SonarQube部署及代码质量扫描入门教程

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

    KenTalk
  • Sonar本地环境搭建

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

    庞小明
  • 配置sonarqube+maven

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

    庞小明
  • sonarQube

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

    一滴水的眼泪
  • Mac上sonar插件的安装及使用

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

    用户7798898

扫码关注云+社区

领取腾讯云代金券