Установите -Xmaxerros и -Xmaxwarns в Gradle для отображения всех сообщений ErrorProne

Я создал скрипт, который запускает ./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 1000
  • Изменение компилятора в IntelliJ на Javac with error-prone и на Eclipse
  • Добавляем конфиг в build.gradle.kts: options.compilerArgs.add("-Xmaxerrs 1000")
  • Установка аргументов gradle в gradle.properties

Что еще я могу сделать?

Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На правильном пути

  • Ввод ./gradlew -x test -Xmaxerrors 1000
    • Параметры -Xmaxerrs и -Xmaxwarns специфичны для компилятора Java (javac) и не могут быть напрямую переданы команде Gradle ./gradlew.
  • Добавление конфига в build.gradle.kts: options.compilerArgs.add("-Xmaxerrs 1000")
    • Здесь вы были очень близки, поскольку 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", что отключит ограничение и установит его на бесконечность, но это не рекомендуется.

Другие вопросы по теме