May 09, 2019
Hi,

Unfortunately I had no chance to see the lightning talk of ABC Bitcoin but want to share my knowledge.

I was also in need to report unit test / coverage / linter results in a Jenkins Pipeline / SonarQube Server.

Unit test was easy, because unit test framework dunit can export QUnit compatible XML files. The D LST coverage files I convert into a Cobertura file and DScanner issues I convert into a CheckStyle file. Cobertura and CheckStyle are tools from other languages but they are well supported in Jenkins and their Jenkins plugins display the affected D source code quite nice.

Despite this work around I created a D issue to make the coverage DMD file output adaptable via D code.
https://issues.dlang.org/show_bug.cgi?id=18745

Also I created a pull request for DScanner to output the findings in SonarQube external issue format.
https://github.com/dlang-community/D-Scanner/pull/747a

There is a SonarQube plugin for D but it is not in the official marketplace and therefore it won't be installed on the central company server I work for. But SonarQube provides generic projects for which you can upload generic coverage data, generic test results and generic findings. You just have provide the data in the format SonarQube specifies.

There is currently 1 catch for generic coverage and test results. The file ending .d causes an exception, I filed a bug report and it will be solved.

There is also some consolidation of the coverage/issue reporter Jenkins plugins ongoing. The Jenkins developer consolidates the plugins. I am pretty sure they will support the SonarQube file formats.

That means if we are able to provide coverage/issues in SonarQube formats, they will also work in Jenkins plugins.

Kind regards
Andre


May 10, 2019
On Thursday, 9 May 2019 at 18:11:57 UTC, Andre Pany wrote:
> Hi,
>
> Unfortunately I had no chance to see the lightning talk of ABC Bitcoin but want to share my knowledge.
>
> [...]

Btw I'm not happy with dmd's coverage format either, but some tools are able to work with it. One good example is CodeCov, e.g.

https://codecov.io/gh/dlang/phobos/branch/master

This is the tool we use to get the coverage information (and more importantly the coverage diff) for every PR in a lot of D repositories.