Anyone in touch with codecov team ? We need assert(0); and assert(false); lines to be ignored

Vladimir Panteleev thecybershadow.lists at gmail.com
Thu Feb 11 12:30:36 UTC 2021


On Thursday, 11 February 2021 at 11:17:29 UTC, Basile B. wrote:
> Just like exposed in the title, every assert(false); and 
> assert(0); line is counted as not covered by CodeCov reports. 
> But given D semantics, this is really not supposed to be 
> covered. If at some point this is covered this mean that your 
> program has crashed and that you will fix something and finally 
> you see that the objective here is really that those special 
> assertions must not be covered.
>
> If anyone is in touch with codecov or has been, it's been nice 
> to suggest those two statements in their ignore rules (just 
> like curly braces).
>
> I see criticism comming, such as "they cannot handle 
> assert(/*yeah*/false/**/)", but I think that this does not 
> matter. The regexes for the two most common cases would be 
> great to get more accurate reports.

I think the appropriate place to fix this would be in the 
compiler. This is where the information of whether a line is 
eligible for coverage originates. (In DMD listings, it's the 
difference between a line starting with "       |" and 
"0000000|".)

I think you also ideally want this to apply to basic blocks which 
are guaranteed to end with an assert(0), e.g.:

     default:
         logFatal("This should never happen!");
         assert(false);

as well as functions which do this or otherwise never return. 
(DIP 1017?)



More information about the Digitalmars-d mailing list