问题标签 [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 投票
1 回答
156 浏览

kotlin - 如何使用 detekt 及其访问者浏览给定 Kotlin 文件的 AST?

我需要检查如何浏览给定文件的 Kotlin AST。我不知道如何传递此文件以获取生成的 AST,也不知道如何使用访问者模式在其节点上导航。我的目标是检查给定 Kotlin 文件中某些 Kotlin 运算符的使用情况。谁能帮我这个?

先感谢您!

我已经尝试使用 Kastree ( https://github.com/cretz/kastree ),但如果我更改其示例代码的任何部分,它就不起作用。我找不到如何使用 detekt ( https://github.com/arturbosch/detekt ) 做到这一点。

0 投票
1 回答
2384 浏览

android - ktlint 作为 detekt 中的格式化程序

我正在使用带有 ktlint 的 detekt 来格式化我的代码,如下所示。

detekt.gradle

detekt-baseline.yml

项目级build.gradle

如您所见,我在 detekt.gradle 中添加了用于格式化的 detekt插件。我还在detekt-baseline.ymlautoCorrect中启用了。但是当我运行 Generated html report 时没有格式化代码显示没有发现,但显示了指标。./gradlew detekt

当我在detekt.gradle./gradlew detekt中注释掉以下行后运行时。

它确实显示了我的发现,包括格式问题(例如:不必要的空行)

如何配置 detekt 以根据 ktlint 自动格式化代码?


这是一个安卓项目。

0 投票
2 回答
462 浏览

android - 在所有版本上运行 detekt

可以在构建之前运行 detekt 吗?(运行,释放...)

我跟着这个https://arturbosch.github.io/detekt/gradletask.html

但是check.dependsOn detekt在 build.gradle (app) 不要什么都不做......

我已经尝试check.dependsOn detektpreBuild.dependsOn detekt

也试过...dependsOn detektCheck了...

有什么错误?我不能在构建之前使用 detektCheck 任务?

0 投票
0 回答
293 浏览

maven - Detekt 插件无法从 Maven 中心下载

我正在使用 Kotlin 并希望使用 Detekt 插件进行静态分析。我的问题是,当我想从 Maven 中央存储库下载它时,它给了我以下错误。但是当我使用公司的存储库(Nexus)时,它不会给我任何错误并且可以顺利下载。我不明白这一点。

有人能告诉我为什么会这样吗?我想使用这个插件,还没有找到任何其他选择。

以下是我的错误:

请在下面找到我的 POM 文件。

0 投票
1 回答
7760 浏览

android - Detekt:自动更正功能不起作用

我在我的项目中包含了 detekt ( https://github.com/arturbosch/detekt/ ):

根构建.gradle

应用程序构建.gradle

android { // .. 只是默认值 }

规则文件../detekt/detekt-config.yml

虽然我用属性设置了一些规则,但autoCorrect: true执行时代码没有重新格式化

创建分析报告并显示问题,但未进行自动更正。

0 投票
1 回答
311 浏览

detekt - 如何在 detekt 中启用类型解析?

detekt 正在提醒我有关SpreadOperator规则的信息。根据这个问题,在启用类型解析的某些情况下,可以抑制规则。不过,我找不到任何有关如何启用类型解析的文档或示例。我可以看到 cli 选项似乎与类型解析有关,但不清楚如何实际打开类型解析(或验证它是否已经打开)--jvm-target--classpath

如何在 detekt 中启用类型解析并验证它是否已启用?

0 投票
2 回答
4503 浏览

gradle - 仅在没有检查任务的情况下运行 Detekt 任务才会失败

我正在将 detekt 从 1.0.0.RC7-2 迁移到 1.0.1 并更改为使用新的插件语法。我设法使它工作,但只有在执行完整检查任务时。

如果只执行 detekt 任务,则会显示错误。

detekt 任务失败并出现以下错误:

detekt.gradle

build.gradle(项目):

build.gradle(模块):

0 投票
0 回答
107 浏览

kotlin - 从 Kotlin PSI 获取注解参数(或注解实例)

我有一个 Kotlin 注释:

它可以通过两种方式在 Kotlin 类上使用:使用命名参数语法,或使用位置参数语法:

我在我的自定义检测规则中使用此注释进行一些额外的检查。我需要提取type参数的值以基于它执行一些检查。我这样做:

但是此代码仅适用于“命名”参数语法,并且对于位置参数无效。无论使用什么语法,有什么方法可以获取注释参数的值?如果我可以直接从 PSI / AST / s获取我的Type注释实例并像往常一样使用它,那将是完美的。KtElement是否可以从 PSI 树实例化注释?

0 投票
1 回答
177 浏览

kotlin - IntelliJ / Kotlin PSI中的注释与注释条目

我有一个 Kotlin 注释:

它可以用于 Kotlin 类:

我正在使用detekt分析此源代码,它提供对Kotlin PSI的访问。要获得注释,我使用如下代码:

其中,klass有一种KtClass来自 Kotlin PSI 的类型。我注意到,它KtClass有两个属性:annotations并且annotationEntries对于annotations上面的带注释的类是空的。

annotations我应该使用什么以及annotationEntries何时应该使用什么之间有什么区别?

0 投票
1 回答
364 浏览

kotlin - 如何在 Kotlin PSI 中获得类的完全限定域名?

我有一个 Kotlin 数据类:

我正在用detekt分析它,它提供了对Kotlin PSI的访问。

我正在尝试获取我班级的 FQDN:

其中,klass有一种KtClass来自 Kotlin PSI 的类型。但是该代码只打印了我的班级的一个简短名称,例如Example,而我想得到a.b.c.Example.

如何在 Kotlin PSI 中获得类的完全限定域名?