[adlint-user-ja:88] [ANN] AdLint 3.2.6 リリース
Open source and free source code static analyzer
Brought to you by:
asamiogis
From: Yutaka Y. <ya...@us...> - 2014-01-09 09:30:10
|
矢野尾です。 本日、AdLint 3.2.6 をリリースいたしました。 今回のリリースでは、解析を異常終了させるものを含む、重大な不具合を修正 しました。 * 既に typedef 宣言済みの struct/union/enum 型を、単一の typedef で再 宣言した場合に異常終了する不具合を修正 以前のバージョンでは、下記のようなコードを解析した時に、E0008 エラー メッセージを出力して解析が失敗していました。 typedef int foo; typedef struct bar { foo f; } baz, *qux; typedef struct bar baz, *qux; /* E0008 */ * C0001 メッセージ本文の誤字を修正 * トークン置換機能で、パターンの括弧内に __adlint__any を指定した場合、 __adlint__any の位置に対応するトークンが無いと括弧の対応がくずれる不 具合を修正 特性ファイルの arbitrary_substitutions 項目に、 "__except(__adlint__any) { __adlint__any }": "" といった置換パターンを設定して、Visual C++ 固有の __except 構文に対 応しようとした場合、ブレース内が空になっているコードを解析すると、 誤って } トークンを削除してしまう不具合がありました。 * プリプロセッサの条件ディレクティブ評価で、スキップする部分に /* を含 む文字列リテラルが現れると、コメントの開始とみなしてしまう不具合を修 正 条件が偽となる #if ディレクティブなどで囲まれた部分に、 printf("/*"); のようなコードが現れた場合、誤って文字列リテラル内の /* をコメントの 開始と判断してしまう不具合がありました。 * 大域スコープでの余分なセミコロンを受け付けるように構文解析器を修正 ISO C 言語標準は、関数定義外に余分なセミコロンは記述できないと規定し ています。 以前のバージョンでは、余分なセミコロンに対して E0008 エラーメッセー ジを出力して解析を中断していましたが、新規エラーメッセージ E0018 を 出力して解析を続行できるよう仕様変更しました。 是非アップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> |