同事:你的代码写的不行啊,不够规范啊。

我:我写的代码怎么可能不规范,不要胡说。

于是同事打开我的 IDEA ,安装了一个插件,然后执行了一下,规范不规范,看报告吧。

这可怎么是好,这玩意竟然给我挑出来这么多问题,到底靠谱不。

同事潇洒的走掉了,只留下我在座位上盯着屏幕惊慌失措。我仔细的查看了这个报告的每一项,越看越觉得这插件指出的问题有道理,果然是我大意了,竟然还给我挑出一个 bug 来。

这是什么插件,review 代码无敌了。

这个插件就是 SonarLint,官网的 Slogan 是 clean code begins in your IDE with {SonarLint}。

作为一个程序员,我们当然希望自己写的代码无懈可击了,但是由于种种原因,有一些问题甚至bug都无法避免,尤其是刚接触开发不久的同学,也有很多有着多年开发经验的程序员同样会有一些不好的代码习惯。

代码质量和代码规范首先肯定是靠程序员自身的水平和素养决定的,但是提高水平的是需要方法的,方法就有很多了,比如参考大厂的规范和代码、比如有大佬带着,剩下的就靠平时的一点点积累了,而一些好用的插件能够时时刻刻提醒我们什么是好的代码规范,什么是好的代码。

SonarLint 就是这样一款好用的插件,它可以实时帮我们 review代码,甚至可以发现代码中潜在的问题并提供解决方案。

SonarLint 使用静态代码分析技术来检测代码中的常见错误和漏洞。例如,它可以检测空指针引用、类型转换错误、重复代码和逻辑错误等。这些都是常见的问题,但是有时候很难发现。使用 SonarLint 插件,可以在编写代码的同时发现这些问题,并及时纠正它们,这有助于避免这些问题影响应用程序的稳定性。

比如下面这段代码没有结束循环的条件设置,SonarLint 就给出提示了,有强迫症的能受的了这红下划线在这儿?

SonarLint 插件可以帮助我提高代码的可读性。代码应该易于阅读和理解,这有助于其他开发人员更轻松地维护和修改代码。SonarLint 插件可以检测代码中的代码坏味道,例如不必要的注释、过长的函数和变量名不具有描述性等等。通过使用 SonarLint 插件,可以更好地了解如何编写清晰、简洁和易于理解的代码。

例如下面这个名称为 hello_world的静态 final变量,SonarLint 给出了两项建议。

因为变量没有被使用过,建议移除;

静态不可变变量名称不符合规范;

SonarLint 插件可以帮助我遵循最佳实践和标准。编写符合标准和最佳实践的代码可以确保应用程序的质量和可靠性。SonarLint 插件可以检测代码中的违反规则的地方,例如不安全的类型转换、未使用的变量和方法、不正确的异常处理等等。通过使用 SonarLint 插件,可以学习如何编写符合最佳实践和标准的代码,并使代码更加健壮和可靠。

例如下面的异常抛出方式,直接抛出了 Exception,然后 SonarLint 建议不要使用 Exception,而是自定义一个异常,自定义的异常可能让人直观的看出这个异常是干什么的,而不是 Exception基本类型导出传递。

安装 SonarLint

可以直接打开 IDEA 设置 -> Plugins,在 MarketPlace中搜索SonarLint,直接安装就可以。

还可以直接在官网下载,打开页面https://www.sonarsource.com/products/sonarlint/,在页面中可以看到多种语言、多种开发工具的下载图标,点击下方的 EXPLORE即可到下载页面去下载了。虽然我们只是在 IDEA 中使用,但是它不只支持 Java 、不只支持 IDEA ,还支持 Python、PHP等众多语言,以及 Visual Studio 、VS Code 等众多 IDE。

在 IDEA 中使用

SonarLint 插件安装好之后,默认就开启了实时分析的功能,就跟智能提示的功能一样,随着你噼里啪啦的敲键盘,SonarLint插件就默默的进行分析,一旦发现问题就会以红框、红波浪线、黄波浪线的方式提示。

当然你也可以在某一文件中点击右键,也可在项目根目录点击右键,在弹出菜单中点击Analyze with SonarLint,对当前文件或整个项目进行分析。

分析结束后,会生成分析报告。

左侧是对各个文件的分析结果,右侧是对这个问题的建议和修改示例。

SonarLint 对问题分成了三种类型

类型说明Bug代码中的 bug,影响程序运行Vulnerability漏洞,可能被作为攻击入口Code smell代码意味,可能影响代码可维护性

问题按照严重程度分为5类

严重性说明BLOCKER已经影响程序正常运行了,不改不行CRITICAL可能会影响程序运行,可能威胁程序安全,一般也是不改不行MAJOR代码质量问题,但是比较严重MINOR同样是代码质量问题,但是严重程度较低INFO一些友好的建议

SonarQube

SonarLint 是在 IDE 层面进行分析的插件,另外还可以使用 SonarQube功能,它以一个 web 的形式展现,可以为整个开发团队的项目提供一个web可视化的效果。并且可以和 CI\CD 等部署工具集成,在发版前提供代码分析。

SonarQube是一个 Java 项目,你可以在官网下载项目本地启动,也可以以 docker 的方式启动。之后可以在 IDEA 中配置全局 SonarQube配置。

也可以在 SonarQube web 中单独配置一个项目,创建好项目后,直接将 mvn 命令在待分析的项目中执行,即可生成对应项目的分析报告,然后在 SonarQube web 中查看。

5

对于绝大多数开发者和开发团队来说,SonarQube 其实是没有必要的,只要我们每个人都解决了 IDE 中 SonarLint 给出的建议,当然最终的代码质量就是符合标准的。

阿里 Java 规约插件

每一个开发团队都有团队内部的代码规范,比如变量命名、注释格式、以及各种类库的使用方式等等。阿里一直在更新 Java 版的阿里巴巴开发者手册,有什么泰山版、终极版,想必各位都听过吧,里面的规约如果开发者都能遵守,那别人恐怕再没办法 diss 你的代码不规范了。

对应这个开发手册的语言层面的规范,阿里也出了一款 IDEA 插件,叫做 Alibaba Java Coding Guidelines,可以在插件商店直接下载。

比如前面说的那个 hello_world变量名,插件直接提示「修正为以下划线分隔的大写模式」。

再比如一些注释上的提示,不建议使用行尾注释。

image-20230314165107639

还有,比如对线程池的使用,有根据规范建议的内容,建议自己定义核心线程数和最大线程数等参数,不建议使用 Excutors工具类。

有了这俩插件,看谁还能说我代码写的不规范了。

资源获取:
大家 点赞、收藏、关注、评论啦 、 查看

优雅!用了这两款插件,我成了整个公司代码写得最规范的码农相关推荐

  1. 掌握IDEA的这两款插件,写“破解补丁”分分钟

    说实话,没得几年的功夫,要破解一款大型的软件,真的很难.也没得什么武功秘籍帮你快速打通任督二脉,如果你真一两周就能搞定,那只能说明你是破解奇才~ 破解思路其实都一样,就是分析程序,找到破解点,写相应的 ...

  2. InteliJ IDEA社区版 两款插件变身旗舰版

    前言 今年Idea对盗版软件打击力度加大,朋友们会发现,旗舰版自己激活使用,过几天就会失效,需要重新激活,有的小伙伴就会选择去淘宝花钱买个教育邮箱注册,这个方法我使用过,过了两三个月就不能用了,着实让 ...

  3. pc端react预览图片的两款插件,react-images, react-images-viewer

    在pc端预览图片还是常见的业务,但是吧 antd中好像没有直接预览图片的插件, 但是你可以通过 Modal 和 Carousel 两个插件配合起来封装一个. 当然你也可以直接找一个预览图片的插件 这里 ...

  4. 介绍两款Microsoft Edge谷歌内核浏览器的两款插件

    夜黑风高( •̀ ω •́ )y,好久没写文章了. 在这里推荐两款 浏览器插件, 哇哈哈 第一款 JSON Formatter for Edge https://microsoftedge.micro ...

  5. Revit插件建模助手和蜘蛛侠,两款插件功能介绍!

    BIM在整个生命周期的应用中,施工阶段BIM的应用是BIM亟待解决的重要一环.但在BIM技术应用阶段,机电专业建模和深化调整是BIM技术应用的重点. 通过学习应用课程,我们掌握了各个专业基本构件的制作 ...

  6. 当同时使用bootstrap-datepicker.js和jquery.validate.js这两款插件,至少要选择两次时间,才能验证成功的问题...

    当用 bootstrap-datepicker.js 这个插件选择时间,再用jquery.validate.js进行验证,当时间不为空时则验证通过.可能由于在时间插件弹出来时,input框的值发生改变 ...

  7. 图片和文件上传的两款插件

    订定 转载于:https://www.cnblogs.com/mc67/p/4818276.html

  8. Mozilla两款火狐插件包含恶意代码被紧急喊停

    ozilla基金会当地时间周五从火狐浏览器插件网站撤下了2款包含有恶意代码的插件:Sothink Web Video Downloader 4.0和所有版本的Master Filer,这两款插件都包含 ...

  9. php面包屑源码,推荐两款好用的WordPress面包屑插件

    网站面包屑导航是一组链接(路径),可以帮助用户了解网站的层次结构并在其中导航.对于那些拥有大量页面的网站,面包屑导航可以让用户快速找到想要访问的路径,减少返回上一级而需要采取的操作.面包屑导航对seo ...

最新文章

  1. 非递归一次性加载分类数据到TreeViw
  2. 包r语言_R语言代码共享:制作R包
  3. SAP Spartacus delivery mode continue button单元测试失败原因分析
  4. python中如何编写代码输入多个数据并把它们放在一个列表中去_10分钟学习函数式Python...
  5. 【升级包】jeecg_online 支持主子表列表展示风格模板升级包,简易升级
  6. 大数据学习笔记18:MR案例——分区汇总流量
  7. 高分选手讲解:如何突破思维圈限,从NLP角度挖掘新的解题思路
  8. linux系统安装snort,linux下SNORT安装.doc
  9. 每日英语:How Many People Really Use Sina Weibo
  10. 计算机网络基础系列(四)HTTP、七层模型及其内部对应协议
  11. iOS --切换控制器方式 push / modal
  12. 切线法(牛顿法)、割线法、抛物线法
  13. 法制晚报记者采访王杰律师就“给女主播“添麻烦”方静亮相 间谍传言不攻自破 ”发表法律评论
  14. 关于iOS推送中点击通知的几点备忘
  15. 惠普笔记本重装win10系统教程
  16. BAT批处理文本替换
  17. Java基本概念(世外隐者——隐居深山的“关键字”)
  18. 计算机表盘,深度学习表盘识别
  19. 《白皮书》:身边的人脸安全事件及背后的三类攻击手段
  20. 百度api通过经纬度转换为城市名称

热门文章

  1. 微软预览word_如何在Microsoft Word中更改语言
  2. 员工成长阶段与激励方式探讨
  3. 优麒麟 2204 与 win10 双系统安装笔记
  4. 用python玩转数据作业答案_大学mooc2020年用Python玩转数据作业答案
  5. PS 如何使用液化工具给人物减肥
  6. bilibili 镜像
  7. CSP2022 初赛游记
  8. 主流的第三方直播SDK对比(腾讯云、即构、阿里云、声网、网易云信、网宿)
  9. 2022广东最新八大员之(安全员)模拟试题题库及答案
  10. 微软企业文化中的“工作激情”