网站首页 > java教程 正文
你曾经是否为代码不规范而发愁,别人提交的代码,每个文件都要格式化,一不留神,按了下格式化快捷键,整个文件每行都改动了。每次都说忘了,你还一点办法都没有。
之前用java开发Android应用时使用的是CheckStyle,现在官方将Kotlin作为第一开发语言后,用CheckStyle已经不行了。此时我们可以用Ktlint来检测Kotlin代码的规范性。
Ktlint的配置
先在项目的gradle中配置ktlint的脚本
buildscript {
repositories {
google()
mavenCentral()
maven { url 'https://plugins.gradle.org/m2/' }
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.4"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
classpath "org.jlleitschuh.gradle:ktlint-gradle:10.2.0"
}
}
在subprojects中进行基本配置
subprojects {
apply plugin: 'org.jlleitschuh.gradle.ktlint'
ktlint {
version = '0.43.2'
debug = true
verbose = true
android = false
outputToConsole = true
outputColorName = "RED"
ignoreFailures = false
disabledRules = ["import-ordering", "no-wildcard-imports"]
baseline = file("ktlint-baseline.xml")
reporters {
reporter "html"
reporter "json"
}
filter {
exclude("**/generated/**")
include("**/kotlin/**")
}
}
}
- 版本号是0.43.2,
- ignoreFailures = false是当有不规范的地方直接报错,
- disabledRules是忽略规则,如忽略导包顺序,忽略导入*包,
- reporters是配置报告文件,如生成html,json文件等
- filter是排除目录和包含目录
执行检测
配置完成后,双击task就可以执行检测了,如双击ktlintMainSourceSetCheck,会检测所有不规范的代码,并生成报告文件。双击ktlintMainSourceSetFormat,会自动将不规范的代码进行更正。
除了手动执行外,我们也可以依赖打包task进行自动执行检测。例如我们依赖assembleDebug任务,在调试运行前先执行代码检测,若有不规划的代码,直接报错中止打包,配置如下
project.tasks.whenTaskAdded { Task task ->
if (task.name.matches("assembleDebug")) {
task.dependsOn("ktlintMainSourceSetCheck")
task.mustRunAfter("ktlintMainSourceSetCheck")
}
}
如果不想每次手动修改,这里可以使用ktlintMainSourceSetFormat自动格式化。
除了依赖打包task外,还可以依赖git命令回调,在git提交代码前,先检测代码,若代码不规范,就禁止提交代码。这样就可以强制要求组员规范编码,统一格式了。
查看日志报告
检测完,会将所有不规范的地方生成报告文件,进行记录。报告格式有txt,xml,html等等。如上的html页面显示MainActivity有3处需要修改的地方。
- 第6行第1列有无用的导包
- 第11行第1列缩进空格应该是8个,实际使用了6个
- 第16行第1列有不必要的空行
猜你喜欢
- 2024-12-16 java日常开发中如何写出优雅的好维护的代码
- 2024-12-16 如何使用JDBC操作数据库?一文带你吃透JDBC规范
- 2024-12-16 这些让你目瞪口呆的 Java 代码技巧,真的太香了。
- 2024-12-16 9.零基础开发商城项目:项目结构和java编码命名规范
- 2024-12-16 宝藏开源推荐:Google Styleguide - 权威的代码规范
- 2024-12-16 DevOps + 代码规范/漏洞检测,让你更好地从Code Review中释放
- 2024-12-16 在Java代码规范中为什么不能出现System.out.println()
- 2024-12-16 Java方法设计原则与实践:从Effective Java到团队案例
- 2024-12-16 j#java代码 java示例代码
- 2024-12-16 为什么阿里Java开发手册编码规范推荐单个方法的总行数不超过80行
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)