vsavchenko added a comment.

In D93110#2534690 <https://reviews.llvm.org/D93110#2534690>, @aaron.ballman 
wrote:

> In D93110#2529917 <https://reviews.llvm.org/D93110#2529917>, @NoQ wrote:
>
>>> What I want to avoid is having a static analyzer-specific suppression 
>>> attribute, and a different one for clang-tidy, and a third one for the 
>>> frontend.
>>
>> Given that there are already multiple suppression mechanisms circulating 
>> around (clang-tidy's `// NOLINT`, frontend pragmas, static analyzer's 
>> `#ifdef __clang_analyzer__`, now also attribute), i guess a path forward 
>> would be to eventually add support for multiple mechanisms everywhere.  This 
>> may be tedious to implement but benefits may be well worth it. Consistency 
>> across tools is important when tools are used together; for instance, when 
>> clang-tidy integrates static analyzer, static analyzer automatically starts 
>> supporting `// NOLINT` through clang-tidy's diagnostic consumer magic. This 
>> would also be amazing for discoverability: users can keep using their 
>> preferred mechanism and it'd just work out of the box when they add a new 
>> tool to their arsenal.
>
> To be clear, I'm fine with multiple mechanisms, but not fine with multiple of 
> the same mechanisms. e.g., I don't think it's an issue that we can suppress 
> via the command line, pragmas, NOLINT comments, and attribute usage, but I do 
> think it's a problem if there's one attribute used by clang-tidy and a 
> different attribute used by the static analyzer, and a third attribute for 
> clang itself. Using different attributes causes users to have to consider 
> what basically amount to implementation details of their toolchain and makes 
> it harder to do things like integrate clang-tidy and the clang static 
> analyzer together.

We can integrate these solutions together for clang-tidy and for clang static 
analyzer, it's not a problem at all.  I would've used the existing Suppress 
attribute if it was without `gsl` part.  As I mentioned in the summary, at the 
moment, we want to use it ONLY inside functions.  I can see that `SuppressAttr` 
is not used anywhere in the whole, but I can't be sure that it's not used 
somewhere externally.  So, I couldn't just reduce the scope of it.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D93110

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

Reply via email to