Safe Code Cleanup

KissJson is published as a small Java 17 library, so cleanup must protect the public API and release compatibility. This document explains how to identify unused code safely before any deletion.

Public API First

Treat these as public API unless a maintainer explicitly changes the contract:

Do not remove public API directly after a Maven Central release without considering a deprecation cycle. Prefer deprecation first, update documentation, and remove only in a planned compatible release window.

Before deleting anything, search references in all consumer-facing and maintainer-facing surfaces:

rg "SymbolName|methodName" src README.md docs .github

Include source, tests, README, docs, examples, architecture notes, GitHub Pages content, benchmark code, and release documentation. A code element with low coverage is not automatically unused.

Required Checks

Run the normal verification and inspect coverage:

mvn -B clean verify
mvn -B test jacoco:report
mvn -B javadoc:javadoc

Coverage reports are generated at:

target/site/jacoco/jacoco.xml
target/site/jacoco/index.html

Open target/site/jacoco/index.html for human review. Use the XML report for Codecov or Sonar if those services are configured later.

Advanced Profiles

Use optional profiles as evidence, not as automatic deletion authority:

mvn -Pquality verify
mvn -Psecurity verify
mvn -Pbenchmark test-compile

quality runs SpotBugs. security runs OWASP Dependency-Check and may download vulnerability data. benchmark only compiles benchmark code with JMH and benchmark-only dependencies unless the benchmark runner is invoked separately.

No PIT mutation-testing or API-compatibility profile is configured yet. If public API removal is planned, add a japicmp or Revapi baseline against the previous Maven Central release first and keep the initial check non-failing until the baseline is reviewed.

Cleanup Policy

Before Release

Before releasing a cleanup change, confirm: