julianpeeters/sbt-avrohugger
61.6
Adequate · 20 September 2026
151
lines of production code
Scala
primary language
1
measurement over time
What this system is
This system is an sbt plugin that automatically generates Scala source code from Avro schema definitions, including .avsc, .avdl, .avro, and .avpr files. It supports two generation modes—Standard for generic case classes and Specific for Avro SpecificRecord implementations—while handling complex schema features like nested types, unions, enums, and cross-namespace imports. The tool integrates directly into the build process to produce type-safe Scala classes that facilitate serialization and deserialization of Avro data.
How it got here
2015–2017 — Initial release and test expansion
23 changes.
The project launched the sbt-avrohugger plugin to generate Scala code from Avro schemas, introducing support for standard and specific record modes. This period focused heavily on establishing comprehensive test coverage, including scripted integration tests for serialization, custom settings, and complex type handling across Scala 2.12 and 2.13.
2018 — Serialization test coverage expansion
12 changes.
This period focused on expanding test coverage for avrohugger's serialization capabilities, particularly for complex types like Shapeless Coproducts, ADTs, and string enums. The work involved adding comprehensive scripted integration tests to verify round-trip serialization and deserialization across Scala 2.12 and 2.13 versions. These tests ensured correct handling of unions, nested structures, and logical types such as tagged decimals.
2019–2026 — Scripted test expansion and coverage
6 changes.
This period focused on expanding the project's test suite by adding comprehensive scripted integration tests for sbt-avrohugger. The work verified code generation and serialization logic across various Avro schema types, Scala versions, and sbt plugin versions, ensuring robust compilation and cross-namespace handling.
Features
Initial release of sbt-avrohugger plugin for Avro code generation
Introduces the sbt-avrohugger plugin, enabling automatic generation of Scala sources from Avro schemas (.avsc), IDL files (.avdl), datafiles (.avro), and protocols (.avpr). The plugin provides two generation modes: 'Standard' for generic Scala case classes and 'SpecificRecord' for classes implementing Avro's SpecificRecord interface. Users can configure source directories, output paths, custom type mappings, and namespaces via sbt settings, with build caching enabled via crossTarget to optimize compilation performance.
src/main · high confidence
Test coverage
Add SBT scripted test for Avro serialization with sbt-avrohugger 2.17.1; Add SpecificStringEnumSerializationTests for Avro schema validation; Add SpecificVectorSerializationTests for Avro schema generation and serialization; Add scripted test for Avro schema file sorting and dependency resolution; Add scripted test for Avro slow reader serialization; Add scripted test for standard Avro generation with AVDL/AVSC and IDL imports; Add scripted test for tagged decimal serialization; Add scripted tests for custom Avro source directories and specific output paths; Add test for custom namespace handling in Avrohugger; Added Avro schema definitions for GenericJavaEnumSerializationTests; Added Avro schema test fixtures for complex type references; Added Avro schema test fixtures for enum and record serialization; Added Avro schema test resources; Added GenericStringEnumSerializationTests test suite; Added SpecificADTSerializationTests for Avro schema generation and serialization; Added integration tests for GenericCaseObjectEnumSerialization; Added integration tests for GenericOptional Shapeless Unions serialization; Added integration tests for Scala 3 union type serialization; Added integration tests for generic serialization; Added integration tests for schema imports and cross-namespace references; Added sbt 1.x integration tests for sbt-avrohugger; Added scripted integration tests for GenericOptionShapelessUnionsSerialization; Added scripted integration tests for avrohugger serialization; Added scripted tests for GenericDecimalTaggedSerialization; Added scripted tests for OverrideSettings across Scala 2.12 and 2.13; Added scripted tests for Specific ADT serialization; Added scripted tests for generic and specific string enum serialization; Added serialization tests for Avro Specific records; Added serialization tests for Shapeless Coproduct unions; Added serialization tests for avrohugger Standard format; Added serialization tests for standard format case classes; Added serialization tests for standard format coproducts; Added test suite for Shapeless Coproduct union serialization; Added test utilities for Avro serialization verification; Added test utilities for enum serialization verification; Added tests for Avro schema file sorting; Expanded Avro schema test coverage for SpecificSerializationTests; Expanded Avro schema test coverage for serialization edge cases; Updated sbt-avrohugger scripted test to version 2.17.1.
Dependencies
Sbt-avrohugger 2.17.1 release with Scala 3 and Avro 1.12 support
This release updates the sbt-avrohugger plugin to version 2.17.1, aligning it with the corresponding avrohugger-core and avrohugger-filesorter libraries. The build configuration now supports Scala 2.12.21 and Scala 3.8.4, and the scripted tests have been updated to use Avro 1.12.1 (with specific tests covering Avro 1.11.5 for slow reader compatibility and 1.13.0-SNAPSHOT for tagged decimals). Additionally, the plugin now targets sbt 1.12.13 for Scala 2.12 and sbt 2.0.0 for Scala 3, ensuring compatibility with modern build tooling.
(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 62.
Lenses
- Code Health 95
- Architecture 100
- Maturity 59
- Readiness 50
- Security 75
Changes since last survey
- 300 commits — 280 feature/other, 20 fixes
By area
- src/sbt-test — 128 commits
- (root) — 92 commits
- (repo) — 46 commits
- .github/workflows — 22 commits
- src/main — 8 commits
- project/Build.scala — 2 commits
- project/build.properties — 1 commit
- src/test — 1 commit
Notable commits
- fix: Fix CI
- fix: Fix SpecificSerializationTests to use Instant instead of LocalDateTime
- fix: Fix TravisCI badge link
- fix: Fix avrohugger OptionShapelessCoproduct scripted tests
- fix: Fix badge syntax in readme
- fix: Fix merge conflict, use latest SNAPSHOT version
- fix: Fix merge conflicts
- fix: Fix merge conflicts for update to avro 1.9.1
- fix: Fix merge conflicts with origin/master
- fix: Fix merge conflicts with version snapshot in build.sbt
- fix: Fix scripted tests
- fix: Fix scripted tests
- fix: Fix shapeless importer
- fix: Fix specific nullable decimals
- fix: Fix tests
- fix: Merge branch 'fix-missing-shapeless-import'
- fix: Merge branch 'fix-shapeless-tag-import'
- fix: Merge branch 'master' into fix-missing-shapeless-import
- fix: Support FIXED in Specific format
- fix: Support FIXED type in Standard format
- …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
julianpeeters/sbt-avrohugger 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 f629b18637e1bad10996e9037d50c84490254c04 — 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.