splint

古いlinux(unixも?)にはlintと呼ばれるCプログラムのチェックツールが存在していた。
確かdebianのwoodyかpotatoには入っていたはず。
現在では、splintと言うものに置き換わっているらしく

apt-cache search splint

でそれらしきツールを検索してインストール。

試しにチェックを掛けても、標準ヘッダファイルのエラーなんかで止まってしまう。
いくつかオプションはつけてみたものの効果が無く、
splint S.S.S. blog/ウェブリブログ
に書かれていた

+skip-sys-headers +single-include +posixlib

あたりをつけて動作させたところ、それらしきエラーが出力されました。
というかsprintfでエラーは厳しい気がしないでもない。snprintfを使うか・・・


追記:
使い勝手は微妙ですね。
printf系関数は元々、出力というか処理した文字数をintで返すのですが(知っていましたか?というか普通は使いませんね。)いちいち、それら返り値を使っていないとかってメッセージが・・・
好きにさせてくれよと言う感じ。

man splint

を見ても、その辺は消せないみたいなので

splint hoge.c オプションは上に書いたやつ |grep -v "Return value"

で、見ないようにしてしまいました。
より正しくは、返り値がバッファサイズ以内かどうかをチェックするべきなのかもしれませんが、ん〜 微妙。
プロファイリングでもしてみるかな?