--- title: gradle-errorprone-plugin README — net.ltgt.errorprone 공식 플러그인 레퍼런스 source_type: official-doc url: https://github.com/tbroyer/gradle-errorprone-plugin archive_url: https://web.archive.org/web/2026/https://github.com/tbroyer/gradle-errorprone-plugin related_branches: [feature-static-analysis-quality-contract] related_projects: [ca-skeleton] tags: [official-doc, ca-skeleton, ci-cd, gradle, errorprone, static-analysis] created: 2026-06-15 --- # gradle-errorprone-plugin README — net.ltgt.errorprone 공식 플러그인 레퍼런스 > Layer: `raw/official-docs/` — tbroyer/gradle-errorprone-plugin GitHub 레포지토리 README의 verbatim 발췌. > `net.ltgt.errorprone` 플러그인의 적용 방법, JDK 16+ forking 동작, `options.errorprone` DSL, 최소 요구 버전의 1차 출처. ## Parent / 활용 branch (필수) | Branch | 이 자료가 정당화하는 결정 | |---|---| | [[raw/branch-notes/feature-static-analysis-quality-contract]] | D5 — `net.ltgt.errorprone` 플러그인 채택, Java 21에서 javac forking + JVM args 자동 처리 근거 | ## 출처 / Source - 원본 URL: https://github.com/tbroyer/gradle-errorprone-plugin - 아카이브 URL: https://web.archive.org/web/2026/https://github.com/tbroyer/gradle-errorprone-plugin - 저자 / 조직: Thomas Broyer (tbroyer), open source - 발행일: 지속 갱신 (README — 조회 기준 2026-06-15) - 마지막 확인일: 2026-06-15 ## 왜 저장했는지 / Why archived `feature-static-analysis-quality-contract` branch 의 D5 결정(ErrorProne 채택 + Java 21 환경에서의 플러그인 동작)을 정당화하기 위해 보관. 특히 JDK 16+ 에서 plugin 이 자동으로 forking compiler 를 사용하고 `--add-exports`/`--add-opens` JVM args 를 주입한다는 사실 — 수동 구성 없이도 Java 21 빌드가 가능함의 직접 증거. ## 핵심 인용 / Key quotes (verbatim, 3~5문장) > [§Requirements] "This plugin requires using at least Gradle 6.8 and JDK 11 (for compilation; it's OK to use JDK 8 to run Gradle as long as compilations use at least JDK 11 through [Gradle Java Toolchains][gradle-toolchains])." > [§Requirements — ErrorProne version table] > | Error Prone version | Minimum JDK version | > | :------------------: | :-----------------: | > | Up to 2.31 | 11 | > | From 2.32 up to 2.42 | 17 | > | Starting from 2.43 | 21 | > [§Usage — plugin block] `id("net.ltgt.errorprone") version ""` > [§Usage — dependency block] `errorprone("com.google.errorprone:error_prone_core:$errorproneVersion")` > [§JDK 16+ support] "The plugin will automatically [use a forking compiler][CompileOptions.fork] and pass the necessary [JVM arguments][BaseForkOptions.getJvmArgs] whenever it detects such a JDK is being used for the compilation task and ErrorProne is enabled (unless the Gradle daemon's JVM already was given the appropriate options [through `org.gradle.jvmargs`][org.gradle.jvmargs])." > [§Usage — options.errorprone configuration] `options.errorprone.disableWarningsInGeneratedCode = true` ## Claims Extracted / 추출된 주장 > 이 자료가 **직접 말하는 것만** claim 으로 분리한다. 내 프로젝트에 적용한 결론은 여기 쓰지 않는다. | Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove | |---|---|---|---|---|---| | C1 | 플러그인 최소 요구 사항은 Gradle 6.8 이상, JDK 11 이상 (컴파일 기준) | [§Requirements] "This plugin requires using at least Gradle 6.8 and JDK 11 (for compilation; ...)" | `official-reference` | net.ltgt.errorprone 플러그인 모든 버전 | ca-tmpl 특정 Gradle 버전과의 실제 호환성 | | C2 | ErrorProne 2.43 이상은 JDK 21 이상을 요구한다 | [§Requirements table] "Starting from 2.43 — 21" | `official-reference` | ErrorProne 2.43+ 사용 시 | 특정 ca-tmpl 빌드에서 2.43+ 버전 선택 여부 | | C3 | `net.ltgt.errorprone` plugin id 로 적용하고 `errorprone` configuration 에 `error_prone_core` 의존을 추가한다 | [§Usage] `id("net.ltgt.errorprone")` + `errorprone("com.google.errorprone:error_prone_core:$errorproneVersion")` | `official-reference` | Gradle Kotlin DSL (Groovy DSL도 동등하게 지원) | 플러그인 버전 선택 기준 | | C4 | JDK 16+ 환경에서 plugin 은 자동으로 forking compiler 를 사용하고 필요한 JVM arguments (`--add-opens`/`--add-exports`) 를 주입한다 — 수동 구성 불필요 | [§JDK 16+ support] "The plugin will automatically [use a forking compiler]... and pass the necessary [JVM arguments]... whenever it detects such a JDK is being used" | `official-reference` | ErrorProne 사용 + JDK 16 이상으로 컴파일하는 Gradle 프로젝트 | Gradle daemon JVM 에 이미 `org.gradle.jvmargs` 로 해당 옵션이 설정된 경우 (그 경우 auto-fork 생략) | | C5 | `options.errorprone { disableWarningsInGeneratedCode = true }` 로 생성 코드 경고를 억제할 수 있다 | [§Usage] `options.errorprone.disableWarningsInGeneratedCode = true` | `official-reference` | `@Generated` / `@javax.annotation.Generated` 애노테이션이 붙은 클래스 | 생성 코드 판별 기준(annotation 유무)이 프로젝트마다 동일하다는 것 | ## Usage Boundaries / 적용 경계 - 이 자료가 직접 증명하는 것: - `C3`: `net.ltgt.errorprone` plugin id + `errorprone` configuration 패턴이 플러그인의 공식 적용 방법임 - `C4`: JDK 16+ 에서 수동 JVM arg 추가 없이 plugin 이 자동 처리함 — Java 21 빌드에서 별도 `forkOptions.jvmArgs` 블록 불필요 - `C1`/`C2`: ca-tmpl 이 Gradle 6.8+ + ErrorProne 2.43+ 를 사용한다면 JDK 21 이상이 필요 - 이 자료가 증명하지 않는 것: - ca-tmpl 특정 버전(예: `com.google.errorprone:error_prone_core:2.x`)과의 실제 동작 호환성 - Android Gradle Plugin 환경에서의 동작 (README 에 명시적 불지원) - C4 의 예외 조건: `javaHome` 또는 `executable` 을 명시한 fork task 에는 JVM args 미주입 - 내 프로젝트에 적용하려면 추가 확인이 필요한 것: - ca-tmpl 의 실제 Gradle 버전 + ErrorProne 버전 조합 호환성 로컬 검증 - `disableWarningsInGeneratedCode` 가 MapStruct/Lombok 생성 코드에 실제 적용되는지 확인 ## 메모 / Notes - C4 의 "unless Gradle daemon JVM 에 이미 옵션 설정" 예외는 실무에서 `org.gradle.jvmargs` 로 직접 설정하는 경우가 드물어 대부분 자동 처리됨 — 그러나 CI 환경에서 gradle.properties 확인 권고. - 추가로 봐야 할 동일 출처 페이지: [Configuration Properties 전체 표](https://github.com/tbroyer/gradle-errorprone-plugin#properties) — `checks`, `checkOptions`, `excludedPaths` 등 추가 DSL 옵션. ## Related / 관련 - 같은 주제 다른 official-doc / company-tech-blog: [[raw/official-docs/archunit-user-guide]] (정적 분석 — 아키텍처 룰 강제) - 이 자료를 인용한 wiki 요약: `[[wiki/concepts/errorprone-gradle-integration]]` (생성 시)