代码质量对于任何软件项目的长期可维护性都非常重要。无论项目的大小如何,这一点都成立。在更大的项目中更为明显。
通常,高代码质量和可读性标准是通过同行代码审查过程来确保的。需要成本。
这就是静态分析工具和 linter 发挥作用的地方。Android Studio 和一般的 IntelliJ 提供了一些基本的格式化/检查功能。但是使用更多的外部工具可以轻松提高项目的代码质量,而不会带来太多麻烦。
重点介绍Detekt和Ktlin,它们是 Kotlin 的一些最受欢迎的工具。
检测
Detekt 是一种静态分析,主要用于检测“代码异常”,负责审查代码:它警告我这可能暂时有效,但以后可能会导致问题。由我们决定是否继续或现在修复它。
设置
如果您使用的是 Android Studio / IntelliJ ,我强烈推荐一个非常方便的IntelliJ 插件。如果没有,它作为Gradle 插件提供,但 IDE 集成将使体验变得更加轻松。
安装后,通过转到Preferences -> Tools -> Detekt
并检查适合您需要的所有选项来启用 IntelliJ 插件。
启用插件后,它检测到的任何内容都会像 IDE 中的错误/警告一样突出显示。唯一的缺点是它不支持自动应用修复;您将必须手动解决问题:)
规则集
Detekt 带有大量规则集。这些是该工具将突出显示的内容。它们按类别分组,例如样式、性能等。您可以自定义规则或关闭其中的一些(或某些类别)。
默认情况下,所有这些都已启用。根据我的经验,几乎可以肯定您需要对这些规则进行一些自定义。例如,我倾向于在// TODO
未来的工作中使用评论(是的,我经常这样做)。默认情况下,Dekekt 认为这是一种代码味道……我不同意 :)
这是 Detekt 的默认配置。当突出显示您希望自定义的内容时,只需进入默认配置文件并搜索规则 ID(在本例中查找它所属的规则集style
)。然后创建你的detekt-config.yml
,在 IntelliJ 插件首选项中声明它(见上文),你就完成了(不要忘记选中该Build upon the default configuration
选项,以继承默认配置)。
然后关闭或自定义您的规则:
style: ForbiddenComment: active: false
对于规则的禁用之一,您可以使用标准@Suppress
注释。
Ktlint
Ktlint 是一个 linter,这意味着它主要集中在查找(和修复)样式错误。
我喜欢该工具的理念是尽可能不进行配置。他们的目标是制定合理的默认规则,根据我的经验,他们做到了这一点。我不必更改默认规则,也没有发现烦人的规则。
设置
有很多方法可以安装该工具。您可以安装命令行工具,或选择与Maven、Gradle或IntelliJ/Android Studio集成。
对于 IntelliJ / Android Studio,您可以更改编码样式,以便内置 IDE 格式化工具生成与 Ktlint 兼容的代码。
ktlint applyToIDEAProject
在根文件夹下运行,更改当前项目的 IntelliJ 编码风格
ktlint applyToIDEA
用于更改所有项目的 IntelliJ 编码风格
用法
使用该工具最方便的方法是要求它检查您的代码并在可能的情况下自动更正问题。由于大多数规则都与样式相关,因此这不会破坏您的代码。
ktlint -F 在您的根文件夹中运行以 lint并自动修复所有 Kotlin 文件
为了不要忘记检查你的代码,有一个 Git 预提交钩子,它在提交代码之前运行并在出现错误时阻止你。
ktlint installGitPreCommitHook
运行安装一个预提交钩子(ktlint
之前会git commit
自动运行)
最后,为了抑制 lint 检查,只需用这个“神奇”的文本进行评论。
// ktlint-disable - or - /* ktlint-disable */ ... /* ktlint-disable */
可以让我们忽略的地方及时提醒代码,减少我们debug时间,提高工作效率。