Szelethus accepted this revision.
Szelethus added a comment.
This revision is now accepted and ready to land.

In D64274#1623644 <https://reviews.llvm.org/D64274#1623644>, @NoQ wrote:

> In D64274#1600834 <https://reviews.llvm.org/D64274#1600834>, @Szelethus wrote:
>
> > In D64274#1598226 <https://reviews.llvm.org/D64274#1598226>, @NoQ wrote:
> >
> > > I'm confused though; the way i was previously understanding your work, 
> > > when disabling a dependency and then enabling a dependent checker *later* 
> > > in the run-line, it should re-enable the dependency automatically. Did 
> > > you consciously decide not to implement it that way?
> >
> >
> > Yes, somewhat. I chose another direction, which is simply not exposing base 
> > checkers (which I detailed in D60925 <https://reviews.llvm.org/D60925>) to 
> > the users (`-analyzer-checker-help-developer` is a thing now), so they 
> > aren't ever enabled if none of their dependent checkers are. This worked 
> > wonders, because, interestingly, none of the base checkers were emitting 
> > diagnostics.
> >
> > I find this clearer, if I disable something because it crashes on my code, 
> > I don't want to see it again. Though, 9.0.0-final isn't out, and I'm sorry 
> > that I didn't make this decision clear enough -- shall I fix it?
>
>
> Yes, generally i think it's good to have later options override earlier 
> options, because it allows people who run analysis through multiple layers of 
> scripts (eg., buildbots) to override their previous decisions without digging 
> through the whole pile of scripts. This isn't *that* important because the 
> use case is pretty rare, but if you have any immediate ideas on how to fix 
> this i'd be pretty happy :)


The immediate idea is to never allow checkers that emit diagnostics to be 
dependencies. That way, we'll let the analyzer handle enabling/disabling them 
under the hood, and the checker dependency structure would be far more 
accurate, since no checker depends on diagnostics. What do you think? This 
seems to a hot topic anyways now, and would solve the issue behind core 
checkers as mentioned in D66042 <https://reviews.llvm.org/D66042>. I think it 
wouldn't be too much work, especially that I'm very familiar with this part of 
the codebase. That said, the solution might be lengthier than what folks would 
be comfortable merging so late into the release cycle.

My entire checker dependency project was about getting rid of bugs to 
eventually list analyzer/checker options, but I think the idea of separating 
modeling/diagnostic parts should be a project-wide rule. I feel bad for 
dragging you through this, as I previously said

In D64274#1572407 <https://reviews.llvm.org/D64274#1572407>, @Szelethus wrote:

> [side note: since this checker doesn't really do any modeling, in fact it 
> wouldn even store a state if it inspected the call stack, it wouldn't be 
> logical to create a modeling checker that would be a dependency of both 
> `PureVirtualCall` and `VirtualCall`. Since `PureVirtualCall` is a strict 
> subset of `VirtualCall`, if it causes any crashes, you have to disable both 
> anyways. ]


but now I believe having a common base would have been the ideal solution. 
Please feel free to commit as is, I'll pick this up as I enforce the rule.

Maybe its also time to escalate this issue to cfe-dev.


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

https://reviews.llvm.org/D64274



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

Reply via email to