aaron.ballman added a comment.

In D69560#1889483 <https://reviews.llvm.org/D69560#1889483>, @whisperity wrote:

> I'd rather not call them //false positive// because the definition of `false 
> positive` is ugly and mushy with regards to this check. This check attempts 
> to enforce an interface rule, whether you(r project) wants to adhere the rule 
> is a concise decision. A type equivalence (or convertibility in case of the 
> follow-up patch D75041 <https://reviews.llvm.org/D75041> that considers 
> implicit conversions) should be a "true positive" in every case, as an 
> indicator of potentially bad design.


The problem is that there *are* false positives, logically. The rule is about 
"unrelated" parameters, so the false positives come from not having any way to 
distinguish between related and unrelated arguments. My intuition is that the 
simple enforcement suggested by the rule is unlikely to be acceptable, but 
that's why I'm asking for data over large, real-world projects.

> However, there's the question whether or not the similar argument-ness is 
> intentional, i.e. a (from one PoV flawed) but deliberate design decision by 
> the project. We've tested a few projects. The ugliest I've found is 
> //OpenCV// where every variable of a function argument is either an 
> `_InputArray` or an `_OutputArray`...
> 
> Another question is, how fragmented you want your type system to be...
>  I hope my research into this topic will be at least something fruitful. It's 
> all about compromises, one end if using `any` for all your variables, the 
> other extreme is having a specific type for every single occurrence (stuff 
> like `fabs_return_t`, `create_schema_name_t` and stuff).

Agreed -- if we can find a heuristic that makes this work, the check has a lot 
of value.

>> In D74463#1888270 <https://reviews.llvm.org/D74463#1888270>, @aaron.ballman 
>> wrote:
>> There is no obvious way to silence any of the diagnostics generated as false 
>> positives short of requiring a naming convention for users to follow, which 
>> is not a particularly clean solution.
> 
> There is, you decide not to enable the checker?

That is not a useful level of granularity given that this check is likely to be 
incredibly noisy as part of our other C++ Core Guideline enforcement. We 
typically have `NOLINT` comments that we can fall back on for silencing 
individual instances of a false positive, but that's not likely to be a 
workable solution by itself for this check in particular because of system and 
third-party headers which are outside of the user's control (and unlikely to be 
willing or able to modify).


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

https://reviews.llvm.org/D69560



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

Reply via email to