| ▲ | 0c3ca83 2 days ago |
| Where do you think the static analyzers are baked into for C? gcc -fanalyze ...
clang -fsanitize=address ...
etc
|
|
| ▲ | William_BB 2 days ago | parent | next [-] |
| I meant static analyzers like clang-tidy and cppcheck. `-fanalyze` I suppose is a fair comparison, but `fsanitize` is not since it's not even static |
| |
| ▲ | 0c3ca83 2 days ago | parent [-] | | Yes. Both clang and GCC come with static analyzers built in. Clangs supports whole program static analysis. |
|
|
| ▲ | logicchains 2 days ago | parent | prev | next [-] |
| Those aren't static analyzers, they're dynamic analyzers; they only catch issues at runtime. |
| |
| ▲ | 0c3ca83 2 days ago | parent [-] | | GCC's -fanalyze, and clang's `--analyze` both run static analyzers. |
|
|
| ▲ | musicale 2 days ago | parent | prev | next [-] |
| macos clang (at least) also includes clang -fbounds-safety
this is dynamic/runtime checking, but still very useful! |
|
| ▲ | metaltyphoon 2 days ago | parent | prev [-] |
| If this is such a good default, why make me type `-fsanatize=address? Why isn't this the default when not doing "release mode"? |
| |
| ▲ | William_BB 2 days ago | parent | next [-] | | The obvious answer is that I don't want to pay for these checks at runtime and can catch most of these bugs at test time. There are definitely use cases where that's acceptable. | |
| ▲ | woodruffw 2 days ago | parent | prev | next [-] | | It adds nontrivial runtime cost. It’s also not a perfect mitigation (there are plenty of unsound patterns that ASan, UBSan, and TSan won’t catch). | |
| ▲ | 0c3ca83 2 days ago | parent | prev [-] | | Good question. How much of a slowdown are you willing to accept on deployed systems? | | |
|