Built from main at 1d902a0 on 2026-11-14

JVM

Java and Kotlin, recognised by .java and .kt sources and Maven (pom.xml) or Gradle builds. The Maven or Gradle build counts as CI configuration when CI runs it (mvn verify, gradle check), since that is where its plugins are wired in.

tests-run

@Test methods or Kotest specs under src/test/java or src/test/kotlin, run by mvn test / verify or gradle test / check / build.

fuzz-testing

Jazzer fuzz tests (@FuzzTest methods, or fuzzerTestOneInput in .java or .kt files), run by the jazzer command (given --target_class, a classpath option or a .jar; Jazzer.js is the JavaScript profile's), or by a Maven or Gradle command that runs tests (mvn test, verify or install, gradle test, check or build) with JAZZER_FUZZ=1 set in the step or job environment: without it Jazzer's JUnit integration runs only the seed inputs, which is not fuzzing. jqwik and junit-quickcheck tests alone warn: they are property-based tests, not fuzz targets.

coverage

JaCoCo (jacoco:report, jacocoTestReport, or jacoco-maven-plugin with its report goal bound when CI runs mvn verify) or Kover (a kover…Report task, or its plugin when CI runs gradle check).

platform-matrix

The toolchains are JDK versions.

compiler-warnings

javac's -Xlint:all; a Kotlin-only project passes on Kotlin's default warnings.

warnings-as-errors

-Werror for javac or kotlinc, or Kotlin's allWarningsAsErrors.

mutation-testing

PIT, run by mvn pitest:mutationCoverage or the pitest Gradle task, or by mvn verify with the pitest-maven plugin (and a mutationCoverage goal bound), or by a Gradle task that depends on pitest (the info.solidsoft.pitest plugin does not attach it to check; add check.dependsOn("pitest")). pitest:scmMutationCoverage or -DwithHistory (Maven) counts as running on the changes only.

code-formatting

Spotless (spotless:check or spotlessCheck, or the plugin bound to check in pom.xml or applied in a Gradle build, run by mvn verify or gradle check) and fmt-maven-plugin for Java and Kotlin or Java; google-java-format (--set-exit-if-changed) for Java; ktfmt (--set-exit-if-changed) and ktlint (without -F, or ktlintCheck) for Kotlin. They have a default style, so CI enforcement alone passes.

function-limits

Java: lizard runs in CI with a length limit, or Checkstyle runs with a configuration that has the MethodLength module. Kotlin: lizard, or detekt runs with LongMethod active (it is on by default; active: false on the rule or on the complexity rule set turns it off).

static-analysis

SpotBugs (Java and Kotlin); PMD, Checkstyle and Error Prone (Java); detekt (Kotlin). Each runs by its goal or task (spotbugs:check, pmd:check, checkstyleMain, detekt), or by the plugin a build's verification brings in (bound to check in pom.xml, or applied in a Gradle script or convention plugin, run by mvn verify or gradle check). Error Prone, a compiler plugin, runs on every build that compiles.

security-scanning

SpotBugs with Find Security Bugs, or PMD with its category/java/security.xml rules, where the build runs them. In CI, where the tool runs (a setting alone, which nothing CI runs reads, does not count); CodeQL, GitLab SAST or semgrep count too.

dependency-management

Dependencies declared in pom.xml are verified when Maven runs with --strict-checksums (in .mvn/maven.config, or on a CI command line); those declared in a Gradle build by a committed gradle/verification-metadata.xml or gradle.lockfile.

dependency-audit

OWASP dependency-check (dependency-check:check, dependency-check-maven bound to check or aggregate and run by mvn verify, dependencyCheckAnalyze, its CLI, or its action). The Gradle plugin adds no task to check.

committed-artifacts

*.class, plus Maven's target/ or Gradle's build/ and .gradle/.

vcs-ignore

Maven's target/ or Gradle's build/.