目的
主要记录一下自己见过的代码质量检测工具,以及遇到的代码质量问题。
简介
笔记(一)记录代码质量检测工具
笔记(一)不做什么:
- 具体到工具的配置细节
- 深入比较每个工具(水平暂时有限😂)
开发过程往往需要提高代码的质量来保证系统的稳定性。
有坏味道的代码可能造成的问题包括:
- 代码难维护
- 系统有漏洞
- 造成性能问题
常见代码检测工具有
Sonar 系列
支持多种语言:Java, Python, Javascript 等
SonarLint(在 VSCode 或者 IntelliJ IDEA 都可作为插件安装, 一般开发使用)
SonarCube(一般企业内部搭建的代码质量检测平台,定期扫描代码或者集成到 CI 流程)
SonarCloud(作为 SASS 形式, 方便集成 GitHub, GitLab 等云平台)
Alibaba Java Coding Guideliness
这是一款 IntelliJ IDEA 的插件可以根据阿里巴巴公司的 Java 代码编程指南进行代码建议
CheckStyle
帮助 JAVA 开发人员遵守某些编码规范的工具, 也有对应的 IntelliJ IDEA 插件, 可以编写检测规则
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
<module name="Checker">
<property name="charset" value="UTF-8"/>
<property name="fileExtensions" value="java"/>
<!-- 文件长度不超过1500行 -->
<module name="FileLength">
<property name="max" value="1500"/>
</module>
<!-- TreeWalker Checks -->
<module name="TreeWalker">
<module name="SuppressWarningsHolder"/>
<!--避免转义unicode字符-->
<module name="AvoidEscapedUnicodeCharacters">
<property name="allowEscapesForControlCharacters" value="true"/>
<property name="allowByTailComment" value="true"/>
<property name="allowNonPrintableEscapes" value="true"/>
</module>
<module name="NoLineWrap"/>
<module name="OuterTypeFilename"/>
<!-- import检查-->
<!-- 检查是否从非法的包中导入了类 -->
<module name="IllegalImport"/>
<!-- 检查是否导入了多余的包 -->
<module name="RedundantImport"/>
<!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 -->
<module name="UnusedImports"/>
<!-- 注释检查 -->
<!-- 检查方法和构造函数的javadoc -->
<module name="JavadocType">
<property name="allowUnknownTags" value="true"/>
<message key="javadoc.missing" value="类注释:缺少Javadoc注释。"/>
</module>
</module>
</module>
Prettier(代码格式化工具) + ESlint(检测 TS/JS 的代码质量)
有的前端项目集成这两种工具来规范代码
总结
这类的代码质量检测工具还有很多,常见的组合有:
前端
项目集成Prettier 和 EsLint然后通过husky这类的 git 钩子工具,在每次提交代码前进行强制执行检测,只有通过了才能提交代码,从而保证代码质量
后端
比如 Maven 构建的项目中,会在 Maven 打包的生命周期的回调中执行 CheckStyle 的代码检测,只有通过了才能打包成功
最后
当然这些只是本地质量检测的方法,完全可以绕过,比如直接在远程仓库修改代码,远端的代码 CI 流程中往往也会有检测。
代码质量检测不应该成为束缚编程思想的东西,合理运用提高项目稳定性和性能才是正事。
如有建议欢迎评论,谢谢