adlint-user-ja Mailing List for AdLint
Open source and free source code static analyzer
Brought to you by:
asamiogis
You can subscribe to this list here.
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(33) |
Nov
(14) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2013 |
Jan
|
Feb
(3) |
Mar
(1) |
Apr
(2) |
May
(15) |
Jun
(3) |
Jul
(4) |
Aug
(4) |
Sep
|
Oct
(5) |
Nov
|
Dec
|
2014 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
(2) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: 井上 妥 T. D. <Ino...@te...> - 2016-04-14 23:41:58
|
高瀬様 いつもおせわになります。井上です。 あれから別業務を行っていたため、解析作業が停滞しています。 ご指摘いただき、ありがとうございます。 近日中に再開する予定ですので、対応してみます。 文献についても当たってみますが、高価なものですね。 大きい図書館へ行っても見る予定です。 ありがとうございました。 ________________________________________ 差出人: Ryuichi Takase [r-t...@ai...] 送信日時: 2016年4月8日 8:47 宛先: adl...@li... 件名: [adlint-user-ja:100] Re: オブジェクト変換について 高瀬です。 どなたからも回答がないようなので、少しだけ。 次のコードように、違う型の変数へ代入されているのではないでしょうか。 int main(int argc, char **argv) { typedef enum { two, three, four, five, six, seven, eight, nine, ten, Jack, Queen, King, Ace } rank; rank card = Ace; int number = card; return 0; } 明示的にint型にキャストすれば、指摘が消えると思います。 しかし、そもそも列挙型はint型ではありません。 この辺りの概念については、下記の文献によくまとまっていると思います。 C.A.R.ホーア. "II データ構造化序論". 構造化プログラミング. サイエンス社, 1975, p.97-196. On Sat, 26 Mar 2016 05:11:08 +0000 井上 妥 TechnoPro Design <Ino...@te...> wrote: > いつもお世話になります。v3.2.14を利用しております。 > 今回開発・改修したソースをadlintに通してみました。 > すると、以下のような指摘がありました。 > > W9003:暗黙的に `enum __adlint__anon_20' 型のオブジェクトが `int' 型のオブジェクトに変換されています。 > > いろいろと調べてみたのですが、よくわかりません。 > よく他の指摘箇所も見てみると、typedefでenumやらunionのメンバを使用している > 部分に、上記の指摘があるように見えます。 > この「__adlint_anon_20」とやらについて、ご存じでしたら教えてください。 > ------------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 国立研究開発法人 産業技術総合研究所 情報・人間工学領域 知能システム研究部門 マニピュレーション研究グループ ------------------------------------------------------------------------- ------------------------------------------------------------------------------ _______________________________________________ adlint-user-ja mailing list adl...@li... https://lists.sourceforge.net/lists/listinfo/adlint-user-ja ________________________________ 受信されたメールにお心当たりのない場合は、送信者にご連絡を頂くとともに、本メールは破棄して頂くようお願い致します。 If you receive this message by mistake, please advise the sender immediately and delete this message from your system. |
From: Ryuichi T. <r-t...@ai...> - 2016-04-07 23:47:37
|
高瀬です。 どなたからも回答がないようなので、少しだけ。 次のコードように、違う型の変数へ代入されているのではないでしょうか。 int main(int argc, char **argv) { typedef enum { two, three, four, five, six, seven, eight, nine, ten, Jack, Queen, King, Ace } rank; rank card = Ace; int number = card; return 0; } 明示的にint型にキャストすれば、指摘が消えると思います。 しかし、そもそも列挙型はint型ではありません。 この辺りの概念については、下記の文献によくまとまっていると思います。 C.A.R.ホーア. "II データ構造化序論". 構造化プログラミング. サイエンス社, 1975, p.97-196. On Sat, 26 Mar 2016 05:11:08 +0000 井上 妥 TechnoPro Design <Ino...@te...> wrote: > いつもお世話になります。v3.2.14を利用しております。 > 今回開発・改修したソースをadlintに通してみました。 > すると、以下のような指摘がありました。 > > W9003:暗黙的に `enum __adlint__anon_20' 型のオブジェクトが `int' 型のオブジェクトに変換されています。 > > いろいろと調べてみたのですが、よくわかりません。 > よく他の指摘箇所も見てみると、typedefでenumやらunionのメンバを使用している > 部分に、上記の指摘があるように見えます。 > この「__adlint_anon_20」とやらについて、ご存じでしたら教えてください。 > ------------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 国立研究開発法人 産業技術総合研究所 情報・人間工学領域 知能システム研究部門 マニピュレーション研究グループ ------------------------------------------------------------------------- |
From: 井上 妥 T. D. <Ino...@te...> - 2016-03-26 05:37:54
|
いつもお世話になります。v3.2.14を利用しております。 今回開発・改修したソースをadlintに通してみました。 すると、以下のような指摘がありました。 W9003:暗黙的に `enum __adlint__anon_20' 型のオブジェクトが `int' 型のオブジェクトに変換されています。 いろいろと調べてみたのですが、よくわかりません。 よく他の指摘箇所も見てみると、typedefでenumやらunionのメンバを使用している 部分に、上記の指摘があるように見えます。 この「__adlint_anon_20」とやらについて、ご存じでしたら教えてください。 ________________________________ 受信されたメールにお心当たりのない場合は、送信者にご連絡を頂くとともに、本メールは破棄して頂くようお願い致します。 If you receive this message by mistake, please advise the sender immediately and delete this message from your system. |
From: <ka...@wh...> - 2015-03-17 09:39:29
|
いつもお世話になっています。 小川清@名古屋市工業研究所です。 Adlintを昨日, Macintosh OSX 10.10.2(16GB memory) にダウンロードして、利 用2日目です。 昨日Webに掲載している例で動作確認しました。 今日は、自分が担当しているオープンソースのTOPPERS/sspを確認しようとして 操作しています。 http://toppers.jp/download.cgi/ssp_cq_frk_fm3_gcc-20140307.tar.gz 作業記録の一部は、 https://researchmap.jp/jo4a9svxt-1778110/#_1778110 に書きかけています。 logファイルに、 failed to parse preprocessed file. というエラーが出て先に進めません。 MLの過去ログを見ても該当する事項がなく、 WEB検索でも出てきませんでした。 ------------------ファイルの記述は、先頭のコメントを除くと、 #ifndef TOPPERS_CHIP_TEST_H #define TOPPERS_CHIP_TEST_H /* * チップで共通な定義 */ #define CPUEXC1 6 /* Usage Fault */ #define RAISE_CPU_EXCEPTION Asm("mcr p15, 0, r1, c2, c0, 0"); #define CANNOT_RETURN_CPUEXC #endif /* TOPPERS_CHIP_TEST_H */ ----------というものです。 このファイルに限らず、一つ前で他にincludeするものがないヘッダファイルを 読み込むと、 同じエラーで終わります。 ファイルのopen,文字コードなどのエラーはなんとか回避しました。 何から手をつけたらいいか、ご教示いただけると幸いです。 ps. Rubyは、昨年の暮れから、文字列処理などで利用しはじめたばかりです。 |
From: Yutaka Y. <ya...@us...> - 2015-01-31 10:45:09
|
矢野尾です。 ご報告ありがとうございます。 確かに、現状のコード評価の仕組み上、ご例示いただいたようなコードの場合 flg 変数がとり得る値として 0 のみを仮定してコードチェックするため、 flg == 1 の条件が常に偽であると誤認してしまいます。 この問題を解決するためには、制御が到達しないデッドコードを検知するため の仕組みを見直す必要があります。 が、、、私事ですが、現在対応のための時間を作れそうにありません。 ご報告頂けたにも関わらず申し訳ありませんが、対応までにお時間を頂きたい と思います。 以上 -- 矢野尾 裕 <ya...@us...> |
From: 松村悟 <ma...@no...> - 2015-01-28 03:06:11
|
お世話になります。 株式会社ノーリツの松村です。 if、switch文などの式で、変数の値が、その箇所では変更されないもので、他のファイルで、書き換えるような場合、W9001エラーが出ます (シングルモジュール解析のメトリクス測定結果には、エラーの箇所からの関数コールは無いと判断されています)。 その結果、クロスモジュール解析 で、関数コール数が実際と合わなくなります。 出来るなら改善をお願いします。 例) 下記のfile1.cとfile2.cのような場合、func_int()が、割込みで定期的に実行されているようなソフトの場合、main()のfunc_sub();の行が、W9001エラーになります。 # # file1.c void main(void){ flg = 0; for(;;){ if(flg == 1) func_sub(); ← ここが、実行されないと判断されて、W9001エラーになり、関数コールされていないことになる。 } } # # file1.c end # # file2.c void func_int(void){ if(flg){ flg = 0; }else{ flg = 1; } } # # file2.c end 以上、宜しくお願い致します。 |
From: Yutaka Y. <ya...@us...> - 2014-05-10 14:53:08
|
矢野尾です。 本日、AdLint 3.2.14 をリリースいたしました。 今回のリリースでは、C99 標準の可変引数マクロに対応しました。 以前のバージョンでは、下記のような可変個の実引数をとる関数形式マクロに 対応していなかったため、解析エラーを回避するために AdLint のトークン置 換機能を使う必要がありました。 #define defun(type, name, ...) extern type my_##name(__VA_ARGS__) defun(int, foo, int); /* extern int my_foo(int); に置換 */ AdLint 3.2.14 からは、可変引数マクロを C99 標準通りに置換できるので、 解析エラー回避のための余分な設定が不要となります。 是非アップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> |
From: Takashi H. <ta...@ki...> - 2014-05-07 20:57:29
|
矢野尾様: > arbitrary_substitutions: > ...その他の設定... > "define_smartio_variants(__adlint__any);": "" # <- 追加 でエラーがなくなりました。 これを行っても、fprintfに関連した警告はとくに増えていないようです。 対策のご提示ありがとうございました。 堀 (2014/05/07 13:22), Yutaka Yanoh wrote: > 矢野尾です。 > > AdLint 3.2.12 では C99 の可変引数マクロに対応していないのが原因です。 > > かなり乱暴な方法ですが、とりあえずはトークン置換機能を使って、 > define_smartio_variants マクロの呼び出しを削除してみると構文エラーは > 逃げれそうです。 > > adlint_traits.yml ファイルの、arbitrary_substitution: 項目を下記のよう > に変更してお試し下さい。 > > arbitrary_substitutions: > ...その他の設定... > "define_smartio_variants(__adlint__any);": "" # <- 追加 > > この設定により、AdLint 解析中のプリプロセス直後に > define_smartio_variants(任意のトークン); > の部分を削除するようになります。 > > ソースコード中から上記を単純に削除してしまうので、fprintf などの標準 > ライブラリ関数のプロトタイプ宣言が無くなってしまい、余計な警告が増えて > しまうかと思いますが、その部分は無視してください。 > > # やはり、可変引数マクロにもきちんと対応しないとだめですね。。。 > # 時間を見つけて AdLint 3.2.14 でやってみたいと思います。 > > -- > 矢野尾 裕 <ya...@us...> > > > ------------------------------------------------------------------------------ > Is your legacy SCM system holding you back? Join Perforce May 7 to find out: > • 3 signs your SCM is hindering your productivity > • Requirements for releasing software faster > • Expert tips and advice for migrating your SCM now > http://p.sf.net/sfu/perforce > _______________________________________________ > adlint-user-ja mailing list > adl...@li... > https://lists.sourceforge.net/lists/listinfo/adlint-user-ja |
From: Yutaka Y. <ya...@us...> - 2014-05-07 04:22:18
|
矢野尾です。 AdLint 3.2.12 では C99 の可変引数マクロに対応していないのが原因です。 かなり乱暴な方法ですが、とりあえずはトークン置換機能を使って、 define_smartio_variants マクロの呼び出しを削除してみると構文エラーは 逃げれそうです。 adlint_traits.yml ファイルの、arbitrary_substitution: 項目を下記のよう に変更してお試し下さい。 arbitrary_substitutions: ...その他の設定... "define_smartio_variants(__adlint__any);": "" # <- 追加 この設定により、AdLint 解析中のプリプロセス直後に define_smartio_variants(任意のトークン); の部分を削除するようになります。 ソースコード中から上記を単純に削除してしまうので、fprintf などの標準 ライブラリ関数のプロトタイプ宣言が無くなってしまい、余計な警告が増えて しまうかと思いますが、その部分は無視してください。 # やはり、可変引数マクロにもきちんと対応しないとだめですね。。。 # 時間を見つけて AdLint 3.2.14 でやってみたいと思います。 -- 矢野尾 裕 <ya...@us...> |
From: Takashi H. <ta...@ki...> - 2014-05-06 21:01:00
|
堀と申します。はじめまして。 AdLint 3.2.12を使わせて頂いています。 表題の件ですが、Microchip Technology製のコンパイラ「MPLAB XC32 Ver. 1.30」のヘッダファイルが原因で、次のエラーメッセージが表示されます。 > c:\program files\microchip\xc32\v1.30\pic32mx\include\stdio.h|291 col > 32| error:core:E0008:ERR:X99:トークン `, fprintf' で構文エラーを検知し > ました。 その内容は、次のようになっています。 > #if defined(__C32_VERSION__) > define_smartio_variants(int,fprintf,FILE *, const char *, ...); > define_smartio_variants(int, fscanf, FILE *, const char *, ...); > define_smartio_variants(int,vfprintf,FILE *, const char *, va_list); > define_smartio_variants(int, vfscanf, FILE *, const char *, va_list); > #endif さらに、マクロ「define_smartio_variants」は、次のような定義でした。 > #if defined(__C32_VERSION__) > #if !defined(__STRICT_ANSI__) > #define define_smartio_variants(rettype,funcname,...) \ > extern rettype _ ## funcname ## _cdeEfFgGnopsuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdeEfFgGnopuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdeEfFnopsuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdeEfFnopuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdeEgGnopsuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdeEgGnopuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdeEnopsuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdeEnopuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdfFgGnopsuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdfFgGnopuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdfFnopsuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdfFnopuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdgGnopsuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdgGnopuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdnopsuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _cdnopuxX (__VA_ARGS__); \ > extern rettype _ ## funcname ## _eE (__VA_ARGS__); \ > extern rettype _ ## funcname ## _eEfF (__VA_ARGS__); \ > extern rettype _ ## funcname ## _eEfFgG (__VA_ARGS__); \ > extern rettype _ ## funcname ## _eEfFgGs (__VA_ARGS__); \ > extern rettype _ ## funcname ## _eEfFs (__VA_ARGS__); \ > extern rettype _ ## funcname ## _eEgG (__VA_ARGS__); \ > extern rettype _ ## funcname ## _eEgGs (__VA_ARGS__); \ > extern rettype _ ## funcname ## _eEs (__VA_ARGS__); \ > extern rettype _ ## funcname ## _fF (__VA_ARGS__); \ > extern rettype _ ## funcname ## _fFgG (__VA_ARGS__); \ > extern rettype _ ## funcname ## _fFgGs (__VA_ARGS__); \ > extern rettype _ ## funcname ## _fFs (__VA_ARGS__); \ > extern rettype _ ## funcname ## _gG (__VA_ARGS__); \ > extern rettype _ ## funcname ## _gGs (__VA_ARGS__); \ > extern rettype _ ## funcname ## _s (__VA_ARGS__); \ > extern rettype _ ## funcname (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdeEfFgGnopsuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdeEfFgGnopuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdeEfFnopsuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdeEfFnopuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdeEgGnopsuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdeEgGnopuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdeEnopsuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdeEnopuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdfFgGnopsuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdfFgGnopuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdfFnopsuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdfFnopuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdgGnopsuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdgGnopuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdnopsuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _cdnopuxX (__VA_ARGS__); \ > extern rettype _d ## funcname ## _eE (__VA_ARGS__); \ > extern rettype _d ## funcname ## _eEfF (__VA_ARGS__); \ > extern rettype _d ## funcname ## _eEfFgG (__VA_ARGS__); \ > extern rettype _d ## funcname ## _eEfFgGs (__VA_ARGS__); \ > extern rettype _d ## funcname ## _eEfFs (__VA_ARGS__); \ > extern rettype _d ## funcname ## _eEgG (__VA_ARGS__); \ > extern rettype _d ## funcname ## _eEgGs (__VA_ARGS__); \ > extern rettype _d ## funcname ## _eEs (__VA_ARGS__); \ > extern rettype _d ## funcname ## _fF (__VA_ARGS__); \ > extern rettype _d ## funcname ## _fFgG (__VA_ARGS__); \ > extern rettype _d ## funcname ## _fFgGs (__VA_ARGS__); \ > extern rettype _d ## funcname ## _fFs (__VA_ARGS__); \ > extern rettype _d ## funcname ## _gG (__VA_ARGS__); \ > extern rettype _d ## funcname ## _gGs (__VA_ARGS__); \ > extern rettype _d ## funcname ## _s (__VA_ARGS__); \ > extern rettype _d ## funcname (__VA_ARGS__); > #else > #define define_smartio_variants(rettype,funcname,...) > #endif /* STRICT_ANSI */ > #endif /* C32_VERSION */ 私の方で試したのは、次の内容です。 「define_smartio_variants」を空定義しようと、adlint_cinit.hに > #define define_smartio_variants(rettype,funcname,...) を追加 → 効果なし 「__STRICT_ANSI__」を定義すれば、「define_smartio_variants」は定義されな いはず、と考え、 adlint_pinit.hに > #define __STRICT_ANSI__ を追加 → 効果なし 他にどのようにすればこのエラーを解消できるか、お教えいただければありがた いです。 どうぞよろしくお願いいたします。 #もし、メーリングリストの趣旨と合わない内容でしたら、すみません |
From: Yutaka Y. <ya...@us...> - 2014-04-12 01:45:10
|
矢野尾です。 本日、AdLint 3.2.12 をリリースいたしました。 今回のリリースでは、AdLint にプラグインできる外部のソースコード検査パ ッケージを開発しやすくするための改良と、構造体/共用体に関する不具合を 修正しました。 * オプションのソースコード検査パッケージにロード時の処理を記述できるよ う、検査パッケージの初期化機能を追加 AdLint には、オプションのソースコード検査パッケージをアドオンする機 能があります。 今回の改良により、アドオンしたソースコード検査パッケージをロードした タイミングで実行したい処理を記述できるようになります。 * オプションのソースコード検査パッケージで独自のメトリクスやコード情報 を出力できるよう、クロスモジュール解析を見直し オプションのソースコード検査パッケージから独自のメトリクスやコード情 報を .met.csv ファイルに出力すると、クロスモジュール解析が異常終了し てしまいます。 今回、クロスモジュール解析に関連の無いレコードをスキップするよう仕様 を見直したため、ソースコード検査パッケージが独自の情報を .met.csv フ ァイルに出力できるようになります。 * 名無しの構造体/共用体メンバを正しく解釈できない不具合を修正 下記の様に union メンバとして名前の無い struct メンバを持つようなコ ードで、型や変数の情報として名無しメンバが欠損してしまい、正しく解析 できない不具合を修正しました。 union { struct { unsigned int i1:1; unsigned int i2:1; }; struct { unsigned int j1:1; unsigned int j2:1; }; } foo; 是非アップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2014-02-17 06:05:51
|
矢野尾です。 本日、AdLint 3.2.10 をリリースいたしました。 今回のリリースでは、Microsoft Visual C++ 2010 を C コンパイラとして 使用するプロジェクトを解析できるよう、i686-mswin-msvc_100 ビルド環境を 追加しました。 設定ファイルのテンプレートを生成する時に、 > adlintize -e i686-mswin-msvc_100 ... のように -e オプションを指定することで、Visual C++ 2010 を想定した内容 の adlint_traits.yml と adlint_cinit.h ファイルを作成できます。 プリセットのビルド環境は、下記コマンドで調べることができます。 > adlintize -L i686-cygwin-gcc_4.3.4 i686-devkit-gcc_4.5.2 i686-linux-gcc_4.5.1 i686-mingw-gcc_4.6.1 i686-mswin-msvc_100 x86_64-centos_6.4-gcc_4.4.7 x86_64-ubuntu_12.04-gcc_4.6.3 # 今後もさまざまなビルド環境に対応していきたいと思いますので、お気軽に # リクエストいただけると助かります。 是非アップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2014-02-07 07:39:00
|
矢野尾です。 本日、AdLint 3.2.8 をリリースいたしました。 今回のリリースでは、AdLint PAD <http://adlint-pad.herokuapp.com/> で 報告いただいた、プリプロセッサの不具合を修正しました。 * 関数形式マクロで 16 進整数定数のプレフィックス 0x と、仮引数の数値 本体部分を ## 演算子で連結する場合に、プレフィックスの 0x 部分を 0 と x の二つのトークンに分割してしまう不具合を修正 以前のバージョンでは、下記のようなコードで構文解析エラーとなってい ました。 #define HEX(inHex) (0x##inHex) int main(void) { unsigned long aVarUL; aVarUL = HEX(12345678); /* 0 x12345678 に展開してしまう */ return 0; } 是非アップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> |
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...> |
From: satake k. <sat...@se...> - 2013-10-15 04:55:20
|
さたけです。 ちょうど、状況をご連絡しようと 内容をまとめていたところでした。 結果から申しますと、 adlint_cinit.hの編集内容を見直すことで、 うまく解析できるようになりました。 http://sourceforge.net/p/adlint/discussion/support_ja/thread/6df9976f/ の記述を参考にして、以下を実施していたのですが、 をやめて、のみにすることで、うまくいくようになりました。 gcc -v -E -dM の出力結果で、adlint_cinit.hを書き換える gcc コマンドが抱え込んでいる内部関数/マクロを追記する 現在のadlint_cinit.hの内容です。 # cat adlint_cinit.h #define __const const #define __restrict restrict #define __inline inline #define __builtin_va_list void * #define __builtin_va_start(a, b) (0) #define __builtin_va_end(a) (0) #define __builtin_va_arg(ar, t) (0) #define __builtin_va_copy(d, s) (0) #define __builtin_offsetof(type, member) (0) #define __alignof__(type) (0) また、なにかありましたらよろしくお願いします。 以上です。 (2013/10/15 13:16), Yutaka Yanoh wrote: > 矢野尾です。 > > 返信が遅れまして申し訳ありません。 > > こちらで現象を再現できていないので、対象ソース、各種設定ファイル一式を > ya...@us... > 宛に送信いただけますか? > > 今、手元に CentOS 5.9 環境が無いので少し時間がかかるかもしれませんが、 > 是非調査させてください。 > > 以上、よろしくお願いいたします。 > > -- > 矢野尾 裕 <ya...@us...> > >> さたけです。 >> >> アドバイスありがとうございます。 >> >> adlint_traits.ymlのfile_search_paths:の編集などを >> 実施しましたが、結果は同じでした。 >> 引き続きアドバイスいただけますでしょうか。 >> >> また、対象ソースやadlint_traits.ymlなどを >> 添付させていただいてよろしいでしょうか? >> サイズは、tar.gzにして、10Kバイト程度です。 >> >> [環境、対処内容など] >> ・環境は、CentOS5.9です。 >> ・ダミーのstdio.hなどは配置していません。 >> ・gcc -H xx.cの出力結果(本メール下部に記載)から、 >> >> file_search_paths: >> - "/usr/include" >> - "/usr/lib/gcc/i386-redhat-linux/4.1.2/include" >> >> としました。 >> >> ・gcc -v -E -dM 1.c 1>1.h 2>1.log >> cp 1.h adlint_cinit.h >> を実行し、adlint_cinit.h を書き換えました。 >> >> [結果] >> $ make verbose-all >> adlint -t adlint_traits.yml -o . -p 1 -v ./1.c >> ./1.c [prs] |========== | >> 0.349s! >> An error was occurred while processing `./1.c'. >> See `1.c.msg.csv' and `1.c.log' for more details. >> 1.900s user, 0.050s system, 00:00:01.95 total >> make: *** [adlint_verbose-all] エラー 4 >> >> $ cat 1.c.msg.csv >> V,3.0.10,2013-10-11 08:11:32 +0900,/home/adlinttest/tmp/adlint/FILE2 >> E,./1.c,3,8,core,E0008,ERR,X99,トークン `FILE *' で構文エラーを検知しま >> した。 >> X,./1.c,3,8,core,X0003,ERR,X99,回復不能なエラーにより解析処理を中断しま >> した。詳 細は `1.c.msg.csv' 及び `1.c.log' を確認して下さい。 >> >> $ cat 1.log >> Using built-in specs. >> Target: i386-redhat-linux >> コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man >> --infodir=/usr/share/info --enable-shared --enable-threads=posix >> --enable-checking=release --with-system-zlib --enable-__cxa_atexit >> --disable-libunwind-exceptions --enable-libgcj-multifile >> --enable-languages=c,c++,objc,obj-c++,java,fortran,ada >> --enable-java-awt=gtk --disable-dssi --disable-plugin >> --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre >> --with-cpu=generic --host=i386-redhat-linux >> スレッドモデル: posix >> gcc バージョン 4.1.2 20080704 (Red Hat 4.1.2-54) >> /usr/libexec/gcc/i386-redhat-linux/4.1.2/cc1 -E -quiet -v 1.c >> -mtune=generic -dM >> 存在しないディレクトリ >> "/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/include" >> を無視します >> #include "..." の探索はここから始まります: >> #include <...> の探索はここから始まります: >> /usr/local/include >> /usr/lib/gcc/i386-redhat-linux/4.1.2/include >> /usr/include >> 探索リストの終わり >> >> [補足情報] >> gcc -H 1.c >> . /usr/include/stdio.h >> .. /usr/include/features.h >> ... /usr/include/sys/cdefs.h >> .... /usr/include/bits/wordsize.h >> ... /usr/include/gnu/stubs.h >> .... /usr/include/bits/wordsize.h >> .... /usr/include/gnu/stubs-32.h >> .. /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h >> .. /usr/include/bits/types.h >> ... /usr/include/bits/wordsize.h >> ... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h >> ... /usr/include/bits/typesizes.h >> .. /usr/include/libio.h >> ... /usr/include/_G_config.h >> .... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h >> .... /usr/include/wchar.h >> ..... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h >> ..... /usr/include/bits/wchar.h >> .... /usr/include/gconv.h >> ..... /usr/include/wchar.h >> ...... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h >> ..... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h >> ... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stdarg.h >> .. /usr/include/bits/stdio_lim.h >> .. /usr/include/bits/sys_errlist.h >> >> 以上です。 > > > ------------------------------------------------------------------------------ > October Webinars: Code for Performance > Free Intel webinars can help you accelerate application performance. > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from > the latest Intel processors and coprocessors. See abstracts and register > > http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk > _______________________________________________ > adlint-user-ja mailing list > adl...@li... > https://lists.sourceforge.net/lists/listinfo/adlint-user-ja > > -- 佐武 和久 sat...@se... 06-4803-5971 / 8-914-22-3127 |
From: Yutaka Y. <ya...@us...> - 2013-10-15 04:17:00
|
矢野尾です。 返信が遅れまして申し訳ありません。 こちらで現象を再現できていないので、対象ソース、各種設定ファイル一式を ya...@us... 宛に送信いただけますか? 今、手元に CentOS 5.9 環境が無いので少し時間がかかるかもしれませんが、 是非調査させてください。 以上、よろしくお願いいたします。 -- 矢野尾 裕 <ya...@us...> > さたけです。 > > アドバイスありがとうございます。 > > adlint_traits.ymlのfile_search_paths:の編集などを > 実施しましたが、結果は同じでした。 > 引き続きアドバイスいただけますでしょうか。 > > また、対象ソースやadlint_traits.ymlなどを > 添付させていただいてよろしいでしょうか? > サイズは、tar.gzにして、10Kバイト程度です。 > > [環境、対処内容など] > ・環境は、CentOS5.9です。 > ・ダミーのstdio.hなどは配置していません。 > ・gcc -H xx.cの出力結果(本メール下部に記載)から、 > > file_search_paths: > - "/usr/include" > - "/usr/lib/gcc/i386-redhat-linux/4.1.2/include" > > としました。 > > ・gcc -v -E -dM 1.c 1>1.h 2>1.log > cp 1.h adlint_cinit.h > を実行し、adlint_cinit.h を書き換えました。 > > [結果] > $ make verbose-all > adlint -t adlint_traits.yml -o . -p 1 -v ./1.c > ./1.c [prs] |========== | > 0.349s! > An error was occurred while processing `./1.c'. > See `1.c.msg.csv' and `1.c.log' for more details. > 1.900s user, 0.050s system, 00:00:01.95 total > make: *** [adlint_verbose-all] エラー 4 > > $ cat 1.c.msg.csv > V,3.0.10,2013-10-11 08:11:32 +0900,/home/adlinttest/tmp/adlint/FILE2 > E,./1.c,3,8,core,E0008,ERR,X99,トークン `FILE *' で構文エラーを検知しま > した。 > X,./1.c,3,8,core,X0003,ERR,X99,回復不能なエラーにより解析処理を中断しま > した。詳 細は `1.c.msg.csv' 及び `1.c.log' を確認して下さい。 > > $ cat 1.log > Using built-in specs. > Target: i386-redhat-linux > コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man > --infodir=/usr/share/info --enable-shared --enable-threads=posix > --enable-checking=release --with-system-zlib --enable-__cxa_atexit > --disable-libunwind-exceptions --enable-libgcj-multifile > --enable-languages=c,c++,objc,obj-c++,java,fortran,ada > --enable-java-awt=gtk --disable-dssi --disable-plugin > --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre > --with-cpu=generic --host=i386-redhat-linux > スレッドモデル: posix > gcc バージョン 4.1.2 20080704 (Red Hat 4.1.2-54) > /usr/libexec/gcc/i386-redhat-linux/4.1.2/cc1 -E -quiet -v 1.c > -mtune=generic -dM > 存在しないディレクトリ > "/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/include" > を無視します > #include "..." の探索はここから始まります: > #include <...> の探索はここから始まります: > /usr/local/include > /usr/lib/gcc/i386-redhat-linux/4.1.2/include > /usr/include > 探索リストの終わり > > [補足情報] > gcc -H 1.c > . /usr/include/stdio.h > .. /usr/include/features.h > ... /usr/include/sys/cdefs.h > .... /usr/include/bits/wordsize.h > ... /usr/include/gnu/stubs.h > .... /usr/include/bits/wordsize.h > .... /usr/include/gnu/stubs-32.h > .. /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h > .. /usr/include/bits/types.h > ... /usr/include/bits/wordsize.h > ... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h > ... /usr/include/bits/typesizes.h > .. /usr/include/libio.h > ... /usr/include/_G_config.h > .... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h > .... /usr/include/wchar.h > ..... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h > ..... /usr/include/bits/wchar.h > .... /usr/include/gconv.h > ..... /usr/include/wchar.h > ...... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h > ..... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h > ... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stdarg.h > .. /usr/include/bits/stdio_lim.h > .. /usr/include/bits/sys_errlist.h > > 以上です。 |
From: satake k. <sat...@se...> - 2013-10-10 23:36:56
|
さたけです。 アドバイスありがとうございます。 adlint_traits.ymlのfile_search_paths:の編集などを 実施しましたが、結果は同じでした。 引き続きアドバイスいただけますでしょうか。 また、対象ソースやadlint_traits.ymlなどを 添付させていただいてよろしいでしょうか? サイズは、tar.gzにして、10Kバイト程度です。 [環境、対処内容など] ・環境は、CentOS5.9です。 ・ダミーのstdio.hなどは配置していません。 ・gcc -H xx.cの出力結果(本メール下部に記載)から、 file_search_paths: - "/usr/include" - "/usr/lib/gcc/i386-redhat-linux/4.1.2/include" としました。 ・gcc -v -E -dM 1.c 1>1.h 2>1.log cp 1.h adlint_cinit.h を実行し、adlint_cinit.h を書き換えました。 [結果] $ make verbose-all adlint -t adlint_traits.yml -o . -p 1 -v ./1.c ./1.c [prs] |========== | 0.349s! An error was occurred while processing `./1.c'. See `1.c.msg.csv' and `1.c.log' for more details. 1.900s user, 0.050s system, 00:00:01.95 total make: *** [adlint_verbose-all] エラー 4 $ cat 1.c.msg.csv V,3.0.10,2013-10-11 08:11:32 +0900,/home/adlinttest/tmp/adlint/FILE2 E,./1.c,3,8,core,E0008,ERR,X99,トークン `FILE *' で構文エラーを検知しま した。 X,./1.c,3,8,core,X0003,ERR,X99,回復不能なエラーにより解析処理を中断しま した。詳 細は `1.c.msg.csv' 及び `1.c.log' を確認して下さい。 $ cat 1.log Using built-in specs. Target: i386-redhat-linux コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux スレッドモデル: posix gcc バージョン 4.1.2 20080704 (Red Hat 4.1.2-54) /usr/libexec/gcc/i386-redhat-linux/4.1.2/cc1 -E -quiet -v 1.c -mtune=generic -dM 存在しないディレクトリ "/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/include" を無視します #include "..." の探索はここから始まります: #include <...> の探索はここから始まります: /usr/local/include /usr/lib/gcc/i386-redhat-linux/4.1.2/include /usr/include 探索リストの終わり [補足情報] gcc -H 1.c . /usr/include/stdio.h .. /usr/include/features.h ... /usr/include/sys/cdefs.h .... /usr/include/bits/wordsize.h ... /usr/include/gnu/stubs.h .... /usr/include/bits/wordsize.h .... /usr/include/gnu/stubs-32.h .. /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h .. /usr/include/bits/types.h ... /usr/include/bits/wordsize.h ... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h ... /usr/include/bits/typesizes.h .. /usr/include/libio.h ... /usr/include/_G_config.h .... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h .... /usr/include/wchar.h ..... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h ..... /usr/include/bits/wchar.h .... /usr/include/gconv.h ..... /usr/include/wchar.h ...... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h ..... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stddef.h ... /usr/lib/gcc/i386-redhat-linux/4.1.2/include/stdarg.h .. /usr/include/bits/stdio_lim.h .. /usr/include/bits/sys_errlist.h 以上です。 (2013/10/10 18:50), Yutaka Yanoh wrote: > 矢野尾です。 > > お問い合わせありがとうございます。 > > 現象からしますと、おそらく、正しい 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' を確認して下さい。 >> >> 以上です。 > > > ------------------------------------------------------------------------------ > October Webinars: Code for Performance > Free Intel webinars can help you accelerate application performance. > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from > the latest Intel processors and coprocessors. See abstracts and register > > http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk > _______________________________________________ > adlint-user-ja mailing list > adl...@li... > https://lists.sourceforge.net/lists/listinfo/adlint-user-ja > > |
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' を確認して下さい。 > > 以上です。 |
From: satake k. <sat...@se...> - 2013-10-10 08:49:07
|
さたけと申します。 お世話になります。 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' を確認して下さい。 以上です。 |
From: Yutaka Y. <ya...@us...> - 2013-08-28 04:39:25
|
矢野尾です。 本日、AdLint 3.2.0 をリリースいたしました。 今回のリリースでは、新しく「コンテキストトレース機能」を追加しました。 ご報告いただいている不具合の対応は、次回のリリースに盛り込む予定です。 以前のバージョンでは、ゼロ除算などのランタイムエラーの可能性を指摘する 警告は、「ここでゼロ除算の可能性があります」という結論の部分しか出力し ていませんでした。 コンテキストトレース機能により、現状通りの警告メッセージに続いて、どの ような文脈で指摘した状況が起こり得るかを、コンテキストメッセージによっ て補足できるようになりました。 下記は、コンテキストメッセージの出力例です。 1: int foo(int i) 2: { 3: int j = 0; 4: 5: if (i < 0) { 6: j = -i; 7: } 8: else if (i > 0) { 9: j = i; 10: } 11: 12: return 5 / j; /* W0093 ゼロ除算するかも */ 13: } a.c:12:14:warning:W0093:ゼロになることがある値で除算しています。 :::context:C1000:次の実行パスで警告を検知しました。 a.c:3:9:context:C1006:ここで該当変数に値を割り当てました。 a.c:5:11:context:C1002:この制御式を偽として評価しました。 a.c:8:16:context:C1002:この制御式を偽として評価しました。 コンテキストトレース機能は、まだ実験的な機能という位置づけですが、是非 ご利用いただいて、問題がありましたらご報告いただけると助かります。 以上、今後ともよろしくお願いいたします。 -- 矢野尾 裕 <ya...@us...> |
From: <tos...@hi...> - 2013-08-08 01:06:56
|
矢野尾様 お世話になります。西田です。 お返事ありがとうございます。 AdLintの仕様としては解析可能とのこと、拝承です。 >AdLint は、C 言語プログラム中の変数それぞれについて、データフロー解析の >ための多くの付加情報を確保するため、どうしてもメモリを多く必要とします。 これは解析ツールの性でしょうね。 様々な情報の確保とのトレードオフですね。 今後もAdLintを活用していきたいと思っておりますので、 対応版のリリースをお待ちしております。 ご回答ありがとうございました。 --- 西田 >送信者: ya...@us... >主題: [!][adlint-user-ja:80] Re: 多次元配列における解析エラーについて >受信日: 13/08/08 09:09 >属性: なし > >矢野尾です。 > >ご報告ありがとうございます。 > >> 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。 >> 宜しくお願いいたします。 > >AdLint の仕様といたしましては、ご提示いただいたコードをそのまま解析可能 >です。したがって、本件は AdLint の不具合です。 > >おそらく、AdLint 内部の抽象インタプリタで TestStructure 配列をそのまま確 >保しようとしてメモリを使い果たしているようです。 > >AdLint は、C 言語プログラム中の変数それぞれについて、データフロー解析の >ための多くの付加情報を確保するため、どうしてもメモリを多く必要とします。 > >本質的な解決には、変数ひとつに対応する情報量を減らすことが必要ですが、ま >ずは TestStructure のような大きな変数については、要素数に上限を設けるこ >とで対応しようと思います。 > >現在、次のリリースのための追加機能を実装中でして、対応まで少々お時間をく >ださい。 > >以上 > >-- >矢野尾 裕 <ya...@us...> > > >(2013年08月06日 17:45), tos...@hi... wrote: >> >> はじめまして。 >> 西田と申します。 >> >> 最近、AdLintを使い始めたのですが、 >> 下記のように、比較的大きい多次元配列の定義を含むコードの解析にて、 >> 「failed to allocate memory」が発生し、解析が61%で終了してしまいます。 >> >> (Sample Code) >> -------------------------------------------- >> unsigned char TestStructure[200][200][200]; >> >> int main(int argc, char *argv[]) >> { >> return 0; >> } >> -------------------------------------------- >> >> 解析中、topコマンドでメモリ使用率を確認すると、 >> 明らかに上昇していく様子が見られ、100%に達すると上記エラーが出ます。 >> (なお、検討PCの搭載メモリは2GBです) >> >> 検討環境は以下の通りです。 >> >> OS : Ubuntu 10.10 >> AdLint Version : 3.0.10 (2013-06-28) >> Ruby Version : ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux] >> >> 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。 >> 宜しくお願いいたします。 > >------------------------------------------------------------------------------ >Get 100% visibility into Java/.NET code with AppDynamics Lite! >It's a free troubleshooting tool designed for production. >Get down to code-level detail for bottlenecks, with <2% overhead. >Download for free and get started troubleshooting in minutes. >http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >_______________________________________________ >adlint-user-ja mailing list >adl...@li... >https://lists.sourceforge.net/lists/listinfo/adlint-user-ja > |
From: Yutaka Y. <ya...@us...> - 2013-08-08 00:09:15
|
矢野尾です。 ご報告ありがとうございます。 > 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。 > 宜しくお願いいたします。 AdLint の仕様といたしましては、ご提示いただいたコードをそのまま解析可能 です。したがって、本件は AdLint の不具合です。 おそらく、AdLint 内部の抽象インタプリタで TestStructure 配列をそのまま確 保しようとしてメモリを使い果たしているようです。 AdLint は、C 言語プログラム中の変数それぞれについて、データフロー解析の ための多くの付加情報を確保するため、どうしてもメモリを多く必要とします。 本質的な解決には、変数ひとつに対応する情報量を減らすことが必要ですが、ま ずは TestStructure のような大きな変数については、要素数に上限を設けるこ とで対応しようと思います。 現在、次のリリースのための追加機能を実装中でして、対応まで少々お時間をく ださい。 以上 -- 矢野尾 裕 <ya...@us...> (2013年08月06日 17:45), tos...@hi... wrote: > > はじめまして。 > 西田と申します。 > > 最近、AdLintを使い始めたのですが、 > 下記のように、比較的大きい多次元配列の定義を含むコードの解析にて、 > 「failed to allocate memory」が発生し、解析が61%で終了してしまいます。 > > (Sample Code) > -------------------------------------------- > unsigned char TestStructure[200][200][200]; > > int main(int argc, char *argv[]) > { > return 0; > } > -------------------------------------------- > > 解析中、topコマンドでメモリ使用率を確認すると、 > 明らかに上昇していく様子が見られ、100%に達すると上記エラーが出ます。 > (なお、検討PCの搭載メモリは2GBです) > > 検討環境は以下の通りです。 > > OS : Ubuntu 10.10 > AdLint Version : 3.0.10 (2013-06-28) > Ruby Version : ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux] > > 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。 > 宜しくお願いいたします。 |
From: <tos...@hi...> - 2013-08-06 09:00:13
|
はじめまして。 西田と申します。 最近、AdLintを使い始めたのですが、 下記のように、比較的大きい多次元配列の定義を含むコードの解析にて、 「failed to allocate memory」が発生し、解析が61%で終了してしまいます。 (Sample Code) -------------------------------------------- unsigned char TestStructure[200][200][200]; int main(int argc, char *argv[]) { return 0; } -------------------------------------------- 解析中、topコマンドでメモリ使用率を確認すると、 明らかに上昇していく様子が見られ、100%に達すると上記エラーが出ます。 (なお、検討PCの搭載メモリは2GBです) 検討環境は以下の通りです。 OS : Ubuntu 10.10 AdLint Version : 3.0.10 (2013-06-28) Ruby Version : ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux] 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。 宜しくお願いいたします。 |
From: Yutaka Y. <ya...@us...> - 2013-07-13 02:43:25
|
矢野尾です。 ご指摘ありがとうございます。 > 警告 > (.*?):(.*?):(.*?):warning:(.*?):(.*?):(.*?):(.*?):(.*) たしかに、メッセージ本文を切り出す正規表現が * だけになっていました。 > W0059 みたいなのは、行が出力されないので対応が必要かもしれません。 > (.*?)::warning:(.*?):(.*?):(.*?):(.*?):(.*) あ、、そうですね。 実はこれ、私としましてはバグだと認識しています。 行や桁が一意に決まらない場合でも、メッセージのカラム数は常に一定であるべ きです。 TODO として積んではあるのですが、対応が後回しになってしまっています。 申し訳ありません。 -- 矢野尾 裕 <ya...@us...> |
From: <yoh...@nt...> - 2013-07-11 11:05:26
|
伊藤です。 > 早速、下記 URL に Eclipse 連携方法のドキュメントを作成しました。 > http://adlint.sourceforge.net/pmwiki/pmwiki.php?n=Main.EclipseIntegration 早速、設定してみました。 当方intro_demo プロジェクトは使わずに、実プロジェクトに適用しました。 「AdLint 用エラーパーサの追加」を適用すれば、シングルモジュール解析の実行 でエラータグジャンプできました。ありがとうございます。 ちょっと気になったところは、Pattern 部分の正規表現です。 以下だと思います。 警告 (.*?):(.*?):(.*?):warning:(.*?):(.*?):(.*?):(.*?):(.*) W0059 みたいなのは、行が出力されないので対応が必要かもしれません。 (.*?)::warning:(.*?):(.*?):(.*?):(.*?):(.*) 情報 (.*?):(.*?):(.*?):context:(.*?):(.*?):(.*?):(.*?):(.*) エラー (.*?):(.*?):(.*?):error:(.*?):(.*?):(.*?):(.*?):(.*) よろしくお願いします。 --- 伊藤 洋一 <yoh...@nt...> 株式会社リコー 研究開発本部 デバイスモジュール技術開発センター 製品開発室 映像モジュール開発グループ |