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

java - 如何摆脱 Detekt 在使用 Spring Boot 时发出的 SpreadOperator 性能警告?

最近,我在我的应用程序中添加了Detekt分析仪。

运行 detekt (./gradlew detekt) 后,我的主应用程序类中出现了 SpreadOperator 警告。

代码警告:runApplication<MessCallsApplication>(*args)

您可以在此处阅读有关 SpreadOperator 警告的信息:[SpreadOperator Warning][2]

我的主要课程:

问题是,摆脱该 SpreadOperator 警告的最佳做法是什么?还是不可能?

0 投票
1 回答
1187 浏览

gradle - 在 Gradle 中禁用自动检测运行

我已将Detekt添加到我的 Gradle 项目中。我的意图是detekt仅按需调用,因为它会产生很多误报。但是,该detekt任务默认处于活动状态(并且会中断构建)。我怎样才能避免这种依赖?

我尝试了什么:我添加了一个有条件gradle.taskGraph.beforeTask设置的块enabled = false

我感觉这 7 行代码真的有点多,只是为了覆盖一个任务依赖。我将不胜感激一般的 Gradle 答案以及一些 Detekt 特定的方式。

0 投票
1 回答
1508 浏览

maven - 如何使用 maven 插件生成和使用 detekt 基线?

我正在尝试在使用 Kotlin 和detekt-maven-plugin的多模块 Maven 项目中使用 detekt 。

按照此处找到的说明生成包含现有问题的基线,我尝试运行:

然而,这似乎不会产生提到的baseline.xml文件。

0 投票
1 回答
405 浏览

gradle - SonarQube 在 detekt gradle 插件中是否有 gradle 设置以在远程主机上而不是在文件中生成报告

当我使用 sonarqube 插件时,我无法在远程主机上生成关于使用我的特定分支的报告,因为最新版本不支持它并且不推荐使用 branch.name

因此,当我使用 detekt 插件时,它会在本地文件中生成报告,而不是在远程主机上。如何提供 gradle 设置以在远程主机上生成 html 报告就像我们使用 sonarqube 插件时使用属性 sonar.host.url 生成一样

我的 build.gradle 看起来像

0 投票
1 回答
1155 浏览

kotlin - 如何抑制 Detekt 的 WildcardImport 和 MatchingDeclarationName?

我需要抑制两个错误:WildcardImport 和 MatchingDeclarationName。问题是它需要应用于整个文件,有没有办法做到这一点?

0 投票
1 回答
347 浏览

kotlin - 从 Kotlin psi API 检索 Kotlin 属性类型

我正在尝试为detekt project创建新规则。为此,我必须知道 Kotlin 属性的确切类型。例如,val x: Int有类型Int

不幸的是,对于类型的财产,private val a = 3我收到以下信息:

  1. property.typeReferencenull
  2. property.typeParameters是空的
  3. property.typeConstraints是空的
  4. property.typeParameterList是空的
  5. property.textprivate val a = 3
  6. property.node.children().joinToString()具有上一项的对象符号
  7. property.delegate一片空白
  8. property.getType(bindingContext)为 null(该属性bindingContextKtTreeVisitorVoidused的一部分

问题:如何获取类型名称(或者,更好的是 object KClass)以将实际属性类型与Boolean类类型进行比较?(例如,我只需要获取属性布尔值是否为非)

代码:

0 投票
0 回答
192 浏览

kotlin - 如何附加任务以在gradle中插件的任务之后运行

我已经detekt在 gradle-kotlin 中安装了插件

当我运行时,这会为我产生任务tasks

这会生成 checkstyle xml 文件。不幸的是,我被迫使用 teamcity,为了在 teamcity 中显示 detekt 的结果,它希望将所有 xml 文件汇总到一个 zip 文件中。

所以我的想法是,对于每个子项目,我想运行一个任务,将 detekt 输出复制到子项目名称下的 toArchive 文件夹中,然后在 detekt 对所有子项目运行之后,我想运行 zip 任务。

每个子项目都是他们自己的顶级文件夹,每个gradle 实践

但我什至无法开始了解如何做到这一点。

我真的不在乎输出文件夹在哪里。我打算toArchive在 gradle zip 任务文档中的顶层做文件夹。但我认为这并不重要。

我是 gradle 新手,我觉得它很混乱。

0 投票
1 回答
70 浏览

android - 需要阻止 Android 在失败的 gradle 任务上运行

我在 Android Studio 中有一个 android 项目,我想使用 detekt 作为静态代码分析器。我可以通过 gradle 任务运行 detekt,并且可以使用 Android 运行配置在运行应用程序之前将其排队,但如果任务返回错误代码,我似乎无法让它停止运行。

我在构建管道中从命令行运行了 detekt,但我希望开发人员也无法在他们的开发机器上运行。

0 投票
1 回答
982 浏览

android - Android Detekt 构建失败

我尝试使用 detekt 生成代码报告,并在终端中执行以下命令时

梯度检测

它显示构建失败并显示以下消息。

0 投票
1 回答
122 浏览

kotlin - 使用 Detekt 检查多个值的可空性的时尚安全方法

我正在使用 Danger Detekt(基于 ktlint 的静态代码质量测量系统)。我有一个从 8 个不同端点获取数据的函数。然后我需要检查这些值是否不为空,如果是,我返回使用这些值构建的复杂数据类型,但如果这些值中的任何一个为空,我必须返回空。假设它看起来像这样:

然后我可以用复杂的 if 语句检查它,但 Detekt 会抱怨复杂的条件。所以我把它改成这样:

但是 Detekt 现在抱怨返回语句太多,因为我必须将它添加到每次提取中。

对于此类问题,是否有任何方便的 Kotlin 功能?