What I'm missing from static analyzers are English awareness:
static void
get_foobar() ...
Get is a verb that means "to retrive" so "get_foobar" should return something. int n_bytes = ...;
Why a signed type? A negative number of bytes is nonsense. In fact a whole language designed around assigning semantic meaning to names would be cool. f has to be a function, n has to be an integer >= 0, M has to be a square matrix of some type, has_xyz must be a boolean, and so on.