目录
前言
大家好呀~,我是前期后期,在网上冲浪的一名程序员,分享一些自己学到的知识,希望能够帮助大家节省时间。
如何写代码更少出现bug?
很多一些人可能会推荐我们,多看一些阿里巴巴的规范,又或者不断的提升自己的代码能力。但,人难免犯错,难免存在认知不足的地方,何其难,并且规范太多,我们自己都记不住,有时候脑子发热,就写了隐患的代码。
那么还有其他方法?
答案是:YES
我们可以借助一些工具,这些工具,会帮助我们分析代码存在不规范的地方,帮助我们找出可能会出现bug的地方,内存滥用的地方,甚至他还会给出建议,甚至它还可以帮助我们修复。
在编写代码时,插件会实时检测并提供建议。用户可以根据插件的提示进行代码修改,或者利用插件的自动修复功能快速纠正错误。
接下来,我们介绍一些常用的规范工具。
Alibaba Java Coding Guidelines
【检查代码规范】CheckStyle
【检查代码规范】PMD
【检查代码规范、潜在错误,Bug】SonarLint
【检查代码规范、潜在错误,Bug】(更加推荐)
一、Alibaba Java Coding Guidelines
Alibaba Java Coding Guidelines插件是一款由阿里巴巴开源的代码规范检查工具,它基于阿里巴巴Java开发手册制定的一系列编码规范。
代码规范性问题:
1.命名规范:插件会检查变量、方法、类等命名是否符合阿里巴巴的Java编码规范。
2. 代码格式:包括缩进、空格、换行等代码格式问题,确保代码风格的一致性。
3. 异常处理:检查异常捕获和处理是否符合规范,避免异常被忽略或处理不当。
4. 注释:检查代码中的注释是否清晰、准确,是否符合规范要求的注释风格。
1.1 如何安装呢?
- File > Settings > Plugins > Marketplace 搜索 “Alibaba Java Coding Guidelines”,下载可能需要点时间,下载完成后重启IDE
1.2 如何使用呢?
可以Tools > 阿里编码规约 > 编码规约扫描
(1)编码规约扫描 :开始扫描代码
(2)打开/关闭实时检测功能 :实时检测代码是否有不规范
比如下面的Test类,它会提示没有author
按住Alt,然后点击回车,就会提示修复建议。
1.3 规范等级
扫描结果主要分为 Blocker、Critical、Major三个大类,它们表示的是问题的严重程度,严重程度由高到低为:Blocker > Critical > Major
Blocker(阻挡者):
代表最高级别的严重问题,这类问题可能会直接阻碍项目的进行或导致严重的后果。
一旦检测到此类问题,通常意味着代码中存在重大缺陷,需要立即修复。
Critical(严重问题):
表示较为严重的代码规范问题,虽然不会直接阻碍项目的进行,但可能会对代码的可读性、可维护性或性能产生负面影响。
这类问题通常也需要及时修复,以确保代码的质量和稳定性。
举例来说,ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException异常;Map/Set的key为自定义对象时,必须重写hashCode和equals;SimpleDateFormat是线程不安全的类,一般不要定义为static变量等,这些都属于Critical级别的问题。
Major(主要的):
代表一般性的代码规范问题,这些问题通常不会对代码的功能产生直接影响,但可能会影响代码的可读性和可维护性。
这类问题可以在有时间的情况下进行修复,以提升代码的整体质量。
出现的问题,你甚至,还可以使用插件的功能,为你自动修复,当然,修复后也要立马运行一下,避免有异常。
equals可能存在null的问题。
缺点:只能检测Java代码,如果你使用的是Kotlin,那么这个规范就不起作用了。
二、CheckStyle
CheckStyle更注重对代码风格的检查,如命名约定、注释规范、代码格式等。
Alibaba Java Coding Guidelines则涵盖了更广泛的编码规范,包括面向对象设计、异常处理、集合使用等方面的指导。
CheckStyle提供了高可配置性,以便适用于各种代码规范。除了可以使用它提供的Sun的代码标准外,用户也可以定制自己的标准。
Checkstyle插件中默认内置有2个执行代码检查的配置文件(Sun Checks 和 GoogleChecks)
内容上差不多。
三、PMD
PMD插件是一款功能强大的静态代码分析工具,它能够帮助开发者及时发现和修复代码中的潜在缺陷、提高代码质量、确保代码的一致性和可读性。
3.1 PMD的常用规则集
- 最佳实践(Best Practices): 这类规则集关注于代码中的最佳实践,如避免使用过时的方法或类、减少不必要的对象创建等。
- 代码风格(Code Style):代码风格规则集关注于代码的格式和可读性,如缩进、空格、注释等。
- 设计(Design):设计相关的规则集关注于代码的结构和设计模式,如类的复杂度、方法的长度、继承关系的合理性等。
- 文档化(Documentation):它们检查代码中的注释是否完整、清晰,以及是否符合项目的文档规范。
- 多线程(Multithreading):这类规则集关注于多线程编程中的常见问题,如线程安全、死锁、资源竞争等。它们帮助开发者识别可能导致并发错误的代码模式。
- 错误易发(Errorprone):这类规则集旨在检测代码中容易出错的地方,如空指针引用、数组越界、不必要的对象创建等。它们有助于减少运行时错误和潜在的性能问题。
- 性能(Performance):性能相关的规则集关注于代码中可能影响性能的部分,如不必要的同步、复杂的表达式等。
四、SonarLint
SonarLint是一个开源工具,它可以在开发人员在编写代码时,帮助发现潜在的问题和错误。通过与多种集成开发环境(IDE)如Eclipse、IntelliJ IDEA等的集成,SonarLint能够提供实时的代码质量反馈。
使用起来会比前面的PMD高级一些,主要是在提示方面做的很到位。
它会在后面提示一些解决方案
还可以只对新增的代码进行检测。
还可以对kotlin进行检测。
可以对当个文件进行检测,也可以对整个项目。
五、总结
- 检查代码规范的话,直接使用 Alibaba Java Coding Guidelines 。
- 找 BUG 的话,使用 PMD、SonarLint 相互补充。
好了,这篇文章就介绍到这里,我是前期后期,我们 下一篇文章 见·~