cjdb added a comment.

It seems I got confused and conflated the two this morning.

In D131084#3697525 <https://reviews.llvm.org/D131084#3697525>, @vaibhav.y wrote:

>> Hmm, we can probably use "informational" for notes, warnings, and remarks, 
>> but I'm kinda partial to proposing the latter two upstream.
>
> Interesting,  I agree that remarks could fit under "informational".
>
> As for notes: As I understand it they are always child diagnostics of 
> warnings/errors, so seems it would be okay to associate these with the "fail" 
> kind.

I don't think classifying warnings as "fail" is right unless `-Werror` is being 
used. For notes, I think there may be two options, if we don't want to use 
informational:

- inherit from the parent diagnostic
- use notApplicable, since they don't have any influence on their own



In D131084#3697308 <https://reviews.llvm.org/D131084#3697308>, @denik wrote:

> In D131084#3697256 <https://reviews.llvm.org/D131084#3697256>, @cjdb wrote:
>
>> In D131084#3697211 <https://reviews.llvm.org/D131084#3697211>, @vaibhav.y 
>> wrote:
>>
>>> Submitting for review:
>>>
>>> Some notes:
>>>
>>> There are a couple of ways I think we can acheive this, per the spec:
>>>
>>> 1. The reportingDescriptor (rule) objects can be given a default 
>>> configuration property 
>>> <https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317850>,
>>>  which can set the default warning level and other data such as rule 
>>> parameters etc.
>>> 2. The reportingDescriptor objects can omit the default configuration 
>>> (which then allows operating with warning as default), and the level is 
>>> then set when the result is reported.
>>>
>>> The first approach would be "more correct", what are your thoughts on this? 
>>> Would we benefit from having per-diagnostic configuration?
>>>
>>> There is also the question about the "kind" of results in clang. From my 
>>> reading of the spec 
>>> <https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317647>,
>>>  it seems that "fail" is the only case that applies to us because:
>>>
>>> - "pass": Implies no issue was found.
>>> - "open": This value is used by proof-based tools. It could also mean 
>>> additional assertions required
>>> - "informational": The specified rule was evaluated and produced a purely 
>>> informational result that does not indicate the presence of a problem
>>> - "notApplicable": The rule specified by ruleId was not evaluated, because 
>>> it does not apply to the analysis target.
>>>
>>> Of these "open" and "notApplicable" seem to be ones that *could* come to 
>>> use but I'm not sure where / what kind of diagnostics would use these. 
>>> Probably clang-tidy's `bugprone-*` suite?
>>>
>>> Let me know what you think is a good way to approach this wrt clang's 
>>> diagnostics system.
>>
>> Hmm, we can probably use "informational" for notes, warnings, and remarks, 
>> but I'm kinda partial to proposing the latter two upstream.
>
> I think we can skip `kind` in the clang diagnostic. I found this:
>
>> If kind is absent, it SHALL default to "fail".
>> If level has any value other than "none" and kind is present, then kind 
>> SHALL have the value "fail".

If skipping the kind defaults to fail, then we shouldn't skip it, because 
getting a warning or remark doesn't necessarily mean that the build has failed.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D131084/new/

https://reviews.llvm.org/D131084

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to