C++ Jenkins QA Stack / Tools

2019-03-07 16:49发布

问题:

We are currently in the process of building a QA stack for you C++ development.

We already have multiple Jenkins instances running and made very good experiences with the CI server in combination with other languages like java and php.

What I'm asking for are pointers to tool chains that can be used for C++ Development with Jenkins.

More specific (java / php examples in braces):

  • A unit testing framework that test and produces coverage reports (jUnit / phpUnit)
  • A coding guidelines checker (checkstyle / phpCodeSniffer)
  • Something PMD that spots potential problems in a code base (pmd / phpmd)
  • More if applicable / needed, but those 3 would be the basics i guess?

Bounty edit:

While i got an acceptable answer to my question I was asked to provide more tools / options / reasons to use Jenkins for this project.

In the past I've made suboptimal experiences with commercial tools in this regard. (What? You want to SAVE! those reports? Then you need to buy the extra 10k Bucks/Year plugin that can generate fancy GRAPHS! for you.) I might be wrong here so please tell me if I am.

But mainly I'm looking for a full stack of tools to use with Jenkins for C++ development and QA

回答1:

We use Jenkins with C & C++. These are tools that we have used, and I think you may find useful. All of them are usable with Jenkins:

  • Unit Testing Framework - cppunit : outputs xml which can be fed directly into Jenkins using the cppunit plugin
  • Coverage : gcov + gcovr produces good coverage reports
  • Coding guidelines checker : you can use pclint & the warnings plugin for this.
  • Mess Detector : Not sure what you mean by mess here, but we are using PMD/CPD for code duplication checking and NSIQ for complexity and LOC

We also use cppcheck for static analysis.

Hope that helps!



回答2:

We use Jenkins with the googletest unit testing framework.

  • Test runs produce jUnit-compliant xml.
  • Ported to most every compiler you're likely to run across.

On following my own link, I found this:

Continuous Code Coverage with gcc, googletest, and Hudson

The first three lines of the command simply execute the build. The command on line 4 executes the binary test application we have built, and outputs the test result summary to a junit format XML file.

The final two commands are where the magic is. This executes the gcovr script, a handy python script that converts the gcov output to a Cobertura-style XML file.

Then we have to tell hudson to search the build workspace for the junit and coverage xml files as a post-build action. Now when we run the build we get nice overview charts trending out unit test results and code coverage.



回答3:

I'm currently using the plugin xUnit for C/C++ projects, and it's been working very well so far.

According to cppunit's wikipage, it is no longer being maintained but has been migrated into xUnit (source).