|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: Proposal for deviations in static analyser findings
Hi Jan,
> On 19 Oct 2022, at 07:38, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>
> On 18.10.2022 18:11, Bertrand Marquis wrote:
>>> On 18 Oct 2022, at 16:29, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>> On 18.10.2022 17:17, Luca Fancellu wrote:
>>>>> On 13 Oct 2022, at 12:34, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>>>> On 13.10.2022 12:11, Luca Fancellu wrote:
>>>>>>> On 13 Oct 2022, at 08:50, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>>>>>> On 12.10.2022 18:00, Luca Fancellu wrote:
>>>>>>>> Entries in the database should never be removed, even if they are not
>>>>>>>> used
>>>>>>>> anymore in the code (if a patch is removing or modifying the faulty
>>>>>>>> line).
>>>>>>>> This is to make sure that numbers are not reused which could lead to
>>>>>>>> conflicts
>>>>>>>> with old branches or misleading justifications.
>>>>>>>
>>>>>>> Can we add provisions for shrinking such entries to e.g. just their "id"
>>>>>>> line? Or is the intention to be able to re-use such an entry if a
>>>>>>> matching
>>>>>>> instance appears again later?
>>>>>>
>>>>>> I prefer to don’t shrink it, the name itself is not very long, even
>>>>>> using many digits of the incremental
>>>>>> number, it removes also the dependency on the file name.
>>>>>
>>>>> Name length isn't relevant here, and I have no idea what dependency on a
>>>>> file name you're thinking of. My question is a scalability one: Over time
>>>>> the table will grow large. If all entries remain there in full forever,
>>>>> table size may become unwieldy.
>>>>
>>>> Ok I misunderstood your question, now I understand what you are asking, we
>>>> could remove the content
>>>> of the “analyser” dictionary for sure, because if there is not anymore a
>>>> link with the current code.
>>>>
>>>> Regarding removing the “name” and “text”, could it be that at some point
>>>> we can introduce in the code
>>>> a violation that requires the same justification provided by the “orphan”
>>>> entry?
>>>> In that case we could reuse that entry without creating a new one that
>>>> will only waste space.
>>>> What is the opinion on this?
>>>
>>> Well, yes, this is the one case that I, too, was wondering about. It's not
>>> clear to me whether it wouldn't be better to allocate a fresh ID in such a
>>> case.
>>
>> For traceability and release handling I think it is important that:
>> - we never reuse the same ID in any case
>> - we keep IDs in the database even if there is no occurrence in xen code as
>> this will prevent adding a new ID if an existing one can be reused
>>
>> In a certification context, when a justification has been validated and
>> agreed it will make life a lot easier to not modify it and reuse it in the
>> future if it is needed.
>> From our point of view, having a clear and simple way of handling those will
>> make backports a lot easier.
>
> Isn't validation of a justification connected to the affected code? If so,
> every new instance will need validation, while an orphan entry is entirely
> meaningless.
Hopefully most our justifications should be for some “common” deviations
we allow and as a consequence be reused several times.
An orphan might be meaningless but could still have a meaning in a stable
branch, taking those out might make the work of people doing certification
more complex.
Anyway I think this is a corner case that we could reconsider depending on
how often it is happening but for a start it would make life easier to not
remove
so that numbers are not reused.
>
>>>>>> After the analysis, the source code will return as the original (with
>>>>>> the SAF-* tag).
>>>>>
>>>>> While you mention something similar also as step 3 in the original
>>>>> document
>>>>> near the top, I'm afraid I don't understand what this "return as the
>>>>> original"
>>>>> means. If you want to run the tool on an altered (comments modified)
>>>>> source
>>>>> tree, what I'd expect you to do is clone the sources into a throw-away
>>>>> tree,
>>>>> massage the comments, run the tool, and delete the massaged tree.
>>>>>>>> if the object doesn't have a key-value, then the corresponding in-code
>>>>>>>> comment won't be translated.
>>>>>>>
>>>>>>> Iirc at least Coverity ignores certain instances of what it might
>>>>>>> consider
>>>>>>> violations (fall-through in switch() statements in particular) in case
>>>>>>> _any_ comment is present. Therefore may I suggest that such comments be
>>>>>>> deleted (really: replaced by a blank line, to maintain correct line
>>>>>>> numbering) if there's no matching key-value pair?
>>>>>>
>>>>>> Yes the line won’t be altered if there is no match. This to ensure the
>>>>>> correct line
>>>>>> numbering is not affected.
>>>>>
>>>>> "won't be altered" is the opposite of what I've been asking to consider:
>>>>> Observing that comments _regardless_ of their contents may silence
>>>>> findings,
>>>>> the suggestion is to remove comments (leaving a blank line) when there's
>>>>> no
>>>>> entry for the targeted tool in the table entry.
>>>>
>>>> Why? The tag comment won’t do anything, it would act as a blank line from
>>>> the analyser
>>>> perspective.
>>>
>>> The _tag_ won't do anything, but as said any _comment_ may have an effect.
>>
>> I am not sure I follow this one but in any case we can choose to anyway
>> substitute the tag with something like /* Not applicable */.
>
> That's still a comment, which hence may still silence a tool:
>
> switch ( x )
> {
> case a:
> ...
> /* SAF-<N>-safe */
> case b:
> ...
> break;
> }
>
> is no different from
>
> switch ( x )
> {
> case a:
> ...
> /* fall-through */
> case b:
> ...
> break;
> }
>
> nor
>
> switch ( x )
> {
> case a:
> ...
> /* Not applicable */
> case b:
> ...
> break;
> }
>
> Only
>
> switch ( x )
> {
> case a:
> ...
>
> case b:
> ...
> break;
> }
>
> will make e.g. Coverity actually point out the potentially unintended
> fall through (based on past observations). Whether that behavior is
> fall-through-specific I don't know. If it indeed is, then maybe my
> concern is void - in the long run I think we want to use the pseudo-
> keyword there in all cases anyway.
We can choose the replacement comment to be something not
considered by the tools (or even put an empty /* */).
What we cannot do is remove the line as it would change line numbers.
But apart from fallthrough I do not think any comment is considered by
any tools so this should not be an issue.
Bertrand
>
> Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |