问题标签 [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.

0 投票
0 回答
179 浏览

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 中其他依赖项版本的更多信息:

我在 github 的官方页面上提出了错误:https://github.com/detekt/detekt/issues/4088

0 投票
0 回答
55 浏览

kotlin - 如何创建 detekt 规则以阻止某些类被显式引用为属性?

在我们之前的项目中,我们有一个名为 AbstractActor 的类要被继承来做特定的事情,我们的一些开发人员可能会将其引用保存为构造的 valOrVar 参数或 KTProperty,这最终导致了垃圾收集灾难,actor 不能被收集,因为它被引用并且内存使用率飙升。所以我的领导要求我创建一个新规则来防止这种情况发生,我尝试了很多方法,但我无法让 KClass 确定它是 isAssignableFrom 还是 isSubclassOf 到 AbstractActor 类。这是我创建的测试示例

这是我创建的规则

根据我在堆栈跟踪中看到的内容,detekt 和编译器知道确切的包和标识符名称,但我无法正确理解,我在这里缺少什么?

0 投票
0 回答
61 浏览

kotlin - 第一个子项目出现问题后,Kotlin Detekt 构建失败

我正在尝试gradlew detekt在多项目 Kotlin 构建上运行。build.gradle根据detekt doc,我已将以下内容添加到顶层

但是当我运行任务时,它会在分析第一个有任何问题的子项目后停止。

如果我修复所有这些并重新运行gradlew detekt,它将通过该项目,但在下一个项目中失败,> 0 个问题,依此类推。

detekt无论发现多少问题,我如何才能一次分析整个项目。

0 投票
1 回答
33 浏览

android - 在本地从命令行运行 detekt 不会产生问题

运行此命令时,我得到以下输出,但没有因规则失败的类。

但它并没有告诉我问题所在。

当我使用以下命令从android.yml文件中的 github 操作运行此命令时:

我将在我的 PR 上获得以下信息,这些信息为我提供了我正在寻找的信息。

但是,我希望在本地运行时获得相同的信息,而不是等待 PR 在 github 操作上运行。

有没有办法从本地命令行执行此操作?

0 投票
0 回答
33 浏览

kotlin - Kotlin lint 检查硬编码字符串?

我正在开发一个 Kotlin 项目,其中大多数字符串都应该被正确地 i18nized。我们java.util.ResourceBundle用于检索存储在.properties文件中的字符串。我可以使用 IntelliJ 的检查来查找代码库中的硬编码字符串(代码 → 检查代码)。这很好用,我们还可以注释不需要 i18nized 并允许硬编码或接受硬编码字符串的方法或字段。我们可以为此使用标准的 Kotlin 注释@NonNls和注释//NON-NLS

现在我想在我们的 Gitlab CI 上运行这个或类似的检查,以在新的硬编码字符串进入代码库时警告我们。无论如何我们都在使用ktlint,所以我在那里寻找一个硬编码的字符串检查,但没有找到。我也调查了detekt,但它似乎也没有报告任何关于该主题的内容。我发现理论上我可以从命令行运行 IntelliJ 的检查,但是我不愿意将它安装在 CI 上,并且更喜欢一个可以检查这个的常规 linter。有没有人知道可以用于此的 Kotlin 的 linter 或为现有规则定义自定义规则的方法,可以使这成为可能?

0 投票
1 回答
18 浏览

kotlin - 在 Detekt 中配置规则

我正在将 Detekt 添加到一个新项目中。但是,我发现有些规则太严格了。

如何为一些规则实施我自己的阈值?

我不想使用基线文件,因为这是新代码,我们不想考虑一些代码气味。