On 05/10/2023 8:43 am, Luca Fancellu wrote:
>> On 5 Oct 2023, at 00:46, Stefano Stabellini <[email protected]> wrote:
>>
>> Hi MISRA C working group (Jan, Roger, Andrew, Julien, Bertrand, George)
>>
>> in a recent thread Andrew pointed out that the SAF-2-safe tag is
>> confusing and requested a rename:
>> https://marc.info/?l=xen-devel&m=169634970821202
>>
>> As documented by docs/misra/documenting-violations.rst:
>>
>> - SAF-X-safe: This tag means that the next line of code contains a finding, 
>> but
>>   the non compliance to the checker is analysed and demonstrated to be safe.
>> - SAF-X-false-positive-<tool>: This tag means that the next line of code
>>   contains a finding, but the finding is a bug of the tool.
>>
>>
>> Today we have already 28 instances of SAF tags in the Xen codebase.
>>
>>
>> Andrew suggested "ANALYSIS" instead of SAF so I would imagine:
>> - ANALYSIS-X-safe
>> - ANALYSIS-X-false-positive-<tool>
>>
>> If we really want a rename I suggest to rename SAF to SAFE:
>> - SAFE-X-safe
>> - SAFE-X-false-positive-<tool>
>>
>> Or maybe MISRA:
>> - MISRA-X-safe
>> - MISRA-X-false-positive-<tool>
>>
>> But I actually prefer to keep the tag as it is today.
> We chose a generic name instead of MISRA because the tag can potentially 
> suppress findings
> of any checker, including MISRA checker.
>
> If SAF-* is confusing, what about FUSA-* ?
>
> Anyway I’m thinking that every name we could come up will be confusing at 
> first, improving the
> documentation would mitigate it (by improving I mean to improve the fruition 
> of it, for example a
> Read the docs documentation has the search bar, a quick copy paste of SAF- 
> would make the
> documenting-violations page visible.)

No - this is a problem *because* changing the documentation doesn't
help.   (To be clear, updating the documentation is fine, but irrelevant
here.)


These are annotations in code.  They need to be:

1) Short (obviously)
2) Clear to someone who isn't you (the collective us of this group)
reading the code.
3) Non-intrusive, so as not to get in the way of the code.

and they must be all three.  This was even a principle given at the
start of the MISRA work that we would not be deteriorating the quality
of the code just to comply.

Point 3 is other thread about end-of-line, or block regions.  Lets leave
that there because it's really a metadata transformation problem
constrained by where the comments can acceptably go.


Point 2 is the issue here, and "SAF-$N-safe" scores very highly on the
WTF-o-meter *even* for people who know that it's something related to MISRA.

Seriously it looks like someone couldn't spell, and everyone else went
with it (reflects poorly on everyone else).

And yes, I know it's an initialisation for something, but it's not even
an industry standard term - it's a contraction of an intentionally
generic phrase, with substantial irony on an early MISRA call where
there was uncertainly between people as to what it even stood for.

These are the thoughts running through the minds of people reading the
code when they don't understand what they're looking at.


Annotations for other static analysers intentionally use their own name
so they're googleable.

Guess what SAF googles for?  Sustainable Aviation Fuel, or Specialist
Automotive Finance.

Fine, lets be more specific.  How about "Xen SAF" ?  Nope...

"Did you mean to search for:
Xen SAVE Xen SAN Xen VIF Xenstaff"


Despite many of the search results referencing patches, or rendered
documents out of docs/, not a single one of them gets
documenting-violations.rst in any form, where the single definition of
this term is hiding in a paragraph which spends 90% of it's volume
describing a monotonically increasing number.

Seriously, ChatGPT would struggle to make shit this good up.


The thing we tag with *must* be trivially recognisable as an analysis
tag in order for others to be able to read the code.  Therefore, it
needs to be an actual full world (hence the ANALYSIS suggestion), or an
industry standard term (where MISRA does qualify).

I don't exactly what it is - something else might turn out to be even
better, but it is very important to be not this, for everyone else to
have an easy time reading the code.


And reasoning along that line...  What's wrong with just /* octal-ok */
or /* womble-permitted */ so it's also apparent in context what the
contentious issue might be and why it might be mitigated?

The mechanics behind the scenes is just a trivial text replacement, and
the tagging scheme does not have to uniform obfuscated identifier for
that to work.

~Andrew

Reply via email to