问题标签 [detekt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Detekt 版本 1.18.0 与 Gradle 7.1.1、AGP 版本 7.0.0 和 jdk 11 及更高版本不兼容
预期行为
./gradlew build 应该是成功的,但它会抛出错误。
观察到的行为
1. 我在我的 Kotlin 文件中设置如下过滤器。</p>
错误:未解决的参考:过滤器
2.
错误:未解决的参考:isIncludeNoLocationClasses
重现步骤
step1:设置配置
步骤2:./gradlew clean
step3 ./gradlew 构建
它只在这里抛出错误
在第 4 步中,我想发布到本地 maven,这样我就可以在我的项目中使用这个质量工具 sdk。
step4: ./gradlew publishToMavenLocal
语境
我在我的质量工具 sdk 中使用 Detekt。我在我的 android 项目中使用这个质量工具 sdk。使用此配置 Gradle 可以正常工作:6.9 AGP(Android Gradle 插件):4.0.1 detekt:1.1.1 但是当我升级到 Gradle 7.+ 时,由于某些功能的贬值,它出现了 Detekt 错误。
我的环境
- 使用的检测器版本:1.18.0
- 使用的 Gradle 版本:gradle-7.1.1-all.zip
- AGP 版本(Android Gradle 插件):7.0.0
- 操作系统和版本:Mac OS X 11.5 x86_64 Kotlin:1.4.31 Groovy:3.0.7 Ant:Apache Ant(TM) 版本 1.10.9 编译于 2020 年 9 月 27 日 JVM:11.0.12(Oracle Corporation 11.0.12+8- LTS-237)
有关 Dependencies.kt 中其他依赖项版本的更多信息:
- Gradle 扫描链接(
--scan
运行 gradle 任务时添加选项): https ://gradle.com/s/fre5tj6qnarpa
我在 github 的官方页面上提出了错误:https://github.com/detekt/detekt/issues/4088
kotlin - 如何创建 detekt 规则以阻止某些类被显式引用为属性?
在我们之前的项目中,我们有一个名为 AbstractActor 的类要被继承来做特定的事情,我们的一些开发人员可能会将其引用保存为构造的 valOrVar 参数或 KTProperty,这最终导致了垃圾收集灾难,actor 不能被收集,因为它被引用并且内存使用率飙升。所以我的领导要求我创建一个新规则来防止这种情况发生,我尝试了很多方法,但我无法让 KClass 确定它是 isAssignableFrom 还是 isSubclassOf 到 AbstractActor 类。这是我创建的测试示例
这是我创建的规则
根据我在堆栈跟踪中看到的内容,detekt 和编译器知道确切的包和标识符名称,但我无法正确理解,我在这里缺少什么?
kotlin - 第一个子项目出现问题后,Kotlin Detekt 构建失败
我正在尝试gradlew detekt
在多项目 Kotlin 构建上运行。build.gradle
根据detekt doc,我已将以下内容添加到顶层
但是当我运行任务时,它会在分析第一个有任何问题的子项目后停止。
如果我修复所有这些并重新运行gradlew detekt
,它将通过该项目,但在下一个项目中失败,> 0 个问题,依此类推。
detekt
无论发现多少问题,我如何才能一次分析整个项目。
android - 在本地从命令行运行 detekt 不会产生问题
运行此命令时,我得到以下输出,但没有因规则失败的类。
但它并没有告诉我问题所在。
当我使用以下命令从android.yml
文件中的 github 操作运行此命令时:
我将在我的 PR 上获得以下信息,这些信息为我提供了我正在寻找的信息。
但是,我希望在本地运行时获得相同的信息,而不是等待 PR 在 github 操作上运行。
有没有办法从本地命令行执行此操作?
kotlin - Kotlin lint 检查硬编码字符串?
我正在开发一个 Kotlin 项目,其中大多数字符串都应该被正确地 i18nized。我们java.util.ResourceBundle
用于检索存储在.properties
文件中的字符串。我可以使用 IntelliJ 的检查来查找代码库中的硬编码字符串(代码 → 检查代码)。这很好用,我们还可以注释不需要 i18nized 并允许硬编码或接受硬编码字符串的方法或字段。我们可以为此使用标准的 Kotlin 注释@NonNls
和注释//NON-NLS
。
现在我想在我们的 Gitlab CI 上运行这个或类似的检查,以在新的硬编码字符串进入代码库时警告我们。无论如何我们都在使用ktlint
,所以我在那里寻找一个硬编码的字符串检查,但没有找到。我也调查了detekt
,但它似乎也没有报告任何关于该主题的内容。我发现理论上我可以从命令行运行 IntelliJ 的检查,但是我不愿意将它安装在 CI 上,并且更喜欢一个可以检查这个的常规 linter。有没有人知道可以用于此的 Kotlin 的 linter 或为现有规则定义自定义规则的方法,可以使这成为可能?