侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 352 篇文章
  • 累计创建 135 个标签
  • 累计收到 10 条评论

目 录CONTENT

文章目录

IDEA代码检查插件 SonarLint 的安装配置与使用

孔子说JAVA
2022-11-07 / 0 评论 / 0 点赞 / 49 阅读 / 2,425 字 / 正在检测是否收录...
广告 广告

sonar 比 Findbugs 高了一个层级,它不仅关注常规静态BUG,还关注到了如代码质量、包与包、类与类之间的依赖情况,代码耦合情况,类、方法、文件的复杂度,代码中是否包含大量复制粘贴的代码,关注的是项目代码整体的健康情况。sonar 有两种使用方式:插件和客户端,sonar 的插件名称为 sonarLint。

1、安装方式

1.1 在线安装方式

第一种方式,是在IDEA上搜索插件进行安装,会适配当前IDEA的版本。打开File -> Settings 界面,在左侧列表中找到 Plugins 菜单,在右侧的 Marketplace 页签下,搜索 “sonarLint”,可以找到对应的插件,如下图所示,点击 Install 进行安装即可。

image-1667436896105

1.2 离线安装方式

第二种安装方式是使用离线插件进行安装。插件下载页面:https://plugins.jetbrains.com/idea ,在搜索框中输入插件名称 “Eclipse Code Formatter” 搜索,点击出现的下拉提示或搜索按钮,即可进入插件下载页面,选择对应安装版本下载即可。

image-1667436987562

image-1667437079329

下载完成后,进入插件市场,选择本地安装

同样是在 Settings 界面,在左侧列表中找到 Plugins 菜单,在右侧的 Installed 页签右方有个齿轮图标,点击展开菜单后选择 “Install Plugin from Disk…”,此时会打开本地文件选择框,选择你下载的插件包安装即可。

image-1667266034486

安装完成后重启IDEA。

安装SonarLint插件重启后,IDEA Tool Windows部分会出现SonarLint View。如果没有出现,选择菜单View->Tool Windows->SonarLint会显示。

image-1667437616268

SonarLint安装完后,默认情况下是自动检测项目代码的。若觉得影响效率,可通过菜单Settings->Other Settings->SonarLint General Settings进行设置。

image-1667437631715

2、插件使用

右键项目或者文件,在弹出的菜单中找到Analyze菜单,指向上面后在弹出的子菜单中可以找到Analyze with SonarLint功能。

image-1667437167556

如上图所示操作,执行之后可以看到如下信息,如果代码中有不合理的地方会在report中显示,同时点击错误的地方在右边会给出建议的修改供参考。

image-1667437260982

手动检测代码时,在Tool Windows中选择Scope(可选择All project files或者VCS changed files),再点击左侧的Analyze按钮进行检测。

image-1667437663608

检测完毕后,会在SonarLint Tool View中显示出检测的问题,以类名称进行分类。各类的issue,分为阻断、严重、主要、提示和次要,问题严重性依次降低。点击issue,在右侧会出现对应的Rule,可参照进行修改。

image-1667437682754

Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题:

  1. 不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写

  2. 潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷

  3. 糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试

  4. 重复 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方

  5. 注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷

  6. 缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率

  7. 糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。

3、配置 SonarLint 服务端

3.1 配置 Sonar 服务器

sonarLint 插件的使用场景是自用自审,但 sonar 也提供了平台版本,使用场景则是他审,sonar 平台的搭建就不在这篇文章介绍了,感兴趣的读者可以自己上网查看,下面介绍如何在 sonarLint 插件中配置关联 sonar 平台服务器的工程,进行本地检查:

image-1667437319520

点击新增按钮,输入Configuration Name,配置sonarlint 服务器的地址,然后下拉框选择 Login/Password,输入 sonarlint服务器的账号密码。

image-1667437335843

3.2 具体 Sonar工程配置

配置完服务器之后,需要针对具体工程进行配置,点击 connection下拉框,选择上面配置好的服务器连接,然后点击 Search in list,找到对应的工程:

image-1667437374311

3.3 使用 SonarLint 检查

配置完上面两步之后,接下来就可以选择要进行检查的类或者目录进行 sonarlint 检查了(跟第2点的使用方式一致),同时,在 commit 代码的时候,勾选 “Perform Sonarlint analysis”,会针对你要提交的代码进行sonarlint检查。

image-1667437413687

4、总结

(1)检查代码规范的话,直接使用 Alibaba Java Coding Guidelines 就可以了

(2)找 BUG 的话,使用 PMD、Findbugs、SonarLint 相互补充:

  • PMD 自定义能力强,用来自定义项目BUG规则非常好用
  • Findbugs 找 BUG 能力很强,我们拿找到的BUG给新员工培训也很好。
  • SonarLint 规则丰富,比 Findbugs 能覆盖到更全的场景
0

评论区