手把手使用SonarQube分析、改善项目代码质量(基于SnarQube 8.9.0)

手把手使用SonarQube分析、改善项目代码质量(基于SnarQube 8.9.0)

TIPS

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

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

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

系统需求

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

其他需求详见:https://docs.sonarqube.org/8.9/requirements/requirements/

TIPS

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

下载

前往 https://www.sonarqube.org/downloads/ ,按需下载即可,一般下载Community版本即可。

image-20210505214106245

安装与启动

  • 解压压缩包

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

    ├── bin
    │   ├── jsw-license
    │   ├── linux-x86-64
    │   ├── macosx-universal-64
    │   └── windows-x86-64
    
  • 根据你的操作系统,切换到相应目录。例如,您的机器是macOS ,则可切换到 macosx-universal-64 目录。

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

    ./sonar.sh start
    

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

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

    Sonar首页

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

  • 如需重启,只需执行 ./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/8.9/requirements/requirements/

举个例子:SonarQube 8.9要求使用PostgreSQL 9.6/10/11/12/13,并且必须配置使用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配置

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

  • 找到类似如下的内容:

    #----- 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
    

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

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

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

整合Maven

方法一:全局配置

  • 在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>
    
  • 到Maven项目的根目录执行如下命令,即可使用SonarQube分析项目:

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

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

    [INFO] Analysis total time: 2.757 s
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  3.727 s
    [INFO] Finished at: 2021-05-05T21:54:43+08:00
    
  • 此时,再次访问 http://localhost:9000 ,即可看到类似如下的界面:

    分析结果

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

方法二:直接命令行控制

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

  • 点击按钮后,将会看到生成的Token,例如 0ba332dfb69fd1f11ed206a7fc856453cba2d23f

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

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

插件安装

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

  • 按照图示进行操作:

    安装插件

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

    汉化

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

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值