Hi Greg, I was able to do this once before:
#if !defined(TODO) # if !defined(NO_PRINT_TODOS) # define DO_PRAGMA(x) _Pragma (#x) # define TODO(x) DO_PRAGMA(message ("TODO - " #x)) # else # define TODO(x) # endif #endif IIRC it allowed me to print compiler output that was not treated as warnings then add -Werror= and treat all warnings as errors. David -----Original Message----- From: Gregory Nutt [mailto:spudan...@gmail.com] Sent: Wednesday, April 01, 2020 9:50 AM To: dev@nuttx.apache.org Subject: Fail checks no new warnings? Hi, list, This is something that I wanted to add to the incubator-nuttx-testing, but it appears that no issues are supported in that repository. That is a problem; issues should be enabled for the testing repository as well. Anyway... I was looking at some successful logs from recent checks of one of my PRs and saw undetected errors. These were not declared as "errors" by GCC, but only as "warnings" so they did not cause the build the fail. This leads me think that we should fail the check if there are new warnings introduced by build. Detecting new warnings might be tricky, however. I did this manually when I ran the build tests myself: I just kept the last good test log and diff'ed the current test log with that known good log. Any new warnings would show up in the diffs. The tricky part is that there is a lot of other kruft that shows up in the diffs too like data differences and line number differences. So I don't know if this would be worth the effort. The benefits would be: 1) We could find undetected errors that currently only manifest as a warnings. 2) We have too many warnings now and we should not permit new warnings to creep into the build. I would like to be able to someday trick all warnings as errors. This would lead to higher quality code. The number of unique warnings is really rather small now (and most generated by explicit #warning commands). If we keep the number of new warnings down, then getting to zero warnings could be achievable. Greg