Skip to content
CAI
Software that uses CAICheck a score

scala-garden/jardiff

57.4

Adequate · 20 September 2026

451

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a command-line tool and library for comparing Java Archive (JAR) files and directories. It provides a core diff engine that analyzes bytecode and class structures, supporting features like raw output, private member visibility, and multi-JAR processing. The tool exposes these capabilities through a CLI with granular filtering options and returns specific exit codes to facilitate programmatic integration.

Behavioural changes

Enhanced CLI options and improved exit code behavior for jardiff

The jardiff command-line interface now supports additional filtering and output control options, including --raw to disable sorting and filtering of classfile contents, --suppress-privates to hide private members, --quiet to suppress diff output to stdout, and --ignore to exclude files based on gitignore patterns. The --unified option has been corrected to accept a numeric argument for context lines. Additionally, the tool now returns a non-zero exit code when differences are detected, allowing scripts to programmatically determine if changes exist between the provided JARs or directories.

cli · high confidence

Enhanced rendering options and multi-JAR support in core diff engine

The core diff engine now supports processing multiple JARs in a single run and offers new rendering controls. Users can enable 'raw' mode to disable member sorting and show additional attributes (scalasig, stackmap, local vars), and toggle 'privates' to include private members in the output. The system now uses Scalap to render .sig files and provides diff markers for single-file comparisons. Additionally, it handles JARs with spaces in their paths, ignores specified file paths, and prevents processing symbolic links.

core/src/main/scala · high confidence

License re-licensed to Apache 2.0 and CI migrated to GitHub Actions

The project has switched its license from the previous terms to the standard Apache License, Version 2.0, updating the LICENSE and NOTICE files accordingly. Additionally, the continuous integration infrastructure has moved from Travis CI to GitHub Actions, removing the .travis.yml configuration file.

(repo-wide) · high confidence

Test coverage

Added tests for JDK 8 compatibility and JAR path handling

Added two new test suites to verify core functionality: JDK8SmokeTest ensures that dependencies like SLF4J and JGit are compatible with JDK 1.8, and IOUtilSpec verifies that the IOUtil.rootPath method correctly handles JAR file paths containing spaces.

core/src/test · high confidence

Dependencies

Update core dependencies and modernize build configuration

The project's core library dependencies have been updated to newer versions, including ASM 9.10.1, Eclipse JGit 5.13.5, SLF4J 2.0.19, Logback 1.3.16, and ScalaTest 3.2.20. The build system has been modernized by switching to SBT 1.6.1+ syntax, updating Scala versions to 2.12.21 and 2.13.18, and changing the organization to com.lightbend. CI configuration now tests against JDK 8, 11, 17, 21, and 25, and the project structure has been split into core and cli modules, with the sbt plugin module removed.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 57.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 54
  • Readiness 50
  • Security 70

Changes since last survey

  • 300 commits — 290 feature/other, 10 fixes

By area

  • (root) — 124 commits
  • (repo) — 79 commits
  • project/plugins.sbt — 36 commits
  • project/build.properties — 33 commits
  • core/src — 18 commits
  • .github/workflows — 10 commits

Notable commits

  • fix: CI: fix MacOS jobs (#186)
  • fix: Fix detection of removed files
  • fix: Fix tests for scala 2.12.x
  • fix: Fix the copyright URL
  • fix: Merge pull request #35 from retronym/topic/fix-removed
  • fix: Merge pull request #46 from dwijnand/fix-copyright-url
  • fix: README: Fix Textifier link (#115)
  • fix: Revert "CI: drop JDK 22, add JDK 25"
  • fix: fix assembly (#113)
  • fix: fix core jar generation (#213)
  • change: Add -p option to suppress private members
  • change: Add JDK21 to ci (#170)
  • change: Add Scala 2 optimizer/inliner
  • change: Add error handling for MatchError in ScalapRenderer
  • change: Add missing "version = "
  • change: Add publish info
  • change: Add raw mode to disable sorting, show scalasig, attributes, stackmap, local vars
  • change: Add sbt-github-actions and sbt-ci-release
  • change: Add scala 2.12.20 to CI
  • change: Add support for Scala 2.13 to core (#161)
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

scala-garden/jardiff was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit edd8c18f83b3a74d56a81856c40524f64baf6696 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.