Basically wanted proper project badges generated from a CLI like in Golang/Rust for my Ada projects. Hope this would be a useful addition for checking on code quality. Supports parsing SPARK level, unit tests, DO-178 HAL level and docstrings coverage.
I am currently on a project that has to do DO-178 certification, but sadly it’s all in C. While this tool would not benefit my current project, I can appreciate what it provides.
I plan to perhaps add language agnostic support in the long run (Ada has a great way to exposing FFIs to C) as well as some way to check deltas on code coverage on pull requests.
The 1.0.0 PR to Alire has been merged, now I will wait till it shows up on the site and continue with dev.
Got adacovex to run on GitHub CI though it is about time gnatprove is listed as an explicit dependency. Needs more polish but once the update is out one can check code coverage changes between each PR or on push. I plan to publish a companion GitHub Action as well as push 1.3.0 to Alire if things go well.
1.3.0 is out. I plan to polish github actions UX, add a SBOM flag and “bundle” gnatprove itself so it can be easily invoked alongside the binary (using alr).
1.6.0 is out, forgot to mention that we now have a working GitHub Action to run adacovex in CI or on PRs. There are also some other internal refinements.
As usual, PR to Alire will take a while.
Changelogs
Build Provenance Attestation:
P.S. I have some plans for 2.0 though there needs to be fair bit more polish on the UX side of things.
It does not false positive on third party/deps being SPARK proven
The badges now have better text to background contrast (e.g. no more bright background + bright text)
Codebase is fully proved now
Updated installation docs
Shown how to tie SBOM timestamp to git commit so to version control it is deterministic
Some other changes to the GitHub Actions set up
P.S. If the project goes well and language agnostic support is done properly for 2.0 I would be interested in submitting a proposal to present about the project at FOSDEM or similar events that are programming/Ada related.
The code is “decent” but not crate of the year quality yet. I will continue working on it.
So I have started dogfooding in some sense, my Ada_CRDT project now makes use of adacovex itself. This is probably a good way to find out and address any possible gaps in DX/UX going forward.
I am considering making a Matrix Room once there is demand for it (enough users). If there are any bugs or quirks, do open an issue or better yet a PR at the GitHub.
Findings thus far suggest there is a parser bug which skipped certain unproved code.
That being said I am almost there in terms of having a decent caching mechanism as well as consistency between local and CI runs of adacovex. Hopefully I can drop another release soon.
P.S. Contemplating creating a Matrix room.
Edit: Working on a fix now, also noting the differences in output format between gnatprove v15 and 16.