3 ms·
I'm not going to dispute that #7 earns a place lower down the chain than the features you mentioned in practical terms of identifying bugs. That said, it's only
by technion 11y ago
I'm not going to dispute that #7 earns a place lower down the chain than the features you mentioned in practical terms of identifying bugs. That said, it's only overly feasible when run from early on in design.
If a project currently produces clean output, and I make a commit that causes clang's analyser to complain, it's easy enough to fix, whether it's a "legitimate" error or not.
I've tried throwing static analyzers at long established projects like OpenSSL and.. there's just no point. Noone is going to review a few thousand errors and make hundreds of commits that don't actually fix anything just to get perfectly clean static analysis output. It's more likely I would break something than help.
It's really not that hard to implement a "no commit unless it passes static analysis" rule from the start, and even if the bugs removed are low, I usually argue they are non-zero.
- nickpsecurity 11y agoI did it in chronological order of discovery and significant application. I agree it should be used as early as possible. Plenty of benefit to that. Further, the Orange Book era systems discovered a heuristic that supports your theory about old codebases: things must be designed for such verification or security from Day 1. Usually impossible to retrofit such properties into an existing codebase whose methods were quite different.