On Thu, Mar 31, 2022 at 4:14 PM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > On Wed, Mar 30, 2022 at 10:48:13AM +0800, David Gow wrote: > > > + > > > +Smatch does flow analysis and, if allowed to build the function database, it > > > +also does cross function analysis. Smatch tries to answer questions like where > > > +is this buffer allocated? How big is it? Can this index be controlled by the > > > +user? Is this variable larger than that variable? > > > + > > > +It's generally easier to write checks in Smatch than it is to write checks in > > > +Sparse. Nevertheless, there are some overlaps between Sparse and Smatch checks > > > +because there is no reason for re-implementing Sparse's check in Smatch. > > > > This last sentence isn't totally clear to me. Should this "because" be "so"? > > > > I stopped reading your email when you wrote "Cheers, David" but I should > have scrolled down. > > There is not very much overlap between Sparse and Smatch. Both have a > warning for if (!x & y). That is a tiny thing. The big overlap is when > it comes to the locking checks. The Smatch check for locking is > honestly way better and more capable. > > I always run both Sparse and Smatch on my patches. I should run > Coccinelle as well, but I'm more familiar with Sparse and Smatch. Makes sense. I agree that the overlap doesn't seem particularly important: it's the differences which should be more evident. v3[1] of the patch cuts this down to just "Nevertheless, there are some overlaps between Sparse and Smatch checks.", which I think is an improvement. Thanks, -- David [1]: https://lore.kernel.org/all/62f461a20600b95e694016c4e5348ef2e260fa87.1648674305.git.marcelo.schmitt1@xxxxxxxxx/