vimとの連携AdLintが警告メッセージを出力するフォーマットは、コンパイラと同じ形式とのこと。連携方法を参考にした。verbose-allとすると、ファイルごとに処理の進捗状況が表示される。それは表示されず、警告メッセージが標準出力に出力される。vimは、その出力をコンパイラのエラーメッセージと同様に解釈し、Quickfixバッファにリスト表示する。ここからEnterキーでそれぞれの警告にジャンプできる。ファイルにも、警告メッセージが保存されている。ファイル名でQuickfixバッファ内で開け、ジャンプできるように加工処理される、、はずなんだが、ジャンプリストにならない。してみると、、できた。エラーフォーマット」に説明がある。エラーフォーマット中の「,」を記述するのに、「\\,」とする必要がある。all」してもAdLintを起動できない。その場合は、次のようにすると良い。次のようなバッチファイル「mkall.bat」を作る。all次に、vimで次の様に設定する。makeprg=mkall.batこれで、「:make」と入力するだけでAdLintを実行できる。キーマップで便利にするさて、警告メッセージ間を移動するには、「:cn」、「:cp」すればいいのだが、3文字打つのは面倒くさい。以下の設定を追加した。:cp<cr>これで、Shiftキーを押しながらF2で次の警告、Shiftキーを押しながらF3で前の警告に移動する。何度も入力するのは面倒そうだ。以下の設定を追加した。このまま数値だけを入力すれば良い。メッセージが出ないようにリファクタリングしてみる。以下の警告メッセージは抑止した。こんなので警告が出たらかなわん、という感じ。なることがあるポインタに対して間接参照が行われています。関数形式マクロが定義されています。基本ソース文字集合に含まれない文字が、文字列リテラルの中で使われています。コメントの中で使われています。値が負になることがありうる整数式が符号無し型に変換されています。警告に対処するためにキャストしたら、今度はこれが出てきた。配列の添字が領域外を指すことがあります。符号付きの式の値がオーバーフローする可能性があります。配列の添字が、領域外を指しています。最初のカッコの位置で警告が出た。構造体、共用体、あるいは配列の初期化子がリテラルではありません。戻り値を破棄しています。printf()に対する警告を抑止した修正した警告こつこつと修正する。初期値を設定後に再代入されません。付きで初期値を指定して定義できる可能性があります。付きで宣言できる可能性があります。定義は外部結合を持ちますが、定義より前にその宣言がありません。宣言が、ヘッダファイルの中にありません。型に型変換されています。型に型変換されています。型に型変換されています。構造体/共用体のメンバの他に、ラベル、タグ、または通常の識別子としても使われています。配列の添字が領域外を指すことがあります。符号付きの式の値がオーバーフローする可能性があります。型のオブジェクトに変換されています。ついて範囲チェックを全部入れるのは大変だし、オーバーヘッドになる。ほとんどは問題ないのだと思うがAdLintの方針が「誤検出してもいいから安全側に」だったはず。これへの対処として、次のような方法が考えられる。用意し、その中で範囲チェックを行う重要なところは範囲チェック、他はassert関数や目視でチェックし、問題ないと判断したら無効にするほうがいいのかも。将来は「変数の値がxxを超えるとオーバーフローする可能性があります」のようになれば嬉しい。Perl5.008009。