#blognavi
静的解析ツールのadlintで遊んでみる。
参考は以下のサイト
AdLint 3.2.14 利用者ガイド

1. インストール


gemでインストール。
gem install adlint
さっくり終了。


2. ターゲットソースの準備


ターゲットとして、screenを使う。
wget ftp://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz
tar zxvf screen-4.0.3.tar.gz
ここで実際にビルドする。
./configure
make 2>&1 | tee make.log
これをもとに、後で設定ファイルをいじる。

3. テンプレートの作成


テンプレートを作成する。このとき、自分の開発環境を指定する。
adlintize -e i686-linux-gcc_4.5.1 -o adlint
cd adlint
adlintフォルダが作られる。

4. GNUmakefileの修正


メイクするファイルを選ぶ。なぜかテトリスとか入ってるので消す。
 terminfo/tetris.c \
 terminfo/checktc.c \
を削除。

5. adlint_traits.ymlの修正


インクルードパスとかを設定する。ここでハマる。
注意点は以下の2つ。
 1.インデントにタブが使えない
 2.インクルードパスは順序がある
タブを使うと、ymlファイル自体が解析不能エラーになる。
インクルードパスの設定がNGだと、ビルド結果がエラーになる。
とくに順序によって、size_tが解析不能とか言われる。

ここでの修正は、コンパイラセクションのインクルードパス。
以下のように修正
 # Compiler specific include paths.                                      
 # Ex.                                                                   
 #   file_search_paths:                                                  
 #     - "/usr/include"                                                  
 #     - "/usr/local/include"                                            
 file_search_paths:                                                      
   - "/usr/local/include"                                                
   - "/usr/lib/gcc/x86_64-linux-gnu/4.8.4/include"                       
   - "/usr/lib/gcc/x86_64-linux-gnu/4.8.4/include-fixed"                 
   - "/usr/include"                                                      
   - "/usr/include/linux"                                                
   - "/usr/include/x86_64-linux-gnu/"                                    
                                                   

6. 解析実行


すべてを実行してくれるスクリプトが入っているのでそれを実行する。
chmod u+x adlint_all.sh
./adlint_all.sh

解析が終了すると、それぞれのファイルごとに、XXX.msg.csvが作成される。

使用したymlファイルはこれ




カテゴリ: [日記] - &trackback() - 2016年04月16日 22:37:02
名前: コメント:
#blognavi
最終更新:2016年04月16日 22:59