I do marginalize the effectiveness of a static analysis code tool for detecting such issues. Code: struct some_interface *c = get_from_global_variable(); some_callback_type f = default_callback(); if (c->do_something(c, &f)) { f(); }
struct some_interface *c = get_from_global_variable(); some_callback_type f = default_callback(); if (c->do_something(c, &f)) { f(); }
What's a static code analysis tool doing to do here? It may a ) Either detect a "potential NULL dereference", thus indicating that the 5000000 potential bugs found count is pure crap.
Now, of course their tools ain't cheap. They're doing a great service to the community IMHO but also getting some free marketing for a tool a decade or two ago would be laughed at. Note: not saying it is useless; it's as useless as getting a human to do it: they might get it wrong, but "the more eyes...".