Skip to content
CAI
Software that uses CAICheck a score

scala/scala-xml

54.6

Adequate · 20 September 2026

7.1k

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is the scala.xml library, a cross-platform library for parsing, constructing, and serializing XML in Scala. It provides core functionality for handling XML nodes, attributes, namespaces, and XPath queries, while ensuring security against entity expansion attacks. The codebase supports cross-compilation across Scala 2.12, 2.13, and Scala 3, adapting to modern collection interfaces where applicable.

Behavioural changes

Cross-compilation support for Scala 2.13 and Scala 3

The library now supports building against Scala 2.13 and Scala 3 (Dotty) alongside the existing Scala 2.12 support. This is achieved by introducing version-specific source directories (\scala-2.12\, \scala-2.13+\, \scala-2\, \scala-3\) that provide tailored implementations of core collection interfaces and return types. For Scala 2.13+, the library adopts the new \BuildFrom\ and \SeqOps\ traits, ensuring that \NodeSeq\ and related types use \immutable.Seq\ and leverage the modern collections library, while maintaining binary compatibility with older versions through bridge methods and specific return type aliases.

shared/src/main · high confidence

Test coverage

Added JVM-specific test suite for XML parsing, serialization, and security; Added JVM-specific tests for XML parsing components; Added Scala 2.x-specific XML compilation and transformation tests; Added Scala 2.x-specific XML compiler and parsing tests; Added comprehensive test suite for scala.xml; Added tests for DTD declaration string representations.

Dependencies

Update build dependencies to Scala 2.12.21, 2.13.18, and 3.3.8

The build configuration has been updated to use Scala versions 2.12.21, 2.13.18, and 3.3.8 for cross-compilation. Test dependencies have been upgraded to JUnit 4.13.2, junit-interface 0.13.3, and Apache Commons Lang 3.20.0. Additionally, the build now targets Java 17 for Scala 3 compilation and includes Xerces 2.12.2 for testing.

(dependencies) · high confidence

Housekeeping

Initial project setup and documentation

The repository is initialized with standard project infrastructure files, including a .gitignore, .mailmap, and .jvmopts. Documentation and legal files are added, such as a CHANGELOG.md detailing versions 2.0.0 and 2.0.1, a README.md describing the library and its related projects, a CODE\_OF\_CONDUCT.md, a CONTRIBUTING.md, and LICENSE/NOTICE files under the Apache 2.0 license.

(repo-wide) · 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 55.

Lenses

  • Code Health 93
  • Architecture 100
  • Maturity 40
  • Readiness 67
  • Security 56

Changes since last survey

  • 300 commits — 292 feature/other, 8 fixes

By area

  • (repo) — 117 commits
  • (root) — 45 commits
  • project/plugins.sbt — 45 commits
  • project/build.properties — 43 commits
  • shared/src — 29 commits
  • .github/workflows — 12 commits
  • .circleci/config.yml — 5 commits
  • jvm/src — 3 commits
  • .github/dependabot.yml — 1 commit

Notable commits

  • fix: Fix CircleCI build error
  • fix: Fix infinite loop caused by unclosed character ref
  • fix: Fix scaladoc
  • fix: Merge pull request #729 from rfkm/fix-darr-code-point
  • fix: Revert commit(s) a9815e3
  • fix: Revert commit(s) b8756d5
  • fix: cleanup - fix some dangling ScalaDoc references - drop () after toString and a few other methods - replace unused pattern variables with _ - remove code duplication in name-splitting
  • fix: fix CI
  • change: - moved private def parse() from XMLLoader to FactoryAdapter; - FactoryAdapter.parse returns Document; - added yet another flavor of the XMLLoader.load* methods returning Document: load*Document; - expressed all the other load methods in terms of the load*Document;
  • change: - when systemId is known (file, URL), wrap InputSource around it instead of opening InputStream: this allows XInclude to work (XML parser will open the stream itself).
  • change: Add java 21 to build matrix
  • change: Add missing overrides.
  • change: Add missing type annotations that do not break binary compatibility
  • change: Add type annotations
  • change: Added all missing type annotations. - introduced ScalaVersionSpecificReturnTypes; - split MIMA exclusions by Scala version; - removed exclusions that are no longer needed; - made Circle CI task names not mention the exact Scala version; - provisioned for Scala 2.13-specific code; - Scala 2.13- is only Scala 2.12 now that Scala 11 is no longer supported :) - marked classes used by the compiler.
  • change: Bump actions/checkout from 2 to 3
  • change: Bump actions/checkout from 3 to 4
  • change: Bump actions/checkout from 4 to 5
  • change: Bump actions/checkout from 5 to 6
  • change: Bump actions/setup-java from 2 to 3
  • …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/scala-xml 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 8329863472f6a2f04939974d88d1540c357d5062 — 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.