Я создал скрипт, который запускает ./gradlew build -x, а затем подсчитывает все вхождения error: [SomeError] и warning: [SomeWarning] на выходе.
#!/bin/bash
# Run './gradlew build -x test' and capture the output
build_output=$(./gradlew build -x test 2>&1)
# Extract error URLs from the build output and count their occurrences
error_urls=$(echo "$build_output" | grep -o -P '(error|warning):\s*\[([^]]+)\]' | sort | uniq -c)
# Create a mapping file with error URLs and occurrence counts
echo "$error_urls" | while read -r count url; do
printf "| %-50s | %-5s |\n" "$url" "$count" >> error_mapping.txt
done
Я получаю этот вывод для ./gradlew build -x:
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
100 errors
100 warnings
only showing the first 100 errors, of 262 total; use -Xmaxerrs if you would like to see more
only showing the first 100 warnings, of 227 total; use -Xmaxwarns if you would like to see more
Я хочу отображать все сообщения, чтобы на моей карте было всего 489 записей.
Это мой конфиг в build.gradle.kts:
import net.ltgt.gradle.errorprone.errorprone
plugins {
id("net.ltgt.errorprone") version "3.1.0" apply false
}
subprojects {
plugins.withType<JavaPlugin> {
apply(plugin = "net.ltgt.errorprone")
dependencies {
add("errorprone", "com.google.errorprone:error_prone_core:2.16")
}
tasks.withType<JavaCompile>().configureEach {
options.errorprone {
disableWarningsInGeneratedCode.set(true)
}
}
}
}
Я пробовал несколько вещей:
./gradlew -x test -Xmaxerrors 1000Javac with error-prone и на Eclipsebuild.gradle.kts: options.compilerArgs.add("-Xmaxerrs 1000")gradle.propertiesЧто еще я могу сделать?


На правильном пути
-Xmaxerrs и -Xmaxwarns специфичны для компилятора Java (javac) и не могут быть напрямую переданы команде Gradle ./gradlew.options.compilerArgs.add каждый аргумент компилятора должен передаваться как отдельный элемент в спискеcompileArgs. С ("-Xmaxerrs 1000") он передается как один аргумент, который javac не понимает, вам нужно разделить аргументы как ("-Xmaxerrs", "1000"), чтобы javac оценивал аргументы как option, value.options.compilerArgs.add() был обновлен до options.compilerArgs.addAll(listOf()). Метод add используется для добавления одного элемента в списокcompileArgs, метод addAll используется для добавления нескольких элементов в списокcompileArgs. Функция listOf создает новый список с указанными элементами ("-Xmaxerrs", "1000", "-Xmaxwarns", "1000"), а затем эти элементы добавляются в список compilerArgs.Обновление до следующего:
subprojects {
plugins.withType<JavaPlugin> {
apply(plugin = "net.ltgt.errorprone")
dependencies {
add("errorprone", "com.google.errorprone:error_prone_core:2.16")
}
tasks.withType<JavaCompile>().configureEach {
options.errorprone {
disableWarningsInGeneratedCode.set(true)
compilerArgs.addAll(listOf("-Xmaxerrs", "1000", "-Xmaxwarns", "1000"))
}
}
}
}
NB
Компилятор Java (javac) имеет ограничения по умолчанию для максимального количества отображаемых ошибок/предупреждений. Ограничения по умолчанию установлены для предотвращения чрезмерного вывода в случае большого количества ошибок/предупреждений.
Значения по умолчанию и максимальные значения для -Xmaxerrs и -Xmaxwarns могут различаться в зависимости от варианта/версии JDK. Обычное значение по умолчанию — 100 как для ошибок, так и для предупреждений, но лучше проверить официальную документацию.
В вашем случае сообщение об исключении «показывает только первые 100 ошибок из 262; используйте -Xmaxerrs, если вы хотите увидеть больше», оно указывало, что компилятор Java достиг предела по умолчанию в 100 ошибок и предлагал использовать -Xmaxerrs возможность увеличить лимит, если вы хотите увидеть больше. Дублируется для предупреждений.
Также примечание: значение можно установить на "0", что отключит ограничение и установит его на бесконечность, но это не рекомендуется.