SonarQube 插件之 Issues Report & SonarLint 的配置及使用

目录

  • Issues Report Plugins 介绍
  • Issues Report Plugins 使用
  • SonarLint For IntelliJ IDEA 安装及配置

1、Issues Report Plugins 介绍

使用 Issues Report Plugins 插件可以为我们生成一份 HTML 格式的问题报告,对于开发人员来说是很有好处的,我们可以在改动代码后 Push 代码到仓库前,检测一下代码质量,生成问题报告,提醒自己避免提交有明显问题的代码到仓库中,当然也可以去 SonarQube Web 上查看详细情况。

2、Issues Report Plugins 使用

Issues Report Plugins 插件的使用很简单,只需要 Maven 命令行指定参数执行即可。注意:SonarQube > 5.1 版本,该插件已经过时了,不过我们还是直接可以使用,免安装。5.1 版本以后由 SonarLint 替代该插件。

mvn sonar:sonar 
    -Dsonar.analysis.mode=preview  # 设置 mode,默认为preview

    -Dsonar.issuesReport.lightModeOnly=true # 设置是否只生成新增问题的报告

    -Dsonar.issuesReport.html.enable=true # 设置生成 HTML 格式的报告
    -Dsonar.issuesReport.html.name=xxxx # 设置生成 HTML 报告的文件名字
    -Dsonar.issuesReport.html.location=/xx/xx # 设置生成 HTML 报告的文件存储路径

    -Dsonar.issuesReport.console.enable=true # 设置报告输出到控制台

当设置-Dsonar.issuesReport.html.enable=true时,该插件默认会生成两份 HTML 报告,一份是包含所有问题的报告 ,一份为只包含新增问题的报告 ,除非设置了-Dsonar.issuesReport.lightModeOnly=true,则只生成包含新问题的报告。默认生成报告的路径为<maven_project>/target/sonar/issues-report/,使用-Dsonar.issuesReport.html.location 可修改生成路径。报告默认文件名为 issues-report.html (全部问题报告),issues-report-light.html(新增问题报告),使用-Dsonar.issuesReport.html.name=xxxx 可修改生成的文件名称。当设置-Dsonar.issuesReport.console.enable=true时,则不会生成HTML文件报告,会将检测结果打印到控制台输出。

示例:

$ mvn sonar:sonar -Dsonar.analysis.mode=preview -Dsonar.issuesReport.html.enable=true

...
[INFO] HTML Issues Report generated: /Users/wanyang3/Documents/hwy/IdeaProjects/mavenDemo/target/sonar/issues-report/issues-report.html
[INFO] Light HTML Issues Report generated: /Users/wanyang3/Documents/hwy/IdeaProjects/mavenDemo/target/sonar/issues-report/issues-report-light.html
...
$ mvn sonar:sonar -Dsonar.analysis.mode=preview -Dsonar.issuesReport.console.enable=true

...
[INFO] 
-------------  Issues Report  -------------

        +2 issues

        +1 critical
        +1 major

-------------------------------------------
...

3、SonarLint For IntelliJ IDEA 安装及配置

SonarLint 是为了替代上边 Issues Report Plugins 插件,并且更方便的集成到我们日常的开发工具里面去。SonarLint For IntelliJ IDEA 就是专门为 IDEA 工具提供的插件,它可以为开发人员时刻返回新的 Bug 以及其他质量问题,并且很直观显示在工具上边。现在支持的语言有 Java、 JavaScript 、PHP。

SonarLint 插件安装也很简单,点击 IntelliJ -> Plugins -> Browse Repositories -> 输入 SonarLint search -> install 等待下载安装完毕,点击 restart 重启 IDEA即可。

设置 SonarLint 全局配置。点击 IntelliJ -> Other Settings -> SonarLint General Settings -> Add 弹出框添加一个 New SonarQube Server,这里我们添加之前本地搭建的 SonarQube 服务 URL:http://127.0.0.1:9000,服务别名为:my_sonarqube,下一步配置认证,可以设置 Token 或者 Login / Password,配置完成后点击 Update Binding,更新绑定信息,最后点击 Apply 即可。注意:认证 Token 可以去 SonarQube Web 上生成一个认证 Token 或者用用户名密码登录均可

设置 SonarLint 项目配置,点击 IntelliJ -> Other Settings -> SonarLint Project Settings -> Bind to Server,选择刚我们配置的全局配置 my_sonarqube,在 SonarQube project 项目列表里面选择对应的项目,最后点击 Apply 即可。注意:这里的项目列表是从配置的 SonarQube 服务上拉取下来的项目,如果没有加载,可以点击 Update project list 重新加载。

以上配置完成后,就可以愉快的使用 SonarLint 插件了,这里我们以 mavenDemo 项目为例,故意写一些垃圾代码,看下检测结果吧。

参考资料

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python3

Centos7 安装python虚拟环境+Django

鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和...

1652
来自专栏一个会写诗的程序员的博客

Kotlin 使用命令行执行 kts 脚本

我们可以运行如下命令得到一个可交互的 shell,然后输入任何有效的 Kotlin 代码,并立即看到结果

1403
来自专栏Android相关

Gradle For Android(6)--测试单元

为了保证APP的质量,有一些自动化测试也是很重要的。很长一段时间Android Developement Tools缺少了对自动化测试的支持。但是最近Googl...

974
来自专栏FreeBuf

如果有人使用VENOM工具绕过反病毒检测,该如何防护?

如今,很多恶意软件和Payload都会使用各种加密技术和封装技术来绕过反病毒软件的检测,原因就是AV产品很难去检测到经过加密或加壳的恶意软件(Payload)。

732
来自专栏灯塔大数据

15 个 Android 通用流行框架大全

? 1 缓存 名称描述DiskLruCacheJava实现基于LRU的磁盘缓存 2 图片加载 名称描述Android Universal Image Lo...

2996
来自专栏咖啡的代码人生

IntelliJ IDEA 使用JSTL标签库(IDEA 加载 tld文件)

这两天在 IntelliJ IDEA 中 使用 C标签(JSTL)的时候发现引入进来有问题,不但没提示而且还有红色警告,所以经过一番谷歌的查找之后解决了这个问...

4484
来自专栏鬼谷君

Jenkins和gitlab集成自动构建

Jenkins上需要安装如下插件 Gitlab Hook Plugin,GitLab Plugin

661
来自专栏猿天地

Spring Cloud Eureka 控制台快速查看Swagger API文档

在服务比较多的情况下,突然想看某个服务的API 文档 虽然外面使用了Swagger来进行API的管理,但是还是得找到对应的服务,然后访问Swagger的管理页面...

2887
来自专栏Java学习123

Maven学习问题解决

2988
来自专栏pydata

nginx permission root

参照nginx 13:permission denied solved The root directive is the problem here. Quo...

873

扫码关注云+社区