新着情報

[2014-05-10] AdLint 3.2.14 を公開しました

3.2.12 からの変更点は下記の通りです。

  • 可変引数マクロをサポート

是非ご利用ください。

[2014-04-12] AdLint 3.2.12 を公開しました

3.2.10 からの変更点は下記の通りです。

  • 名無しの構造体/共用体メンバを正しく解釈できない不具合を修正
  • オプションのソースコード検査パッケージにロード時の処理を記述できるよう、検査パッケージの初期化機能を追加
  • オプションのソースコード検査パッケージで独自のメトリクスやコード情報を出力できるよう、クロスモジュール解析を見直し

是非ご利用ください。

[2014-02-17] AdLint 3.2.10 を公開しました

3.2.8 からの変更点は下記の通りです。

  • Visual C++ 2010 用のビルド環境テンプレートを追加

是非ご利用ください。

[2014-02-07] AdLint 3.2.8 を公開しました

3.2.6 からの変更点は下記の通りです。

  • 関数形式マクロで 16 進整数定数のプレフィックス 0x と、仮引数の数値本体部分を ## 演算子で連結する場合に、プレフィックスの 0x 部分を 0x のふたつのトークンに分割してしまう不具合を修正 (本件は、AdLint PAD に報告いただいた不具合です)

是非ご利用ください。

[2014-01-09] AdLint 3.2.6 を公開しました

3.2.0 からの変更点は下記の通りです。

  • 既に typedef 宣言済みの struct/union/enum 型を、単一の typedef で再宣言した場合に異常終了する不具合を修正
  • C0001 メッセージ本文の誤字を修正
  • トークン置換機能で、パターンの括弧内に __adlint__any を指定した場合、__adlint__any の位置に対応するトークンが無いと括弧の対応がくずれる不具合を修正
  • プリプロセッサの条件ディレクティブ評価で、スキップする部分に /* を含む文字列リテラルが現れると、コメントの開始とみなしてしまう不具合を修正
  • 大域スコープでの余分なセミコロンを受け付けるように構文解析器を修正

是非ご利用ください。

[2013-08-28] AdLint 3.2.0 を公開しました

3.0.10 からの変更点は下記の通りです。

  • 警告メッセージをコンテキストメッセージにより補足できるよう、(実験的な) コンテキストトレース機能を追加

是非ご利用ください。

[2013-06-28] AdLint 3.0.10 を公開しました

3.0.8 からの変更点は下記の通りです。

  • ブロックコメントの直後に改行をエスケープするための \ がある場合に、プリプロセス結果が不正となる不具合を修正
  • 以前に定義された typedef と同名の列挙子を定義する場合に構文解析エラーとなる不具合を修正
  • グローバルな const 変数の初期値を保持するようインタプリタを修正
  • 値が明確ではないポインタは曖昧なデリファレンスを実行しないよう仕様変更
  • 添え字値が明確ではない配列添え字式評価の精度を向上
  • 繰り返し文の制御式推論に失敗し、制御式が存在しないとして解析してしまう不具合を修正
  • do 文制御式の評価タイミングが早すぎたため、繰り返し本体を評価しない場合がある不具合を修正。
  • break 文による繰り返しの中断時に、以降に不要となる変数値の定義域を間引けない不具合を修正。
  • 配列型や複合データ型変数の子変数への副作用を、親変数へ伝搬しない不具合を修正。

是非ご利用ください。

[2013-05-31] AdLint 3.0.8 を公開しました

3.0.4 からの変更点は下記の通りです。

  • ブロックコメントが翻訳単位内で終端しない場合に異常終了する不具合を修正
  • /*/*/ のようなブロックコメントで、コメントの終端を見落とす不具合を修正
  • #include ディレクティブにヘッダ名をマクロで指定し、かつ、そのマクロが未定義の場合にプリプロセスが終了しない不具合を修正
  • 関数ポインタなど address-constant を導出する式を定数式として扱うよう式の定数性判定を修正
  • 変数定義時の初期値として、定義しようとする変数を指定した sizeof 式が現れると、変数を正しく定義できない不具合を修正
  • W0642 「register 配列のアドレスを取得」 コードチェックで、register 指定で宣言された配列を含むすべてのオブジェクトについて、そのアドレスを導出した場合に警告するよう仕様変更
  • 名前の無いビットフィールドを宣言した場合に構文解析エラーとなる不具合を修正
  • W0786 「ビットフィールドの基底型が int ではない」 コードチェックで、基底型に inttypedef 型を指定すると、警告を出力する不具合を修正
  • 関数外でオブジェクトを参照した場合に、シングルモジュール解析結果のメトリクスファイルに DEP レコードとして依存関係を出力しない不具合を修正
  • グローバルな関数テーブルを関数指定で定義した場合に、W0628 「関数がプロジェクト内で使用されない」 警告を出力してしまう不具合を修正
  • 関数形式マクロ中の ## 演算子の評価方法を ISO C99 規格に準拠するよう修正

是非ご利用ください。

[2013-04-12] AdLint 3.0.4 を公開しました

AdLint 3.0.0 以前のバージョンを既にご利用の方は、こちらの移行ガイドをご参照ください。

3.0.2 からの変更点は下記の通りです。

  • adlint_chk コマンドが異常終了する不具合を修正

是非ご利用ください。

[2013-04-12] AdLint 3.0.2 を公開しました

AdLint 3.0.0 以前のバージョンを既にご利用の方は、こちらの移行ガイドをご参照ください。

3.0.0 からの変更点は下記の通りです。

  • 式の評価時に配列と配列の先頭要素へのポインタを透過的に扱うようインタプリタを修正
  • 式の評価時に関数と関数へのポインタを透過的に扱うようインタプリタを修正
  • W0100 「初期値設定後に変数へ再代入がない」 警告メッセージを明確化

是非ご利用ください。

[2013-03-27] AdLint 3.0.0 を公開しました

以前のバージョンを既にご利用の方は、こちらの移行ガイドをご参照ください。

2.6.14 からの変更点は下記の通りです。

  • パス名によるコードチェック選択機能を追加
  • メッセージ分類によるコードチェック選択機能を追加
  • ソースコード内の注釈によるメッセージ抑止機能を追加
  • メトリクスファイルの関数宣言レコード DCL(F) に、該当関数が明示的に宣言されたか、暗黙的に宣言されたかを示すフィールドを追加
  • 他のソフトウェアに AdLint を組み込みやすく、また、複数スレッドによる並行解析ができるよう、ライブラリインタフェースを改善
  • W0003 「switch 文に default 節が無い」 コードチェックで、default ラベルが他の case ラベルと連接する場合に、default 節が無いと誤判断してしまう不具合を修正
  • W1061 「列挙型の仮引数に異なる型の非定数式の値を指定」 コードチェックで、実引数として互換性の無い列挙型の値を指定した場合に警告しない不具合を修正
  • W1062 「列挙型の変数に異なる型の非定数式の値を代入」 コードチェックで、互換性の無い列挙型の値を代入した場合に警告しない不具合を修正
  • W1063 「列挙型を返す関数から異なる型の非定数式の値を返却」 コードチェックで、互換性の無い列挙型の値を返却した場合に警告しない不具合を修正
  • W0023 「ポインタ変数に対して算術演算」 コードチェックで、W0024 ポインタ変数に対してインクリメントまたはデクリメント コードチェックで検知できない算術演算について、警告しない場合がある不具合を修正
  • W1073 「関数の戻り値を破棄」 コードチェックで、switch 文の制御式に関数呼び出し式を指定した場合に、制御式として値を使用しているのに、戻り値を捨てていると警告してしまう不具合を修正
  • 連接した case ラベルが現れた場合に、フォールスルーによる制御変数値の定義域の widening が効かない不具合を修正
  • メトリクスファイルの 8 進定数に対応する LIT レコードで literal_prefix として 0 を出力しない不具合を修正
  • 制御が分岐した部分の実行パスが終端した場合に、その地点以下の変数値の定義域を正しく間引けない不具合を修正
  • Ruby 2.0.0-p0 に対応

是非ご利用ください。

[2012-12-17] AdLint 2.6.14 を公開しました

2.6.12 からの変更点は下記の通りです。

  • char 型が関係する暗黙の変換コードチェックの仕様を変更し、明示的な signed / unsigned 指定を考慮して警告の意図を明確化
  • 他の製品に AdLint を組み込みやすくするため、ライブラリインタフェースを改善
  • lint コマンドが事前定義する __LINT__ / lint / __lint / __lint__ マクロと、AdLint 独自の事前定義マクロとして、__ADLINT__ / adlint / __adlint / __adlint__ を追加
  • 識別子や宣言の重複を指摘する W0051 / W0052 / W0491 / W0492 / W0703 / W0704 / W0770 / W0771 / W0787 / W0788 / W0789 / W0790 / W1037 コードチェックで、重複のペアとなる部分を C0001 メッセージで補足するよう仕様変更

是非ご利用ください。

[2012-11-29] AdLint 2.6.12 を公開しました

2.6.10 からの変更点は下記の通りです。

  • 大きすぎる整数定数の評価時に異常終了する不具合を修正
  • Ruby 2.0.0dev (r37962) 上で警告なしに実行できるよう調整

是非ご利用ください。

[2012-11-08] AdLint 2.6.10 を公開しました

2.6.2 からの変更点は下記の通りです。

  • 警告メッセージが重複することがある不具合を修正
  • W1069 「if-else-if 文の並びを完結させる else 節がない」 コードチェックで、完結した if-else 文中に完結していない if-else-if 文の並びがある場合に、親の if-else 文の位置で警告してしまう不具合を修正
  • W0708 「for 文の制御変数がループ本体で更新されている」 コードチェックで、明示的な制御式が関数呼び出し式で、制御変数をその関数で更新する場合にもループ本体で更新していると警告してしまう不具合を修正
  • W0534 「制御変数が for 文で初期化されていない」、W0585 「制御変数がインクリメント式に現れない」、W0611 「繰り返し文の制御式が常に真」、W0708 「for 文の制御変数をループ本体で更新」 コードチェックで、制御変数の推論が不十分なため、const 変数を制御変数と判定することがある不具合を修正
  • W1073 「関数の戻り値を破棄」 コードチェックで、制御文の条件式として関数呼び出し式を指定すると、戻り値を条件判断に使用しているのに関わらず警告してしまう不具合を修正
  • W0460 「変数値が評価時点で未設定の可能性有り」 コードチェックで、配列の要素や構造体/共用体のメンバについて警告するときに、一番外側の変数名をメッセージに載せるように修正

是非ご利用ください。

[2012-10-31] AdLint 2.6.2 を公開しました

2.6.0 からの変更点は下記の通りです。

  • 複合代入式の評価時に右辺が未初期化な場合に、代入したにも関わらず左辺に未初期化状態を伝搬する不具合を修正
  • 特性ファイルのパス名リストを指定する項目で、Windows 環境でのパス名としてドライブレターを含めた文字列を指定すると、正しくパス名を認識できない不具合を修正
  • W0082 「`-' 単項演算子を潜在型が符号無しのオペランドに適用」 警告メッセージに該当する潜在型名を追加
  • W0578/W0579 「汎整数型の式をより大きな型に変換」 警告メッセージに変換元と変換先の型名を追加
  • W0650 「シフト演算式の右辺が左辺のビット長より大きい値」 警告メッセージに左辺の型名を追加
  • W0719 「シフト演算式の右辺が潜在型のビット長以上の定数」 警告メッセージに左辺の潜在型名を追加
  • W1051/W1052 「符号無し型の算術演算結果が桁あふれ」 警告メッセージに算術演算式の型名を追加
  • インタプリタでの return 文評価時に副作用完了点が不足していたため、W0599 「副作用完了点間で参照と更新」 コードチェックが不正となる不具合を修正

是非ご利用ください。

[2012-10-22] AdLint 2.6.0 を公開しました

2.4.10 からの変更点は下記の通りです。

  • W0609/W0610 「論理演算の結果が常に固定」 コードチェックで、ループする for 文の制御式について警告してしまう不具合を修正
  • W0088 「論理演算式の右辺に副作用が無い」 コードチェックで、単独の論理演算式を含む式文だけではなく、for 文の制御式についても警告してしまう不具合を修正
  • W0723 「符号付きの演算式がオーバーフローするかも」 コードチェックで、引き算の場合に正しくオーバーフローを検知できない不具合を修正
  • 仮引数から他のオブジェクトへの変換可能性の判断で、仮引数が任意の型へのポインタ、変換先のオブジェクトが void ポインタの場合に、自然に変換できないと判断し W9003 「暗黙的に異なる型のオブジェクトへ変換」 警告を出力してしまう不具合を修正
  • typedef 型の文字列表現を変更し、警告メッセージとメトリクスで typedef 型が表現するプリミティブな型名ではなく、typedef 型の識別子そのものを出力するよう仕様変更
  • W9003 「暗黙的に異なる型のオブジェクトへ変換」 コードチェックで、警告メッセージを明確にするため、変換元の型だけではなく変換先の型も出力するよう仕様変更

是非ご利用ください。

[2012-10-15] AdLint 2.4.10 を公開しました

以前のバージョンを既にご利用の方は、こちらの移行ガイドをご参照ください。

2.4.6 からの変更点は下記の通りです。

  • 制御式が複雑すぎるため制御変数値の定義域管理を諦めたブランチで、制御変数値を更新した後に return 文により実行パスが終端した場合に、制御変数値の定義域管理が不正となる不具合を修正
  • 関数定義の評価後にグローバル変数に記録した副作用をロールバックしきれない不具合を修正
  • sizeof 式オペランドの評価時に副作用を記録しないように修正
  • W0488/W0489/W0490/W0495/W0496/W0497/W0498/W0499/W0500/W0501/W0502 「式の優先順位を明示する () が不足」 コードチェックで、問題のある式全体が () でグループ化されている場合に警告しない不具合を修正

是非ご利用ください。

[2012-10-09] AdLint 2.4.6 を公開しました

以前のバージョンを既にご利用の方は、こちらの移行ガイドをご参照ください。

2.4.0 からの変更点は下記の通りです。

  • 繰り返し文の制御変数値の定義域が不正となる問題を修正
  • W0635 「変換指定子と実引数の型が不一致」 警告の検知で、%s に const char * を指定すると警告してしまう不具合を修正

是非ご利用ください。

[2012-09-21] AdLint 2.4.0 を公開しました

以前のバージョンを既にご利用の方は、こちらの移行ガイドをご参照ください。

2.2.0 からの変更点は下記の通りです。

  • W0425 「複数の宣言または文を一行に記述」 警告の検知で、if 文を一行で記述した場合にも警告してしまう不具合を修正
  • sizeof 式の評価結果が size_t 型の値となるよう評価方法を修正
  • W0070/W0071 「ヘッダのインクルードが不要」 警告の検知で、関数の戻り値型をヘッダファイル内で宣言し、そのヘッダをインクルードするソースファイルで関数を定義した場合に、ヘッダファイルの内容を使用しているにもかかわらず警告してしまう不具合を修正
  • 解析対象プロジェクト内にサードパーティのライブラリを取り込んだ場合に、そのヘッダファイルに関する警告を抑止できるよう特性ファイルのフォーマットを変更
  • 特性ファイルのディレクトリパス名リストを指定する項目で、ひとつの環境変数により複数のパス名を一括設定できるよう改良
  • 特性ファイルの exam_packages に何も指定しなかった場合に異常終了する不具合を修正
  • W0100 「非 const 変数の値が不変」 警告の検知で、ループ内で変数値を更新した場合にも警告してしまう不具合を修正
  • 空の実引数が関数形式マクロの呼び出しに指定されて、内部で対応する仮引数に ## 演算子が適用された場合にプリプロセス結果が不正となる不具合を修正
  • 特性ファイルの include_path 項目がふたつとも空の場合、絶対パス指定で #include してもインクルードできない不具合を修正

是非ご利用ください。

[2012-09-12] AdLint 2.2.0 を公開しました

AdLint 1 系を既にご利用の方は、こちらの移行ガイドをご参照ください。

2.0.10 からの変更点は下記の通りです。

  • W0431 「以前の行より左にずれてる」、W0432 「プロジェクトのインデントスタイルと合っていない」 警告の検知で、関数形式マクロの呼び出しが複数行に渡った場合、プリプロセス結果の二行目以降のインデントが崩れて警告してしまう不具合を修正
  • W0787 「オブジェクトが異なるスコープでの他の宣言と型が異なる」 警告の検知で、兄弟ブロック内のローカル変数についても警告してしまう不具合を修正
  • W0025/W0026 「ファイルが既にインクルードされている」 警告の検知で、メッセージを明確にするためインクルードされるファイルのパス名を出力するように改良

是非ご利用ください。

[2012-09-06] AdLint 2.0.10 を公開しました

AdLint 1 系を既にご利用の方は、こちらの移行ガイドをご参照ください。

2.0.6 からの変更点は下記の通りです。

  • 複雑な制御式により絞り込んだ変数値の定義域を、実行パスの終端により間引きすぎる問題を修正
  • 特性ファイルの各設定項目に環境変数の値を使用できるように改善

是非ご利用ください。

[2012-08-30] AdLint 2.0.6 を公開しました

AdLint 1 系を既にご利用の方は、こちらの移行ガイドをご参照ください。

2.0.2 からの変更点は下記の通りです。

  • 多次元の可変長配列の定義時に長さを指定する式の定義域が十分に絞られていない場合、内部で巨大な配列を生成してメモリを使いすぎる不具合を修正
  • 変数クロスリファレンスの抽出機能で、配列型変数や複合型変数の内部を参照または更新した場合は、一番外側の変数についてアクセスがあったことを記録するように仕様変更

是非ご利用ください。

[2012-08-28] AdLint 2.0.2 を公開しました

AdLint 1 系を既にご利用の方は、こちらの移行ガイドをご参照ください。

2.0.0 からの変更点は下記の通りです。

  • 条件インクルードディレクティブ (#ifdef など) によりスキップされる部分に、コメントアウトされた条件インクルードディレクティブが現れると、プリプロセス結果が不正となる不具合を修正
  • Ubuntu 12.04 LTS (64bit) 上の gcc 4.6.3-1ubuntu5 用のテンプレートを追加

是非ご利用ください。

[2012-08-22] AdLint 2.0.0 を公開しました

AdLint 1 系を既にご利用の方は、こちらの移行ガイドをご参照ください。

1.18.6 からの変更点は下記の通りです。

  • オプションのソースコード検査パッケージを追加インストールして解析処理をカスタマイズできるよう、内部のモジュール構成を見直し、特性ファイルのフォーマットを変更
  • コードチェック選択機能をサポートできるよう、特性ファイルとメッセージ定義ファイルのフォーマットを変更
  • システムヘッダなどの解析対象ソースに関係の無い警告を抑止できるよう、特性ファイルのフォーマットを変更

是非ご利用ください。

[2012-08-14] AdLint 1.18.6 を公開しました

1.18.2 からの変更点は下記の通りです。

  • 長さが省略された不完全な配列型を typedef し、その typedef 型を用いて配列型変数を定義した時に、初期化子から配列型の長さを推論する処理で異常終了する不具合を修正

是非ご利用ください。

[2012-08-03] AdLint 1.18.2 を公開しました

1.18.0 からの変更点は下記の通りです。

  • AdLint 1.18.0 を Windows 上にインストールする場合に、gem コマンドでエラーが発生する問題を解決

是非ご利用ください。

[2012-08-01] AdLint 1.18.0 を公開しました

1.16.0 からの変更点は下記の通りです。

  • W0641 「浮動小数点型と変数ポインタ間のキャスト」 警告を追加
  • W0644 「`void' 式の値を使用」 警告を追加
  • W0649 「シフト演算式の右辺が負の値になるかも」 警告を追加
  • W0650 「シフト演算式の右辺が左辺のビット長を超えている」 警告を追加
  • W0707 「配列の添え字が領域外を指す定数」 警告を追加
  • W0719 「シフト演算式の右辺が左辺の潜在型のビット長を超えている」 警告を追加
  • W0780 「符号無しの左シフト定数式で非ゼロの上位ビットが捨てられる」 警告を追加
  • W0783 「キャスト元またはキャスト先が不完全型」 警告を追加
  • W0792 「浮動小数点数型と関数ポインタ間のキャスト」 警告を追加
  • W0793 「関数ポインタと変数ポインタ間のキャスト」 警告を追加
  • W0794 「符号付きの値を左シフト」 警告を追加
  • W0830 「列挙子リストの末尾にカンマ」 警告を追加
  • W0833 「定数に LL 接尾辞を指定」 警告を追加
  • W0834 「`long long' 型を使用」 警告を追加
  • W1026 「実引数がオブジェクト型ではない」 警告を追加
  • W1039 「変換指定子に `ll' 長さ修飾子を使用」 警告を追加
  • W1047 「構造体/共用体/配列の初期化子に非定数式」 警告を追加
  • W1071 「関数内に複数の終了点」 警告を追加
  • W0459 「変数値が評価時点で設定されていない」 警告の検知で、配列の要素や構造体、共用体のメンバについて警告するときに、一番外側の変数名をメッセージに載せるように修正
  • W0705 「配列の領域外をアクセスするかも」、W0745 「配列の領域外をアクセスする」 警告の検知で、配列の先頭ポインタを含む演算式をオペランドとする間接参照式についてもチェックするように修正
  • W0705 「配列の領域外をアクセスするかも」、W0745 「配列の領域外をアクセスする」 警告の検知で、添え字となる式が定数式の場合は警告しないように修正
  • 式の評価中にオペランドの値が void 型であっても評価を続行するよう修正
  • 式の型を解決する時に void 型のオペランドがあった場合に異常終了する不具合を修正
  • 宣言子の評価で typedef されていない関数ポインタを返す関数の場合、正しく関数オブジェクトを構築できない不具合を修正
  • 共用体の初期化セマンティクスを正しく実装
  • 関数形式マクロ中の # 演算子評価で、仮引数に対応する実引数が空の場合に空文字列として展開するように修正
  • 論理 AND と論理 OR 式の評価で、左辺評価後に副作用完了点が漏れている不具合を修正
  • キャスト式の評価で変数値の参照通知が漏れていたため、関数の戻り値をキャストしてから変数に代入する場合に戻り値を破棄していると誤判定する不具合を修正
  • 前置インクリメント式と前置デクリメント式の評価で、インクリメントまたはデクリメント後の右辺値(rvalue)を結果とするよう修正

是非ご利用ください。

[2012-07-18] AdLint 1.16.0 を公開しました

1.14.0 からの変更点は下記の通りです。

  • W0643 「関数形式マクロ中の `#' 演算子の評価結果が不正」 警告を追加
  • W0646 「通常の文字列リテラルとワイド文字列リテラルが隣接」 警告を追加
  • W0691 「`##' 演算子の評価結果が不正な字句」 警告を追加
  • W0692 「関数形式マクロに実引数を指定していない」 警告を追加
  • W0694 「assert() 関数を呼び出す目的で assert マクロを削除」 警告を追加
  • W0805 「`defined' 演算子に識別子を指定していない」 警告を追加
  • W0811 「マクロの置換結果が `defined' 演算子を含む」 警告を追加
  • W1040 「プリプロセッサディレクティブの後ろに不正な文字列」 警告を追加
  • W1041 「ISO 規格に無いプリプロセッサディレクティブを使用」 警告を追加
  • W1046 「改行をエスケープする `\' の直後に空白文字」 警告を追加
  • W1073 「関数の戻り値を破棄」 警告を追加
  • W1074 「sizeof 式のオペランドに副作用がある式」 警告を追加
  • W1075 「以前 static として宣言したオブジェクトを static 無しで再宣言」 警告を追加
  • W1076 「内部結合を持つ関数を事前に宣言せずに定義」 警告を追加
  • W1077 「サイズが省略された配列変数を宣言」 警告を追加
  • 条件演算式の第二式と第三式の評価時に副作用完了点が漏れていた不具合を修正
  • 条件演算式の値を統合した場合に変数値の参照通知が漏れていた不具合を修正
  • 制御式内の比較演算式評価時に変数値の参照通知が漏れていた不具合を修正

是非ご利用ください。

[2012-07-04] AdLint 1.14.0 を公開しました

1.12.0 からの変更点は下記の通りです。

  • W0645 「K&R スタイルの関数定義で void 型の仮引数」 警告を追加
  • W0697 「戻り値型が非 void の関数から暗黙の return」 警告を追加
  • W0700 「戻り値型が暗黙の int の関数から暗黙の return」 警告を追加
  • W1066 「float 型の複合式の値を double 型へキャスト」 警告を追加
  • W1067 「float 型の複合式の値を long double 型へキャスト」 警告を追加
  • W1068 「double 型の複合式の値を long double 型へキャスト」 警告を追加
  • W1069 「if-else-if 文の末尾に else 節が無い」 警告を追加
  • W1070 「switch 文中に実行パスが 2 つしか無い」 警告を追加
  • W1072 「goto 文を使用」 警告を追加
  • W0104 「非 const 仮引数の値が不変」 警告の検知で、const volatile 修飾した仮引数の値が不変な場合にも警告してしまう不具合を修正
  • W0104 「非 const 仮引数の値が不変」 警告の機能仕様を明記
  • W0645 「K&R スタイルの関数定義で void 型の仮引数」 警告の機能仕様を明記
  • W0697 「戻り値型が非 void の関数から暗黙の return」 警告の機能仕様を明記
  • W0700 「戻り値型が暗黙の int の関数から暗黙の return」 警告の機能仕様を明記
  • W1066 「float 型の複合式の値を double 型へキャスト」 警告の機能仕様を明記
  • W1067 「float 型の複合式の値を long double 型へキャスト」 警告の機能仕様を明記
  • W1068 「double 型の複合式の値を long double 型へキャスト」 警告の機能仕様を明記
  • W1069 「if-else-if 文の末尾に else 節が無い」 警告の機能仕様を明記
  • W1070 「switch 文中に実行パスが 2 つしか無い」 警告の機能仕様を明記
  • W1072 「goto 文を使用」 警告の機能仕様を明記

是非ご利用ください。

[2012-06-20] AdLint 1.12.0 を公開しました

1.10.0 からの変更点は下記の通りです。

  • W0732 「&& 式の両辺が論理式でない」 警告を追加
  • W0733 「|| 式の両辺が論理式でない」 警告を追加
  • W0734 「論理式の左辺がビット演算式または算術式」 警告を追加
  • W0735 「論理式の右辺がビット演算式または算術式」 警告を追加
  • W9003 「暗黙的にオブジェクトが変換される」 警告を追加
  • 制御変数値の定義域が狭くなりすぎたり、広くなりすぎる不具合を修正
  • 変数値定義域同士の乗算で解の定義域が不正となる不具合を修正
  • 変数値定義域管理の単体仕様を明記
  • C 言語の抽象構文木の単体仕様を明記
  • W0093 「ゼロかもしれない値で除算」 警告の機能仕様を明記
  • W0687 「#undef で defined 演算子を削除」 警告の機能仕様を明記
  • W0688 「#line の後に 1..32767 以外の整数値」 警告の機能仕様を明記
  • W0689 「#line 整数値 文字列 の形式になっていない」 警告の機能仕様を明記
  • W0690 「#line の後に行番号が無い」 警告の機能仕様を明記
  • W0733 「|| 式の両辺が論理式でない」 警告の機能仕様を明記
  • W0734 「論理式の左辺がビット演算式または算術式」 警告の機能仕様を明記
  • W0735 「論理式の右辺がビット演算式または算術式」 警告の機能仕様を明記
  • W1052 「算術演算の結果が桁あふれするかも」 警告の機能仕様を明記
  • W9001 「到達しない文」 警告の機能仕様を明記
  • W9003 「暗黙的にオブジェクトが変換される」 警告の機能仕様を明記

是非ご利用ください。

[2012-06-06] AdLint 1.10.0 を公開しました

1.8.10 からの変更点は下記の通りです。

  • W0716 「ビット演算式/算術演算式の両辺が論理式」 警告を追加
  • W0717 「ビット演算式/算術演算式の左辺が論理式」 警告を追加
  • W0718 「ビット演算式/算術演算式の右辺が論理式」 警告を追加
  • W0500 「異なる優先順位の二項演算子を並べて使用」 警告の検知で、条件演算式の第二式と第三式にそれぞれ単体の二項演算式が現れた場合にも警告する不具合を修正
  • W0501 「条件演算式を二項演算子と共に使用」 警告の検知で、一つの条件演算式中に二つの二項演算式があった場合、重複して警告する不具合を修正
  • 条件演算式の評価で制御変数値の定義域を管理していない不具合を修正
  • W0599 「副作用完了点の間で同一変数が更新+参照」 警告の検知で、for 文の第三式で制御変数を更新した場合、最後の制御式評価に警告してしまう不具合を修正
  • 制御式の評価中に副作用完了点に到達したことを通知していない不具合を修正
  • W0582 「実引数の数か型が後の関数プロトタイプ宣言と異なる」 警告の検知で、実引数の型チェックが厳しすぎる不具合を修正
  • W0583 「実引数の型/数が関数定義と異なる」 警告の検知で、実引数の型チェックが厳しすぎる不具合を修正
  • W0584 「実引数の型が関数定義の対応する仮引数の型と異なる」 警告の検知で、実引数の型チェックが厳しすぎる不具合を修正
  • W1031 「オブジェクトを外部結合と内部結合の両方で宣言」 警告の検知で、extern で宣言した変数の定義で static を指定した場合に警告しない不具合を修正
  • adlint/c/type.rb の単体仕様を明記
  • W0001 「()式のネストが 32 段を超えている」 警告の機能仕様を明記
  • W0002 「K&R スタイルの関数定義を使用」 警告の機能仕様を明記
  • W0003 「switch 文中に default 節が無い」 警告の機能仕様を明記
  • W0007 「直前の case/default 節の末尾に break/return 文が無い」 警告の機能仕様を明記
  • W0010 「条件演算式のオペランドに副作用がある」 警告の機能仕様を明記
  • W0013 「繰り返し文中に continue 文を使用」 警告の機能仕様を明記
  • W0109 「宣言が無い関数を呼び出し」 警告の機能仕様を明記
  • W0583 「実引数の型/数が、この後の関数定義と異なる」 警告の機能仕様を明記
  • W0606 「共用体に浮動小数点型のメンバ」 警告の機能仕様を明記
  • W0698 「戻り値を返す関数に式の無い return 文」 警告の機能仕様を追記
  • W0699 「暗黙的に int を返す関数に式の無い return 文」 警告の機能仕様を追記
  • W0703 「タグがより広い有効範囲の識別子を隠蔽」 警告の機能仕様を明記
  • W0716 「ビット演算式/算術演算式の両辺が論理式」 警告の機能仕様を明記
  • W0717 「ビット演算式/算術演算式の左辺が論理式」 警告の機能仕様を明記
  • W0718 「ビット演算式/算術演算式の右辺が論理式」 警告の機能仕様を明記
  • W0723 「符号付の演算式がオーバーフローするかも」 警告の機能仕様を明記
  • W1031 「オブジェクトが外部結合と内部結合で宣言」 警告の機能仕様を明記

是非ご利用ください。

[2012-05-18] AdLint 1.8.10 を公開しました

1.8.2 からの変更点は下記の通りです。

  • W9001 「到達しない文」 警告の検知で、初期化されていない変数を制御式中で使用すると正しく変数値の定義域を絞り込めない不具合を修正
  • W0635 「変換指定子と実引数の型が合わない」 警告の検知で、ポインタ引数を取る変換指定子の場合、実引数の基底型に const 修飾が付いているだけで警告してしまう不具合を修正
  • W0583 「実引数の型/数が、この後の関数定義と異なる」 警告の検知で、仮引数の型が実引数の型に const 修飾を追加しただけなら警告しないように仕様変更
  • W0112 「浮動小数点型の値を等価演算子で比較」 警告の検知で、関係演算子の場合にも警告してしまう不具合を修正
  • W0117 「外部結合を持つ定義の前に宣言が無い」 警告の検知で、宣言の記憶域指定が省略された場合に、外部結合を持つ宣言と認識しない不具合を修正
  • W0118 「外部結合を持つ宣言がヘッダファイル中に無い」 警告の検知で、宣言の記憶域指定が省略された場合に、外部結合を持つ宣言と認識しない不具合を修正
  • W0101 「自動変数のアドレスをより寿命の長いポインタに代入」 警告の検知で、配列型の仮引数を代入した場合、配列本体は実引数として存在するのに警告してしまう不具合を修正
  • W0102 「自動変数のアドレスをポインタ仮引数を介して返却」 警告の検知で、配列型の仮引数のアドレスを返却した場合、配列本体は実引数として存在するのに警告してしまう不具合を修正
  • W0103 「自動変数のアドレスを関数から返却」 警告の検知で、配列型の仮引数を return した場合、配列本体は実引数として存在するのに警告してしまう不具合を修正
  • W0107 「自動変数のアドレスを static ローカルポインタに代入」 警告の検知で、配列型の仮引数を代入した場合、配列本体は実引数として存在するのに警告してしまう不具合を修正
  • W0828 「ネストされた配列の初期値が {} で囲まれていない」 警告の検知で、char 配列型のメンバを文字列リテラルで初期化する場合に警告してしまう不具合を修正
  • W0635 「変換指定子と実引数の型が合わない」 警告の検知で、void * 型の実引数を %p 変換指定子に指定した場合に警告してしまう不具合を修正
  • W0118 「外部結合を持つ宣言がヘッダファイル中に無い」 警告の検知で、初めに宣言がヘッダファイル中にあり、次に同じ宣言がソースファイル中にあった場合にも警告してしまう不具合を修正
  • W0722 「式の値が明らかにオーバーフロー」、W0723 「式の値がオーバーフローするかもしれない」 警告の検知で、掛け算式で値がオーバフローするかもしれない場合に W0722 を出力してしまう不具合を修正
  • W0771 「グローバルなオブジェクトを二つ以上のファイルで宣言」 警告の検知で、宣言が同じソースファイルに二回以上現れた場合にも警告してしまう不具合を修正
  • W0080 「const なグローバル変数を初期値無しで定義」 警告の検知で、グローバルな static 変数が初期値無しで定義された場合に警告しない不具合を修正
  • W0608 「値が負になるかもしれない整数式を符号無し型に変換」 警告の検知で、掛け算の両辺が unsigned char の場合にも警告してしまう不具合を修正
  • W0771 「グローバルなオブジェクトを二つ以上のファイルで宣言」 警告の検知で、宣言が異なるソースファイルに現れた場合にも警告しない不具合を修正
  • W0118 「外部結合を持つ宣言がヘッダファイル中に無い」 警告の検知で、オブジェクトの全ての宣言がソースファイル中にしかない場合に警告を出力しない不具合を修正

是非ご利用ください。

[2012-05-08] AdLint 1.8.2 を公開しました

1.8.0 からの変更点は下記の通りです。

  • 二次元以上の配列型変数に対してネストした array-subscript-expression を評価した場合に、式の型が正しく決定できない不具合を修正

是非ご利用ください。

[2012-04-27] AdLint 1.8.0 を公開しました

1.6.0 からの変更点は下記の通りです。

  • W0607 「値が負になる整数式を符号無し型に変換」 警告を追加
  • W0608 「値が負になるかもしれない整数式を符号無し型に変換」 警告を追加
  • W0625 「外部結合を持つ宣言/定義でヘッダ中に宣言されていない typedef を指定」 警告を追加
  • W0632 「#include <...> のパス名に ' や " 文字を指定」 警告を追加
  • W0633 「#include "..." のパス名に ' 文字を指定」 警告を追加
  • W0634 「#include のパス名に \ 文字を指定」 警告を追加
  • W0642 「register 指定の配列オブジェクトのアドレスを取得」 警告を追加
  • W0711 「関係演算子の右辺が論理式」 警告を追加
  • W0712 「関係演算子の左辺が論理式」 警告を追加
  • W0713 「関係演算子の両辺が論理式」 警告を追加
  • W0714 「& 演算式の両辺が論理式」 警告を追加
  • W0715 「| 演算式の両辺が論理式」 警告を追加
  • W0832 「インラインアセンブリを使用」 警告を追加
  • W0629 「static 関数が翻訳単位内で使用されていない」 警告の検知で、関数ポインタを導出するために参照している場合にも警告してしまう不具合を修正。
  • W0459 「変数値が評価時点で設定されていない」、W0460 「変数値が評価時点で設定されていないかもしれない」 警告の検知で、array-subscript-expression の配列部分が一時変数の場合にも `__adlint__tempvar[99]' で警告してしまう不具合を修正
  • W0461 「実引数に未設定の変数を指すポインタ」、W0462 「実引数に未設定かもしれない変数を指すポインタ」 警告の検知で、長さ未定の配列型仮引数を他の関数の実引数に指定すると警告してしまう不具合を修正
  • W1031 「オブジェクトを外部結合と内部結合の両方で宣言」 警告の検知で、プロトタイプを static で宣言した関数の定義で storage-class-specifer を省略すると警告を出してしまう不具合を修正
  • W0581 「実引数の数か型が以前の呼び出し時と異なる」、W0582 「実引数の数か型が後の関数プロトタイプ宣言と異なる」、W0583 「実引数の数か型が関数定義と異なる」、W0584 「実引数の型が関数定義の対応する仮引数の型と異なる」 警告の検知で、配列実引数を長さ未定の配列仮引数で受ける場合、配列実引数をポインタ仮引数で受ける場合、ポインタ実引数を配列仮引数で受ける場合に、型が異なると警告してしまう不具合を修正
  • W0581 「実引数の数か型が以前の呼び出し時と異なる」 警告の検知で、以前の呼び出し時より実引数の数が多い場合に警告しない不具合を修正
  • W0582 「実引数の数か型が後の関数プロトタイプ宣言と異なる」 警告の検知で、実引数より仮引数の数が多い場合に警告しない不具合を修正
  • W0583 「実引数の数か型が関数定義と異なる」 警告の検知で、実引数より仮引数の数が多い場合に警告しない不具合を修正
  • W0584 「実引数の型が関数定義の対応する仮引数の型と異なる」 警告の検知で、実引数より仮引数の数が多い場合に警告しない不具合を修正
  • #include、#include_next ディレクティブで Windows のパスセパレータをサポート
  • FN_UELS (完結していない if-else-if 文の数) メトリックの測定で、単体の if 文もカウントしてしまう不具合を修正
  • 抽象インタプリタの変数値バージョン管理機能を改良

是非ご利用ください。

[2012-04-06] AdLint 1.6.0 を公開しました

1.4.0 からの変更点は下記の通りです。

  • W0541 「インラインアセンブリを使用」 警告を追加
  • W0573 「変換指定子 %[...] 内に `-' 文字」 警告を追加
  • W0579 「汎整数型の複合式をより大きな型にキャスト」 警告を追加
  • W0685 「変換指定子 %[...] 内の `-' 文字の両端が逆」 警告を追加
  • W0686 「変換指定子 %[...] 内に重複した文字」 警告を追加
  • W0781 「switch 文内に実行パスが一つしかない」 警告を追加
  • W0787 「兄弟スコープでオブジェクトの宣言が異なる」 警告を追加
  • W0788 「同一スコープでオブジェクトの宣言が異なる」 警告を追加
  • W0789 「親スコープでオブジェクトの宣言が異なる」 警告を追加
  • W0807 「事前定義マクロを削除」 警告を追加
  • W0808 「事前定義マクロを再定義」 警告を追加
  • W0809 「識別子がライブラリで予約済み」 警告を追加
  • W1030 「関数内で同一ラベルを複数回定義」 警告を追加
  • W1053 「列挙型の仮引数に数値定数の実引数を指定」 警告を追加
  • W1054 「列挙型変数に非列挙型の値を代入」 警告を追加
  • W1055 「列挙型を返す関数から非列挙型の値を return」 警告を追加
  • W1056 「列挙型の仮引数に異なる列挙型のオブジェクトを指定」 警告を追加
  • W1057 「列挙型変数に異なる列挙型のオブジェクトを代入」 警告を追加
  • W1058 「列挙型を返す関数から異なる列挙型の値を return」 警告を追加
  • W1059 「非列挙型の仮引数に列挙型の実引数を指定」 警告を追加
  • W1060 「非列挙型を返す関数から列挙型の値を return」 警告を追加
  • W1061 「列挙型の仮引数に列挙型でない非定数式を指定」 警告を追加
  • W1062 「列挙型変数に列挙型でない非定数式の値を代入」 警告を追加
  • W1063 「列挙型を返す関数から列挙型でない非定数式の値を return」 警告を追加
  • W0027 ポインタ型変数間で比較演算 警告の検知で、fopen 後のエラー処理など NULL 定数とポインタ変数を比較する場合は警告しないように修正
  • W0728、W0729、W0730 警告の検知で、代入元の式が定数式である場合のみ警告を検知するよう修正
  • W0104 「非 const 仮引数が不変」 警告の検知で、仮引数が const オブジェクトの配列型の場合は警告しないように修正
  • W0031、W0100、W0104、W0459、W0460 警告の不正な検知を修正
  • FN_UNUV (未使用または値割当て後に未使用な変数の数) メトリックの不正な測定を修正
  • 日本語版の利用者ガイドを更新
  • 英語版の利用者ガイドを更新

是非ご利用ください。

[2012-03-29] AdLint 1.4.0 を公開しました

1.2.0 からの変更点は下記の通りです。

  • W0606 「共用体に浮動小数点数型のメンバがある」 警告を追加
  • W0687 「defined 演算子を削除する目的で #undef を使用」 警告を追加
  • W0695 「assert マクロを #undef すると、未定義の結果になる」 警告を追加
  • W0698 「戻り値を返す関数の中で値を返さない return 文」 警告を追加
  • W0699 「暗黙の int を返す関数の中で値を返さない return 文」 警告を追加
  • W0720 「浮動小数点数型の値が変換先の型の範囲に入りきらない」 警告を追加
  • W0721 「整数型の変数がポインタの値を保持しきれない」 警告を追加
  • W0722 「符号付きの式の値がオーバーフローしている」 警告を追加
  • W0723 「符号付きの式の値がオーバーフローする可能性がある」 警告を追加
  • W0726 「修飾された void 型を返す関数の中で値を返す return 文」 警告を追加
  • W0727 「列挙型にない値を使用」 警告を追加
  • W0728 「列挙型の仮引数に別の列挙型の列挙子を実引数として指定」 警告を追加
  • W0729 「列挙型の変数に別の列挙型の列挙子を代入」 警告を追加
  • W0730 「列挙型の値を返す関数の中で別の列挙型の列挙子を return」 警告を追加
  • W0731 「列挙型の switch 文で case ラベルにその列挙型に無い値を指定」 警告を追加
  • W0737 「不完全な列挙型の変数を宣言」 警告を追加
  • W0738 「正の整数定数の値が符号無し型への暗黙の変換でオーバーフロー」 警告を追加
  • W0739 「定数式における符号無し減算の結果がアンダーフロー」 警告を追加
  • W0740 「定数式における符号無し加算の結果がオーバーフロー」 警告を追加
  • W0741 「定数式における符号無し乗算の結果がオーバーフロー」 警告を追加
  • W0743 「整数定数式の値がオーバーフロー」 警告を追加
  • W0801 「構造体/共用体に名前付きのメンバが無い」 警告を追加
  • W0806 「defined という名称のマクロを定義」 警告を追加
  • W1033 「関数の戻り値の型に volatile/const 修飾子を使用」 警告を追加
  • W1064 「列挙型の switch 文で case ラベルに整数定数を指定」 警告を追加
  • W1065 「列挙型の switch 文で case ラベルに異なる列挙型の値を指定」 警告を追加
  • W0727 「列挙型に無い値を使用」 警告を return 文でも検知するため、インタプリタに return 式評価時の戻り値変換ロジックを追加
  • 日本語版の利用者ガイドを更新
  • 英語版の利用者ガイドを更新

是非ご利用ください。

[2012-03-21] AdLint 1.2.0 を公開しました

1.0.0 からの変更点は下記の通りです。

  • W0597 「副作用完了点の間で変数を二回以上更新」 警告を追加
  • W0598 「副作用完了点の間で変数を二回以上更新するかもしれない」 警告を追加
  • W0599 「副作用完了点の間で変数を更新+参照」 警告を追加
  • W0600 「副作用完了点の間で変数を更新+参照するかもしれない」 警告を追加
  • W0688 「#line の後に 1..32767 以外の整数値」 警告を追加
  • W0689 「#line 整数値 文字列 の形式になっていない」 警告の検知機能を追加
  • W0690 「#line の後に行番号が無い」 警告を追加
  • 特性ファイル、メッセージ定義ファイルのスキーマバージョン検証方法を変更
  • 不明確な W0459、W0460 警告メッセージを修正
  • W0459、W0460 警告の検知で、ポインタ型の実引数が未初期化の配列を参照する場合に警告しないよう仕様変更
  • FN_UNUV (未使用または更新後に使用されない変数の数) メトリックが不正な値となる不具合を修正
  • 日本語版の利用者ガイドを更新
  • 英語版の利用者ガイドを更新

是非ご利用ください。

[2012-02-28] AdLint 1.0.0 を公開しました

実装済みの機能は下記の通りです。

  • シングルモジュール解析
  • クロスモジュール解析
  • 597 種類の警告検知
  • 14 種類のコード情報抽出
  • 15 種類のコード品質メトリクス測定

是非ご利用ください。


>> トップへ戻る