cmake-init icon indicating copy to clipboard operation
cmake-init copied to clipboard

Option to generate cppcheck reports as xml file

Open osechet opened this issue 6 years ago • 2 comments

It would be nice to have an option to generate ccpcheck reports as an xml file. When calling cppcheck, using the --xml --output-file=<output_file> arguments forces cppcheck to output its report to the given file.

osechet avatar Feb 08 '19 07:02 osechet

My version of cppcheck (1.82 on Ubuntu 18.04) does not document the --output-file parameter. However, the parameter is usable and your suggestion is reasonable.

What I would want to discuss are actual implementation details.

(1) You suggest to add a cmake option. I wonder if such option would toggle the xml-output for all health checks or just for cppcheck. More specifically, would such an option be called OPTION_XML_REPORTS or OPTION_CPPCHECK_XML_REPORTS.

(2) Alternative approaches are the ability to extend the command-line arguments passed to cppcheck at a more visible location in the setup. Example:

set(CPPCHECK_FLAGS "--enable=all --verbose --suppress=missingIncludeSystem
--xml --output-file="\\${CMAKE_CURRENT_BINARY_DIR}/cppcheck-\\${target}.xml")

(3) What I currently test is the addition of more cmake targets where their names encode the output to xml. An example of the current health check targets:

  • check-all
  • check-baselib
  • check-fiblib
  • cppcheck-baselib
  • cppcheck-fiblib
  • clang-tidy-baselib
  • clang-tidy-fiblib

I'm thinking of adding these additional cmake targets:

  • check-all-xml
  • check-baselib-xml
  • check-fiblib-xml
  • cppcheck-baselib-xml
  • cppcheck-fiblib-xml
  • clang-tidy-baselib-xml
  • clang-tidy-fiblib-xml

scheibel avatar Feb 12 '19 14:02 scheibel

The 3 solutions seem interesting. My personal need is only about cppcheck so a OPTION_CPPCHECK_XML_REPORTS would be good. However I agree it would be better to have a more general mechanism. For that reason, the OPTION_XML_REPORTS could be interesting but what happens if a future health tool cannot generate an XML report?

I don't really like the 2nd suggestion. It forces people to know the arguments. It isn't very flexible neither. When manually building the project, I may want to get normal cppcheck reports and only generate the XML reports when running CI/CD.

I like the 3rd option but I'm afraid it would make the project more and more complex if new health tools are added in the future.

osechet avatar Feb 21 '19 18:02 osechet