Findbugs 在并行 Gradle 构建中记录太多
Findbugs logs too much in a parallel Gradle build
过去几年我们一直在处理这个问题。我一直在等待 Gradle 3.0 发布,看看它是否会被修复,但不幸的是它没有。问题是,如果您在 Gradle 中使用并行构建,例如使用这些命令行标志:
--parallel --max-workers=20
然后 Gradle 的调试非常冗长。我们的项目相当大,Findbugs 添加了 10,000 多行日志消息。有些看起来像这样:
[:app:findbugsMain] Scanning archives (0 / 207)
[:app:findbugsMain] Scanning archives (1 / 207)
[:app:findbugsMain] Scanning archives (2 / 207)
[:app:findbugsMain] Scanning archives (3 / 207)
[:app:findbugsMain] Scanning archives (4 / 207)
[:app:findbugsMain] Scanning archives (5 / 207)
[:app:findbugsMain] Scanning archives (6 / 207)
[:app:findbugsMain] Scanning archives (7 / 207)
[:app:findbugsMain] Scanning archives (8 / 207)
[:app:findbugsMain] Scanning archives (9 / 207)
然后其他人看起来像这样:
[:app:findbugsMain] Pass 1: Analyzing classes (446 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (447 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (448 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (449 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (450 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (451 / 662) - 68% complete
[:app:findbugsMain] Pass 1: Analyzing classes (452 / 662) - 68% complete
[:app:findbugsMain] Pass 1: Analyzing classes (453 / 662) - 68% complete
[:app:findbugsMain] Pass 1: Analyzing classes (454 / 662) - 68% complete
[:app:findbugsMain] Pass 1: Analyzing classes (455 / 662) - 68% complete
build.gradle中的Findbugs配置很简单:
// findbugs plugin settings
findbugs {
sourceSets = [sourceSets.main]
ignoreFailures = true
effort = 'max'
excludeFilter = rootProject.file("config/findbugs/findbugs-exclude.xml")
}
几年前 Gradle 论坛上对此进行了讨论。参见 https://discuss.gradle.org/t/add-an-option-to-pass-quiet-to-findbugs-plugin/554。其他人也看到了同样的问题,但 none 的解决方法似乎有所帮助。每个人都同意它与并行构建有关,我也同意,因为我在我的任何非并行项目中都没有看到这一点。
有其他人运行解决这个问题并找到解决方案吗?
此问题已解决。 Gradle 4.2 删除了所有额外的 Findbugs 日志记录,而无需在 build.gradle.
中执行任何操作
过去几年我们一直在处理这个问题。我一直在等待 Gradle 3.0 发布,看看它是否会被修复,但不幸的是它没有。问题是,如果您在 Gradle 中使用并行构建,例如使用这些命令行标志:
--parallel --max-workers=20
然后 Gradle 的调试非常冗长。我们的项目相当大,Findbugs 添加了 10,000 多行日志消息。有些看起来像这样:
[:app:findbugsMain] Scanning archives (0 / 207)
[:app:findbugsMain] Scanning archives (1 / 207)
[:app:findbugsMain] Scanning archives (2 / 207)
[:app:findbugsMain] Scanning archives (3 / 207)
[:app:findbugsMain] Scanning archives (4 / 207)
[:app:findbugsMain] Scanning archives (5 / 207)
[:app:findbugsMain] Scanning archives (6 / 207)
[:app:findbugsMain] Scanning archives (7 / 207)
[:app:findbugsMain] Scanning archives (8 / 207)
[:app:findbugsMain] Scanning archives (9 / 207)
然后其他人看起来像这样:
[:app:findbugsMain] Pass 1: Analyzing classes (446 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (447 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (448 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (449 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (450 / 662) - 67% complete
[:app:findbugsMain] Pass 1: Analyzing classes (451 / 662) - 68% complete
[:app:findbugsMain] Pass 1: Analyzing classes (452 / 662) - 68% complete
[:app:findbugsMain] Pass 1: Analyzing classes (453 / 662) - 68% complete
[:app:findbugsMain] Pass 1: Analyzing classes (454 / 662) - 68% complete
[:app:findbugsMain] Pass 1: Analyzing classes (455 / 662) - 68% complete
build.gradle中的Findbugs配置很简单:
// findbugs plugin settings
findbugs {
sourceSets = [sourceSets.main]
ignoreFailures = true
effort = 'max'
excludeFilter = rootProject.file("config/findbugs/findbugs-exclude.xml")
}
几年前 Gradle 论坛上对此进行了讨论。参见 https://discuss.gradle.org/t/add-an-option-to-pass-quiet-to-findbugs-plugin/554。其他人也看到了同样的问题,但 none 的解决方法似乎有所帮助。每个人都同意它与并行构建有关,我也同意,因为我在我的任何非并行项目中都没有看到这一点。
有其他人运行解决这个问题并找到解决方案吗?
此问题已解决。 Gradle 4.2 删除了所有额外的 Findbugs 日志记录,而无需在 build.gradle.
中执行任何操作