menu

如何在IDEA中使用Java静态代码扫描插件之 SonarLint

  • date_range更新于 2019/12/27 info
    sort
    工具
    label
    日志

概述

在我们编程开发的过程中,每个人编写代码的习惯都不一样,同样的功能可以有不同的代码实现,虽然看起来都可以正常使用,但实际上更规范的代码可避免很多不必要的麻烦,不规范的代码正常使用时没问题,在一些特定的情况下就会有问题,那么如何避免编写不规范的代码呢?

内容

Java静态代码扫描插件有很多,国内比较出名的有阿里巴巴研发的 p3c 静态代码扫描插件,本文所使用的插件是 SonarLint,两者之间的规范有部分是一致的。接下来就为大家介绍如何使用 SonarLint 静态扫描插件来检测不规范的 Java 代码。

安装 SonarLint 插件

本文所使用的集成开发环境是 IDEA ,这给我们安装插件带来了极大的便利,只需要在 IDEA 中按照以下的菜单路径即可找到 SonarLint 插件:

File -> Settings -> Plugins -> 输入 SonarLint

如何在IDEA中使用Java静态代码扫描插件之 SonarLint

安装 SonarLint 静态扫描插件之后需要重启 IDEA

IDEA 无法搜索安装 SonarLint 插件解决办法

注意,在 IDEA 中直接 Plugins 中搜索插件时可能无法加载,一直显示空白,这是因为网络阻塞原因导致,如果无法搜索加载,我这里提前给大家准备了 SonarLint-v4.3.0.3495.zip 插件压缩包版下载(最低 IDEA 版本:2016.3.8+),按照以下操作方式安装下载的 zip 包即可安装

如何在IDEA中使用Java静态代码扫描插件之 SonarLint

使用 SonarLint 插件

重启之后,可以在需要扫描的 Java 文件、项目目录等位置右键,在弹出菜单最底部找到 SonarLint 之后选择 Analyze with SonarLint 即可开始扫描

如何在IDEA中使用Java静态代码扫描插件之 SonarLint

若右键选择的目录下代码较多,可能会造成 IDEA 卡顿,需要耐心等待一下插件扫描完毕。

扫描完毕之后可以通过 IDEA 底部状态栏点击 SonarLint 查看扫描结果

如何在IDEA中使用Java静态代码扫描插件之 SonarLint

优化不规范的代码

扫描完成后,可以点击对应的文件进行代码优化,这里建议按照优先级别从高到低进行统一优化(一般各个文件里面会有大量同样的问题)。

以下是一些常见的扫描结果

如何在IDEA中使用Java静态代码扫描插件之 SonarLint

规范分类为:bug(Bug) > vulnerability(漏洞) > smell(坏味道)
规范级别为:Blocker(阻断) > Critical(严重) > Major (主要) > Minor(次要) > Info(提示)

如何禁用 SonarLint 自动扫描

插件安装之后,默认的设置是在代码保存之后会自动触发 SonarLint 插件进行静态代码扫描,这对于习惯写一行代码就按 Ctrl+S 保存代码的同学会造成大量的扫描任务,以至于 IDEA 运行速度下降,那么如何禁用呢?按照以下路径找到配置去掉默认勾选的 Automatically trigger analysis 即可

File -> Settings -> Other Settings -> SonarLint General Settings

如图去掉默认的勾选保存即可禁止 SonarLint 插件进行自动 Java 静态代码扫描

如何在IDEA中使用Java静态代码扫描插件之 SonarLint

禁用之后,需要扫描时手动右键文件、目录,或者直接右键当前代码选择弹出菜单底部的 Analyze with SonarLint 即可触发扫描。

总结

静态代码扫描插件虽然可以帮我们快速找到不规范的 Java 代码,但我们在编码的过程中也应当遵循一定的规范,在没有规范的情况下,时间越长扫描出来的问题越多,优化起来难度也越大。

如果平时不在意代码规范,这对于程序员来说是一种负债,负债是有利息的,时间越长,累计的债务越多。

版权

> 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

> 原创作者:10086@xiaoi.me 发表于 Xiaoi's Blog:https://blog.xiaoi.me

> 原文链接:https://blog.xiaoi.me/2019/12/26/how-to-use-sonarlint

扫码关注我,在线与我沟通、咨询

Xiaoi's Blog

***转载请保留原文链接以及版权信息***