根据《代码质量检测(一)—— 常用代码质量管理工具》的介绍和《代码质量检测(二)—— 如何选择代码检查工具》的分析,我们大概得出结论,在当前开源的代码质量检测工具中(阿里系列除外):

pmd:基于源代码分析,主要面向安全编码规则,如“避免声明同名变量”,包括风格类、类型使用等等,具备一定的数据流分析和路径分析能力。

checkstyle:基于源代码,与pmd类似,但更侧重编码的语法风格,分析深度不及pmd。

findbugs:基于字节码分析,大量使用数据流分析技术,侧重运行时错误检测,如空指针引用等,分析深度大于前述两个。

sonar:定位是代码质量平台,本身不进行代码分析,但可以集成各个静态分析工具以及其他软件开发测试工具(如上述的pmd、checkstyle、findbugs等),并基于集成工具的结果数据按照一定的质量模型,如iso-9126,对软件的质量进行评估。且具备和Jenkins、maven等集成的支持。   

        故本文优先选取SonarQube这一款开源工具来进行安装使用。

        官网:Sonar官网

一、SonarLint

        SonarLint是一个IDE的代码质量检测扩展插件,可以帮助我们检测出代码中的坏味道。它能帮助发现和修复我们所写代码质量问题,协助我们在代码提交前就暴露修复问题。

1.1 插件安装

        其安装和配置可参考:IDEA中SonarLint插件的安装与配置_idea sonarlint_智鼎在线IT团队的博客-CSDN博客

(1)在线安装

        IDEA -> File -> Settings -> Plugins -> Marketplace,搜索SonarLint,然后点击installed,再apply - ok就可以了。

 (2)离线安装

1. 需要在Jetbrains的官网下载该插件的离线安装包(注意:需要关注选择的插件版本与自己使用的IDEA版本以及版本号是否适配,可以与自己使用的版本号进行比对)。

2. 打开IDEA,进入 settings.

3. 选择 Plugins, 点击 Install Plugin from Disk.

4. 选择下载后的插件压缩包,然后点击 OK.

5. 点击applyok,重启idea让插件生效

在这里插入图片描述

 在这里插入图片描述

1.2 配置SonarLint General Settings

(1)选择和禁用某些规则

(2)需要同步自定义的规则时,需要绑定到SonarQube

         在弹窗窗口里,填写这个SonarLint的名称,选择的右边配置,输入sonarQube IP和端口号,完成后点击Next.

         设置认证方式,有Token和用户名密码两种方式,根据自己的情况选择对应方式进行配置。

这里选择账号密码的形式,默认为admin/admin。

在这里插入图片描述

        开启自动分析,这里上面红框Automatically trigger analysis有配置是否允许自动分析,默认是勾选上的。根据自己需求选择是否需要勾选开启,然后点击apply保存配置。

在这里插入图片描述

1.3  配置SonarLint Project Settings

(1)选择下图中SonarLint Project Settings的菜单
(2)勾选Enable binding to remote SonarQube server
(3)在Bind to server 右边下拉选择刚才配置的 sonar配置名称
(4)配置SonarQube project,可以点击Search in List,在弹出框里找到想使用的某个规则选择想使用的即可。若弹窗中没有项目,说明再SonarQube中未建立项目,可以现在SonarQube中新建一个空的项目,然后再绑定。
(5)点击Apply使得配置生效保存

在这里插入图片描述

 1.4 使用SonarLint

        在需要检测的单个文件或者单个项目上右键 --> Analyze --> Analyze with SonarLint,或者选中文件或目录,点击菜单栏 Analyze --> Analyze with SonarLint。

        默认会在IDEA底部打开sonarLint标签窗口菜单,根据列出的代码质量问题一个个解决问题即可。

        如果没有或者不小心关闭了底部的sonarLint标签窗口,可以点击菜单 view->Tool Windows中找到 SonarLint重新打开SonarLint窗口

在这里插入图片描述

        有了代码质量检测工具以后,在一定程度上可以保证代码的质量。对于每一个问题,SonarLint都给出了示例,还有相应的解决方案,教我们怎么修改,极大的方便了我们的开发。比如,对于日期类型尽量用LocalDate、LocalTime、LocalDateTime,还有重复代码、潜在的空指针异常、循环嵌套等等问题。

        有了代码规范与质量检测工具以后,很多东西就可以量化了,比如bug率、代码重复率等,还可以自定义各种指标,方便管理人员查看。为此,我们需要使用SonarQube平台来记录每次检测分析的结果,这样就可以进行分析和统计,并且可以直观的看到这一切!

 二、SonarQube

          SonarQube是一个开源的代码质量管理平台。下载地址

        根据自己安装的jdk版本选择合适的SonarQube版本,一定要注意下载该SonarQube之前,需要去文档看下jdk要求

 2.1 安装

        可以参考上述当前版本的SonarQube说明文档

         本文在windows上使用zip安装:

 (1)解压之前下载的安装包

(2)在减压文件的bin目录下,找到对应的启动目录,然后执行其中的StartSonar.bat

(3) 启动成功后,访问http://localhost:9000 用初始管理员账号(admin/admin)登录

 

        将初始密码修改成自己的密码

 2.2 插件拓展

        所有插件的安装方式都一样,汉化、质量检测插件等等。

        (1) 汉化,安装中文插件

        方式一:在线安装

在这里插入图片描述

在这里插入图片描述

         汉化完重启

在这里插入图片描述

         重启完后,重新登录,界面已经是汉化后的

        方式二:离线安装

        因为墙的问题,这让在 github 上的各种插件的下载成了问题,如果你的服务器是内网的,或者你的宽带访问 github 不正常,则需要通过离线下载插件包的方式进行离线处理。

        在插件市场搜索插件并进入插件官方页面:注意,没有外网的,需要找个外网机器下载插件。

        确定插件对应的版本:版本需要匹配 

         将下载的插件jar包放到sonarQube的安装目录下的/extensions/plugins文件夹中。需要确保该文件夹的权限,确保插件有读取权限。

        重启 sonar 服务即可:在 UI 界面上重启,或者直接在服务器上重启 sonar 服务。

在这里插入图片描述

        服务重启完成后,插件就正常被加载生效了。

如果插件目录和插件本身权限不对导致程序无法正确加载插件,查看 sonar 日志可以看到权限错误的异常,这个很容易排查。

      (2) findbug插件 

         分析 Java 代码的基础包下载示例(这是必须的,不然有些插件无法运行);和汉化插件差不多,不在一一赘述。

在这里插入图片描述

如果知道对应的版本号,也可以直接到 Maven 中央仓库下载

        

2.3 配置Scanner        

        接下来,为了把检测的结果传到服务器,我们需要配置一个Scanner,参照Sonar Scanner for Maven

        Maven的SonarScanner被推荐作为Maven项目的默认扫描仪。通过常规Maven目标执行SonarQube分析的能力使其可以在Maven可用的任何地方(开发人员构建、CI服务器等)使用,而无需手动下载、设置和维护SonarQobe扫描仪安装。Maven构建已经拥有SonarQube成功分析项目所需的大量信息。通过基于该信息预配置分析,显著减少了手动配置的需要。

(1)在maven的settings.xml中的<pluginGroups>和<profiles>标签中加入:

<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>http://localhost:9000/sonar</sonar.host.url>
                <!-- 配置自己的账号、密码,就无需每次使用token密钥 -->
                <sonar.login>admin</sonar.login>
                <sonar.password>admin123</sonar.password>
            </properties>
        </profile>
     </profiles>
</settings>

(2)在项目中添加sonar-maven-plugin 插件。

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>3.9.1.2184</version>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

        若无网络,需要手动下载对应版本的插件,然后放置到maven仓库中:

        然后再引入项目中。

(3)在maven中或命令端口执行命令:mvn clean compile sonar:sonar

   或者执行命令时带上账户密码:

mvn clean verify sonar:sonar -Dsonar.projectKey=v1.1.1 -Dsonar.host.url=http:localhost:9000 -Dsonar.login=admin -Dsonar.password=admin123

说明:

projectKey:在sonarQube上创建项目时的项目标识;

host.url:本地sonarQube的地址;

login:sonarQube的登录账户;

password:sonarQube的登录密码(修改后的);

        由于项目设置的jdk为1.8,会出现如下错误:

         设置项目的jdk为11,然后重新使用上述命令编译:

         成功后,可以在控制台中看到这样的输出

        再次刷新 http://localhost:9000/ 会看到该项目的质量分析统计信息

 2.3 关闭服务

        关闭服务时,切勿直接关闭cmd窗口,否则会导致下次开启SonarQube的时候报错。

        正确的做法:在cmd中Ctrl+c终止服务,然后再关闭cmd窗口。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐