[adlint-user-ja:84] Re: extern FILE * で解析処理中断
Open source and free source code static analyzer
Brought to you by:
asamiogis
From: Yutaka Y. <ya...@us...> - 2013-10-10 10:15:12
|
矢野尾です。 お問い合わせありがとうございます。 現象からしますと、おそらく、正しい stdio.h がインクルードできていない のが原因だと思います。 1.c と同じディレクトリにダミーの stdio.h ファイルがあったりしないでし ょうか? AdLint は、解析するソースコードが #include するファイルを、コンパイラ と同様に実際にインクルードして解析を行います。 例えば、Fedora14 上の gcc でビルドするソースコードを、同じく Fedora14 上で AdLint 解析する場合は、adlintize コマンドを下記のように実行してく ださい。 % adlintize -e i686-linux-gcc_4.5.1 この時に作成される adlint_traits.yml ファイルには、 ...略... compiler_traits: ...略... file_search_paths: - "/usr/local/include" - "/usr/include" - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include" という内容となります。 この file_search_paths 項目の設定内容により、ソースコード中に #include <stdio.h> が現れた時に、AdLint は /usr/local/include/stdio.h /usr/include/stdio.h /usr/lib/gcc/i686-redhat-linux/4.5.1/include/stdio.h を検索して、見つかった stdio.h ファイルを実際にインクルードします。 コンパイラや OS が提供する正しい stdio.h ファイルには、FILE 型の定義が あるので、添付いただいた 1.c を解析できるはずです。 以上 -- 矢野尾 裕 <ya...@us...> > さたけと申します。 > > お世話になります。 > AdLintを使い始めたところです。 > > 以下のソースで、構文エラーにより解析処理が中断されます。 > 原因や対処方法など、教えていただけませんでしょうか。 > > ソース > #include <stdio.h> > > extern FILE *a; > > int main(int argc, char *argv[]) > { > FILE *i; > > return 1; > } > > .msg.csvの内容 > E,./1.c,3,1,core,E0008,ERR,X99,トークン `FILE *' で構文エラーを検知しま > した。 > X,./1.c,3,1,core,X0003,ERR,X99,回復不能なエラーにより解析処理を中断しま > した。詳> > 細は `1.c.msg.csv' 及び `1.c.log' を確認して下さい。 > > 以上です。 |