プロトタイプが指定するよりも小さい配列として引数が定義されている場合に警告できるツール (できれば Linux) はありますか?
例えば:
void somefunc(float arg[10]); /* normally this would be defined in a header */
void my_func(void)
{
float arg[2];
somefunc(arg); /* <-- this could be a warning */
}
これは無効なコードではないことは認識していますが、警告を発することができれば、いくつかのよくある間違いを解決できる可能性があります (最近これらのバグの 1 つに遭遇しました)。
関数が同じファイルにあり、配列の境界外に値を設定すると、いくつかのツール (clang static checker など) が警告しますが、arg がプロトタイプ単独よりも小さい場合に何かが警告するかどうか疑問に思っていました。
私はcppcheck、clang、smatch、splint、gccの-Wextraを使用しました...しかし、これについて文句を言う人はいません。