Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

4.1 基本 lint と拡張 lint

lint プログラムは次の 2 つのモードで動作します。

  • 基本モード - デフォルトの lint プログラムです。

  • 拡張モード - 追加の詳細コード解析を提供します

基本 lint でも拡張 lint でも、ファイル全域 (ライブラリを含む) で矛盾した定義や使用を検出し、ファイルを個別に独立して処理する C コンパイラの不足を補います。さまざまなプログラマによって同じ関数が何百ものコードのモジュールで使用される可能性のある大きなプロジェクト環境では、lint は、ほかの方法で探し出すことが困難なバグを発見するのに役立ちます。たとえば、期待しているよりも 1 つ少ない引数で呼び出された関数は、呼び出し時にプッシュされなかった値をスタックから取り出し、そのスタック位置のメモリーの状態によって正しい結果や間違った結果を返します。このような依存性やマシンアーキテクチャーへの依存性を検出することにより、lint はユーザー自身のマシンや別のマシンで実行されるコードを確かなものにすることができます。

拡張モードでは、lint は基本モードの場合よりさらに詳しい報告を出します。基本モードの lint には次の機能が含まれています。

  • ソースプログラムの構造およびフロー解析

  • 定数の伝播と定数式の評価

  • 制御フローとデータフローの解析

  • データ型使用状況の解析

拡張モードでは、lint は次の問題を検出することができます。

  • 使用されていない #include 指令、変数、手続き

  • 解放後のメモリー使用

  • 使用されていない割り当て

  • 初期化前の変数値の使用

  • 割り当てられていないメモリーの解放

  • 定数データセグメントへの書き込み時のポインタの使用

  • 等しくないマクロの再定義

  • 到達しないコード

  • 共用体での値の型利用の適合性

  • 実際の引数の暗黙の型変換