adlint-user-ja Mailing List for AdLint (Page 2)
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: Yutaka Y. <ya...@us...> - 2013-07-09 07:15:14
|
矢野尾です。 お問い合わせありがとうございます。 早速、下記 URL に Eclipse 連携方法のドキュメントを作成しました。 http://adlint.sourceforge.net/pmwiki/pmwiki.php?n=Main.EclipseIntegration 是非ご活用ください。 -- 矢野尾 裕 <ya...@us...> |
From: <yoh...@nt...> - 2013-07-04 07:21:40
|
伊藤です。 お世話になっております。 スクリーンショットにある Eclipse との連携を行いたいのですが、 何処かに設定ガイドがまとまっていますでしょうか? 色々と探したのですが、見つけられていません。 こちらのスレッドは見つけました。 http://sourceforge.net/p/adlint/discussion/support_en/thread/1030693b/?limit=50 よろしくお願いします。 --- 伊藤 洋一 <yoh...@nt...> 株式会社リコー 研究開発本部 デバイスモジュール技術開発センター 製品開発室 映像モジュール開発グループ |
From: Yutaka Y. <ya...@us...> - 2013-06-28 02:49:55
|
矢野尾です。 本日リリースした AdLint 3.0.10 に、本件の対応を盛り込みました。 是非、AdLint 3.0.10 にアップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2013-06-28 02:48:17
|
矢野尾です。 本日リリースした AdLint 3.0.10 に、本件の対応を盛り込みました。 是非、AdLint 3.0.10 にアップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> > お世話になります。 > > 松村と申します。 > 初めての投稿になります。 > > AdLint 3.0.4 で、次のようなソースの場合、エラーが出て、途中終了します。 > > main.c: > #ifdef FOOFOO > void foo1(void); > #endif > > void foo2(void); > > /**/\ > #define FOO 1 > > main.c.msg.csv: > E,./c/main.c,5,16,core,E0008,ERR,X99,トークン `; #' で構文エラーを検知しまし > た。 > X,./c/main.c,5,16,core,X0003,ERR,X99,回復不能なエラーにより解析処理を中断し > ました。詳細は > `c/main.c.msg.csv' 及び `c/main.c.log' を確認して下さい。 > > 原因は、/**/の後に、\があるために起こるようです。 > さらに、/**/\より前に、#ifdef文等がある場合、main.msg.csvファイルが示すエラー > 行が、上記のように、問題のある行になりません。 > > 弊社のソースに残ったゴミによる問題で、レアなケースではありますが、報告します。 > > よろしくお願い致します。 > > -- > ////////////////////////////////////////////////////////////////////////////////////////// > > 株式会社ノーリツ 研究開発本部 > エレクトロニクス開発部応用技術開発室第2G > 松村 悟 |
From: Yutaka Y. <ya...@us...> - 2013-06-28 02:46:55
|
矢野尾です。 本日、AdLint 3.0.10 をリリースいたしました。 今回のリリースでは、みなさまからご報告いただいていた不具合の修正と、開 発チーム内でのテストにより発見した問題への対策を盛り込みました。 ■ AdLint 3.0.8 からの変更点 * ブロックコメントの直後に改行をエスケープするための \ がある場合に、 プリプロセス結果が不正となる不具合を修正 松村さまから [adlint-user-ja:64] にてご報告いただいた件です。 * 以前に定義された typedef と同名の列挙子を定義する場合に構文解析エラ ーとなる不具合を修正 伊藤さまから [adlint-user-ja:66] にてご報告いただいた件です。 * グローバルな const 変数の初期値を保持するようインタプリタを修正 静的解析の性質上、関数群の呼び出し順序について仮定できないため、グロ ーバル変数は任意のタイミングで更新され得るとし、グローバル変数値は常 にその型が表現できる任意の値として解析していました。 しかし、const 変数についてはこのような考慮は不要なので、変数定義時の 初期値を保持するようにしました。 * 値が明確ではないポインタは曖昧なデリファレンスを実行しないよう仕様変 更 ポインタ変数の値が複数の値を取り得るような状況で、そのポインタをデリ ファレンスする場合、いままでは一つでも正常にデリファレンスできるもの があれば、そのオブジェクトを式の値として評価していました。 しかし、この方針は静的解析の解析精度を向上させるより、誤検知の可能性 を増やすことが多いと分かったため、積極的にデリファレンスしないように 変更しました。 * 添え字値が明確ではない配列添え字式評価の精度を向上 明確でないポインタのデリファレンスと同様に、添え字が複数の値を取り得 る配列添え字式の評価も方針を変更し、解析精度を向上しました。 * 繰り返し文の制御式推論に失敗し、制御式が存在しないとして解析してしま う不具合を修正 繰り返し文の本体中に制御を中断するための条件が無い場合、通常の条件式 が指定されているにもかかわらず、繰り返しの終了条件が無いと判断してし まうことがありました。 * do 文制御式の評価タイミングが早すぎたため、繰り返し本体を評価しない 場合がある不具合を修正 do 文の本体は常に一度は実行されるべきところを、制御式の評価タイミン グがおかしかったため、一度も制御が届かないと判断してしまうことがあり ました。 * break 文による繰り返しの中断時に、以降に不要となる変数値の定義域を間 引けない不具合を修正 例えば下記のようなコードで、W0422「NULL かもしれないポインタをデリフ ァレンス」コードチェックが false-positive になっていました。 void foo(int *a[]) { int i; for (i = 0; i < 3; i++) { if (a[i] == NULL) { break; } bar(*a[i]); /* この地点では a[i] != NULL なのに W0422 警告 を出力してしまっていた */ } } * 配列型や複合データ型変数の子変数への副作用を、親変数へ伝搬しない不具 合を修正 例えば下記のように for 文により配列要素を初期化するコードで、 W0462「値が未設定かもしれない変数へのポインタを使用」コードチェック が false-positive になっていました。 extern void bar(const int *); void baz(void) { int a[3]; for (int i = 0; i < 3; i++) { a[i] = i; } bar(a); /* 配列 a は初期化されているのに W0462 警告を出力して しまっていた */ } 以上、今後ともよろしくお願いいたします。 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2013-05-31 05:08:38
|
矢野尾です。 本日リリースした AdLint 3.0.8 に、本件の対応を盛り込みました。 是非、AdLint 3.0.8 にアップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> > 矢野尾です。 > > ご報告ありがとうございます。 > > 申し訳ありません。AdLint のプリプロセッサの不具合でした。 > > プリプロセスのための字句解析で、関数形式マクロの実引数部分を細かく字句 > に分解しすぎていました。 > そのため、実引数 "1id" を "1" "id" の二つの字句としてマクロ置換を進め > てしまい、## オペレータの評価時に "JOBID_" と先頭の "1" のみを連結し、 > 残りの "id" が浮いてしまいました。 > > 対策を次のリリースに盛り込みますので、少々お待ちください。 > > -- > 矢野尾 裕 <ya...@us...> > > >> >> 伊藤です。 >> お世話になっております。 >> >> AdLint 3.0.4 で以下の事象が発生しました。 >> >> トークン連結演算子 '##' にて、連結文字列の先頭が数字だと連結がおかしい。 >> >> adlint_test1.h: >> typedef enum tag_JobID { >> #define DEFINE_JOB(id, func) JOBID_##id, >> #include "adlint_test1.h" >> #undef DEFINE_JOB >> } EJobID; >> >> adlint_test1.c: >> DEFINE_JOB( 1id, func1 ) >> >> adlint_test1.c.msg.csv: >> E,../adlint_test/adlint_test1.h,1,1,core,E0008,ERR,X99,トークン `JOBID_1 >> id' で構文エラーを検知しました。 >> >> adlint_test1.i: >> # 1 "../adlint_test/adlint_test1.c" >> typedef enum tag_JobID { >> # 1 "../adlint_test/adlint_test1.h" >> JOBID_1 id, >> # 5 "../adlint_test/adlint_test1.c" >> } EJobID; >> >> 数字'1'と'id'の間にスペースが入ってしまいます。 >> >> よろしくお願いします。 >> >> --- >> 伊藤 洋一 <yoh...@nt...> >> >> 株式会社リコー >> 研究開発本部 デバイスモジュール技術開発センター >> 製品開発室 映像モジュール開発グループ |
From: Yutaka Y. <ya...@us...> - 2013-05-31 05:05:47
|
矢野尾です。 本日リリースした AdLint 3.0.8 に、本件の対応を盛り込みました。 是非、AdLint 3.0.8 にアップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> > 矢野尾です。 > > ご報告ありがとうございます。現象が再現することを確認しました。 > > 申し訳ありません。こちらも AdLint のプリプロセッサの不具合でした。 > > ご提示いただいたサンプルコードで、RUBY_EXTCONF_H マクロが未定義の場合 > に、ご指摘の通りプリプロセッサが無限ループしていました。 > > RUBY_EXTCONF_H マクロが未定義な場合、正しい #include ディレクティブと > はならないので、エラーメッセージを出力して解析を終了する方針で対策しま > す。 > > こちらも次のリリースに盛り込みますので、少々お待ちください。 > > -- > 矢野尾 裕 <ya...@us...> > > >> お世話になります。張と申します。 >> >> Headerファイルに以下の条件を全て満たした場合、 >> 解析が無限ループに陥る(72時間以上進捗なし)ケースを見つかりました。 >> >> 1、インクルードガードが#ifndef ではなく、#if !defineを利用する。 >> 2、#include の後ろにファイル名ではなく、マクロであること。 >> >> 以下コード例 >> ---------- >> // ossl.h >> #if !defined _OSSL_H_ >> //#ifndef _OSSL_H_ >> #define _OSSL_H_ >> >> #include RUBY_EXTCONF_H >> >> #endif /* _OSSL_H_ */ >> >> ---------- >> // ossl.c >> >> #include "ossl.h" >> >> int >> main(int argc, char *argv[]) >> { >> return 0; >> } >> ------------- >> >> ご参考までに。 >> よろしくお願いします。 >> 張 小東 |
From: Yutaka Y. <ya...@us...> - 2013-05-31 05:04:39
|
矢野尾です。 本日リリースした AdLint 3.0.8 に、本件の対応を盛り込みました。 是非、AdLint 3.0.8 にアップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> > 矢野尾です。 > > 先ほどのメールで、誤りがありましたので訂正させてください。 > >> しかし、ご報告いただいた /*/*/ の処理で 2-3 文字目の /* で入れ子のコメ >> ントが開始したと判断して、コメントの終了を見落としていました。 > > 3-4 文字目の /* でした。。。慌ててました。。 > > -- > 矢野尾 裕 <ya...@us...> > > >> 矢野尾です。 >> >> ご報告ありがとうございます。 >> >> 申し訳ありません。AdLint のプリプロセッサの不具合でした。 >> >> 現状、/* ... /* ... */ ... */ のように、コメントを入れ子にした場合に警 >> 告できるようにプリプロセッサを実装しています。 >> >> しかし、ご報告いただいた /*/*/ の処理で 2-3 文字目の /* で入れ子のコメ >> ントが開始したと判断して、コメントの終了を見落としていました。 >> >> 対策を次のリリースに盛り込みますので、少々お待ちください。 >> >> -- >> 矢野尾 裕 <ya...@us...> >> >> >>> お世話になります。張と申します。 >>> >>> 下記のソースはgccでコンパイル通りますが、adlintで解析失敗になります。 >>> >>> main() >>> { >>> /*/*/ >>> } >>> >>> ご参考までに。 >>> よろしくお願いします。 >>> 張 小東 |
From: Yutaka Y. <ya...@us...> - 2013-05-31 05:03:05
|
矢野尾です。 本日、AdLint 3.0.8 をリリースいたしました。 今回のリリースでは、みなさまからご報告いただいた不具合を修正しました。 ご報告ありがとうございます!大変助かります! ■ AdLint 3.0.4 からの変更点 * ブロックコメントが翻訳単位内で終端しない場合に異常終了する不具合を修正 張さまから [adlint-user-ja:57] にてご報告いただいた件です。 * /*/*/ のようなブロックコメントで、コメントの終端を見落とす不具合を修正 この修正も [adlint-user-ja:57] の件です。 * #include ディレクティブにヘッダ名をマクロで指定し、かつ、そのマクロが 未定義の場合にプリプロセスが終了しない不具合を修正 張さまから [adlint-user-ja:58] にてご報告いただいた件です。 * 関数ポインタなど address-constant を導出する式を定数式として扱うよう式 の定数性判定を修正 清水さまから直接ご報告いただいた件です。 関数テーブル定義の初期値として関数名を記述した場合に、初期化子に非定数 式が指定されたと警告してしまう問題を解消しました。 * 変数定義時の初期値として、定義しようとする変数を指定した sizeof 式が現 れると、変数を正しく定義できない不具合を修正 struct foo *p = (struct foo *) malloc(sizeof *p); というように、定義しようとしている変数を、初期化子の中で参照すると、初 期化子の評価中に同名の関数を暗黙的に宣言してしまい、変数が正しく定義で きていませんでした。 * W0642 register 配列のアドレスを取得 コードチェックで、register 指定で 宣言された配列を含むすべてのオブジェクトについて、そのアドレスを導出し た場合に警告するよう仕様変更 W0642 コードチェックは配列のみに限定した仕様でしたが、register 指定で 宣言された通常の変数などもアドレスを取得することは危険なので、仕様変更 しました。 * 名前の無いビットフィールドを宣言した場合に構文解析エラーとなる不具合を 修正 伊藤さまから直接ご報告いただいた件です。 下記のようなパディングのための名無しのビットフィールドを構文解析できな い問題を解消しました。 typedef unsigned int base_t; static struct { base_t :1; /* ここで構文解析エラーとなっていました */ base_t foo:1; base_t :1; base_t bar:1; } bf; * W0786 ビットフィールドの基底型が int ではない コードチェックで、基底型 に int の typedef 型を指定すると、警告を出力する不具合を修正 上記コードのように int ファミリの typedef 型をビットフィールドに指定す ると、W0786 警告を出力してしまう問題を解消しました。 * グローバルな関数テーブルを関数指定で定義した場合に、W0628 関数が未使用 警告を出力してしまう不具合を修正 清水さまから直接ご報告いただいた件です。 下記のように関数をグローバルな関数テーブルに登録しているのに、プロジェ クトで関数が未使用として警告してしまう問題を解消しました。 int foo(void) { return 1; } /* 未使用と警告してしまう */ int bar(void) { return 2; } /* 未使用と警告してしまう */ int (*func_tbl[])(void) = { foo, bar, NULL }; * 関数外でオブジェクトを参照した場合に、シングルモジュール解析結果のメト リクスファイルに DEP レコードとして依存関係を出力しない不具合を修正 上記のクロスモジュール解析の問題を解決するために、シングルモジュール解 析での不備も修正しました。 * 関数形式マクロ中の ## 演算子の評価方法を ISO C99 規格に準拠するよう修 正 伊藤さまから [adlint-user-ja:62] にてご報告いただいた件です。 ■ お知らせ AdLint 3.0.4 リリースから、開発用の upstream リポジトリを GitHub に移行 しました。 https://github.com/yanoh/adlint AdLint の中身にご興味を持たれましたら、ぜひ覗いてみてください。 また、GitHub ではリポジトリを fork して独自の改良を加え、それを upstream に取り込むための機能があるので、気軽に AdLint の開発にもご参加いただけま す。 以上、今後ともよろしくお願いいたします。 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2013-05-30 07:37:42
|
矢野尾です。 ご報告ありがとうございます。 申し訳ありません。AdLint の不具合でした。 先日ご報告いただいた、名無しのビットフィールドで構文解析エラーとなる件 の対応で、パーサを見直したところなのですが、現在テスト中の最新バージョ ンでも同様の現象が再現してしまいました。 通常の識別子 -> typedef 名 の変換にまだ抜けがあるようです。 ということで、明日 5/31(金) に AdLint 3.0.8 をリリースする予定ですが、 このバージョンでも本件の問題は発生してしまいます。 次のリリースまでにパーサを再度見直しますので、少々お時間をください。 # いろんなオープンソースの実プロジェクトを解析してテストしているのです # が、思いもよらない抜けがあるものですね。。。 # いつもご報告ありがとうございます。大変助かります。 -- 矢野尾 裕 <ya...@us...> > > 伊藤です。 > お世話になっております。 > > AdLint 3.0.4 で以下の事象が発生しました。 > > adlint_test1.h: > typedef double DOUBLE; > > adlint_test1.c: > include "adlint_test1.h" > > void main(void) > { > enum arg_type { > INTEGER, > DOUBLE, > STRING, > NONE > }; > enum arg_type type; > > type = DOUBLE; > } > > % adlint_chk -t adlint_traits.yml -o . -p 1 ../adlint_test/adlint_test1.c > ../adlint_test/adlint_test1.c:6:12:error:core:E0008:ERR:X99:トークン `, > DOUBLE' で構文エラーを検知しました。 > > gccは問題なくコンパイルが通ります。 > > よろしくお願いします。 > > --- > 伊藤 洋一 <yoh...@nt...> > > 株式会社リコー > 研究開発本部 デバイスモジュール技術開発センター > 製品開発室 映像モジュール開発グループ |
From: <yoh...@nt...> - 2013-05-30 04:47:10
|
伊藤です。 お世話になっております。 AdLint 3.0.4 で以下の事象が発生しました。 adlint_test1.h: typedef double DOUBLE; adlint_test1.c: include "adlint_test1.h" void main(void) { enum arg_type { INTEGER, DOUBLE, STRING, NONE }; enum arg_type type; type = DOUBLE; } % adlint_chk -t adlint_traits.yml -o . -p 1 ../adlint_test/adlint_test1.c ../adlint_test/adlint_test1.c:6:12:error:core:E0008:ERR:X99:トークン `, DOUBLE' で構文エラーを検知しました。 gccは問題なくコンパイルが通ります。 よろしくお願いします。 --- 伊藤 洋一 <yoh...@nt...> 株式会社リコー 研究開発本部 デバイスモジュール技術開発センター 製品開発室 映像モジュール開発グループ |
From: Yutaka Y. <ya...@us...> - 2013-05-23 06:59:24
|
矢野尾です。 ご報告ありがとうございます。大変助かります。 AdLint のプリプロセッサで、ディレクティブの # 記号が行頭にあるかのチェ ックが厳しすぎる不具合があるようです。 現在、不具合修正が立て込んでいるため、次回リリース以降に対応しようと思 います。 また何かありましたら、是非お気軽にご報告ください。 -- 矢野尾 裕 <ya...@us...> > お世話になります。 > > 松村と申します。 > 初めての投稿になります。 > > AdLint 3.0.4 で、次のようなソースの場合、エラーが出て、途中終了します。 > > main.c: > #ifdef FOOFOO > void foo1(void); > #endif > > void foo2(void); > > /**/\ > #define FOO 1 > > main.c.msg.csv: > E,./c/main.c,5,16,core,E0008,ERR,X99,トークン `; #' で構文エラーを検知しまし > た。 > X,./c/main.c,5,16,core,X0003,ERR,X99,回復不能なエラーにより解析処理を中断し > ました。詳細は > `c/main.c.msg.csv' 及び `c/main.c.log' を確認して下さい。 > > 原因は、/**/の後に、\があるために起こるようです。 > さらに、/**/\より前に、#ifdef文等がある場合、main.msg.csvファイルが示すエラー > 行が、上記のように、問題のある行になりません。 > > 弊社のソースに残ったゴミによる問題で、レアなケースではありますが、報告します。 > > よろしくお願い致します。 > > -- > ////////////////////////////////////////////////////////////////////////////////////////// > > 株式会社ノーリツ 研究開発本部 > エレクトロニクス開発部応用技術開発室第2G > 松村 悟 > ////////////////////////////////////////////////////////////////////////////////////////// |
From: 松村悟 <ma...@no...> - 2013-05-23 04:36:48
|
お世話になります。 松村と申します。 初めての投稿になります。 AdLint 3.0.4 で、次のようなソースの場合、エラーが出て、途中終了します。 main.c: #ifdef FOOFOO void foo1(void); #endif void foo2(void); /**/\ #define FOO 1 main.c.msg.csv: E,./c/main.c,5,16,core,E0008,ERR,X99,トークン `; #' で構文エラーを検知しました。 X,./c/main.c,5,16,core,X0003,ERR,X99,回復不能なエラーにより解析処理を中断しました。詳細は `c/main.c.msg.csv' 及び `c/main.c.log' を確認して下さい。 原因は、/**/の後に、\があるために起こるようです。 さらに、/**/\より前に、#ifdef文等がある場合、main.msg.csvファイルが示すエラー行が、上記のように、問題のある行になりません。 弊社のソースに残ったゴミによる問題で、レアなケースではありますが、報告します。 よろしくお願い致します。 -- ////////////////////////////////////////////////////////////////////////////////////////// 株式会社ノーリツ 研究開発本部 エレクトロニクス開発部応用技術開発室第2G 松村 悟 ////////////////////////////////////////////////////////////////////////////////////////// |
From: Yutaka Y. <ya...@us...> - 2013-05-21 02:57:03
|
矢野尾です。 ご報告ありがとうございます。 申し訳ありません。AdLint のプリプロセッサの不具合でした。 プリプロセスのための字句解析で、関数形式マクロの実引数部分を細かく字句 に分解しすぎていました。 そのため、実引数 "1id" を "1" "id" の二つの字句としてマクロ置換を進め てしまい、## オペレータの評価時に "JOBID_" と先頭の "1" のみを連結し、 残りの "id" が浮いてしまいました。 対策を次のリリースに盛り込みますので、少々お待ちください。 -- 矢野尾 裕 <ya...@us...> > > 伊藤です。 > お世話になっております。 > > AdLint 3.0.4 で以下の事象が発生しました。 > > トークン連結演算子 '##' にて、連結文字列の先頭が数字だと連結がおかしい。 > > adlint_test1.h: > typedef enum tag_JobID { > #define DEFINE_JOB(id, func) JOBID_##id, > #include "adlint_test1.h" > #undef DEFINE_JOB > } EJobID; > > adlint_test1.c: > DEFINE_JOB( 1id, func1 ) > > adlint_test1.c.msg.csv: > E,../adlint_test/adlint_test1.h,1,1,core,E0008,ERR,X99,トークン `JOBID_1 > id' で構文エラーを検知しました。 > > adlint_test1.i: > # 1 "../adlint_test/adlint_test1.c" > typedef enum tag_JobID { > # 1 "../adlint_test/adlint_test1.h" > JOBID_1 id, > # 5 "../adlint_test/adlint_test1.c" > } EJobID; > > 数字'1'と'id'の間にスペースが入ってしまいます。 > > よろしくお願いします。 > > --- > 伊藤 洋一 <yoh...@nt...> > > 株式会社リコー > 研究開発本部 デバイスモジュール技術開発センター > 製品開発室 映像モジュール開発グループ |
From: <yoh...@nt...> - 2013-05-20 09:31:09
|
伊藤です。 お世話になっております。 AdLint 3.0.4 で以下の事象が発生しました。 トークン連結演算子 '##' にて、連結文字列の先頭が数字だと連結がおかしい。 adlint_test1.h: typedef enum tag_JobID { #define DEFINE_JOB(id, func) JOBID_##id, #include "adlint_test1.h" #undef DEFINE_JOB } EJobID; adlint_test1.c: DEFINE_JOB( 1id, func1 ) adlint_test1.c.msg.csv: E,../adlint_test/adlint_test1.h,1,1,core,E0008,ERR,X99,トークン `JOBID_1 id' で構文エラーを検知しました。 adlint_test1.i: # 1 "../adlint_test/adlint_test1.c" typedef enum tag_JobID { # 1 "../adlint_test/adlint_test1.h" JOBID_1 id, # 5 "../adlint_test/adlint_test1.c" } EJobID; 数字'1'と'id'の間にスペースが入ってしまいます。 よろしくお願いします。 --- 伊藤 洋一 <yoh...@nt...> 株式会社リコー 研究開発本部 デバイスモジュール技術開発センター 製品開発室 映像モジュール開発グループ |
From: Yutaka Y. <ya...@us...> - 2013-05-13 10:36:11
|
矢野尾です。 ご報告ありがとうございます。現象が再現することを確認しました。 申し訳ありません。こちらも AdLint のプリプロセッサの不具合でした。 ご提示いただいたサンプルコードで、RUBY_EXTCONF_H マクロが未定義の場合 に、ご指摘の通りプリプロセッサが無限ループしていました。 RUBY_EXTCONF_H マクロが未定義な場合、正しい #include ディレクティブと はならないので、エラーメッセージを出力して解析を終了する方針で対策しま す。 こちらも次のリリースに盛り込みますので、少々お待ちください。 -- 矢野尾 裕 <ya...@us...> > お世話になります。張と申します。 > > Headerファイルに以下の条件を全て満たした場合、 > 解析が無限ループに陥る(72時間以上進捗なし)ケースを見つかりました。 > > 1、インクルードガードが#ifndef ではなく、#if !defineを利用する。 > 2、#include の後ろにファイル名ではなく、マクロであること。 > > 以下コード例 > ---------- > // ossl.h > #if !defined _OSSL_H_ > //#ifndef _OSSL_H_ > #define _OSSL_H_ > > #include RUBY_EXTCONF_H > > #endif /* _OSSL_H_ */ > > ---------- > // ossl.c > > #include "ossl.h" > > int > main(int argc, char *argv[]) > { > return 0; > } > ------------- > > ご参考までに。 > よろしくお願いします。 > 張 小東 |
From: Yutaka Y. <ya...@us...> - 2013-05-13 07:57:51
|
矢野尾です。 先ほどのメールで、誤りがありましたので訂正させてください。 > しかし、ご報告いただいた /*/*/ の処理で 2-3 文字目の /* で入れ子のコメ > ントが開始したと判断して、コメントの終了を見落としていました。 3-4 文字目の /* でした。。。慌ててました。。 -- 矢野尾 裕 <ya...@us...> > 矢野尾です。 > > ご報告ありがとうございます。 > > 申し訳ありません。AdLint のプリプロセッサの不具合でした。 > > 現状、/* ... /* ... */ ... */ のように、コメントを入れ子にした場合に警 > 告できるようにプリプロセッサを実装しています。 > > しかし、ご報告いただいた /*/*/ の処理で 2-3 文字目の /* で入れ子のコメ > ントが開始したと判断して、コメントの終了を見落としていました。 > > 対策を次のリリースに盛り込みますので、少々お待ちください。 > > -- > 矢野尾 裕 <ya...@us...> > > >> お世話になります。張と申します。 >> >> 下記のソースはgccでコンパイル通りますが、adlintで解析失敗になります。 >> >> main() >> { >> /*/*/ >> } >> >> ご参考までに。 >> よろしくお願いします。 >> 張 小東 |
From: Yutaka Y. <ya...@us...> - 2013-05-13 07:27:22
|
矢野尾です。 ご報告ありがとうございます。 申し訳ありません。AdLint のプリプロセッサの不具合でした。 現状、/* ... /* ... */ ... */ のように、コメントを入れ子にした場合に警 告できるようにプリプロセッサを実装しています。 しかし、ご報告いただいた /*/*/ の処理で 2-3 文字目の /* で入れ子のコメ ントが開始したと判断して、コメントの終了を見落としていました。 対策を次のリリースに盛り込みますので、少々お待ちください。 -- 矢野尾 裕 <ya...@us...> > お世話になります。張と申します。 > > 下記のソースはgccでコンパイル通りますが、adlintで解析失敗になります。 > > main() > { > /*/*/ > } > > ご参考までに。 > よろしくお願いします。 > 張 小東 |
From: <ch...@pm...> - 2013-05-13 05:28:43
|
お世話になります。張と申します。 Headerファイルに以下の条件を全て満たした場合、 解析が無限ループに陥る(72時間以上進捗なし)ケースを見つかりました。 1、インクルードガードが#ifndef ではなく、#if !defineを利用する。 2、#include の後ろにファイル名ではなく、マクロであること。 以下コード例 ---------- // ossl.h #if !defined _OSSL_H_ //#ifndef _OSSL_H_ #define _OSSL_H_ #include RUBY_EXTCONF_H #endif /* _OSSL_H_ */ ---------- // ossl.c #include "ossl.h" int main(int argc, char *argv[]) { return 0; } ------------- ご参考までに。 よろしくお願いします。 張 小東 |
From: <ch...@pm...> - 2013-05-10 02:17:04
|
お世話になります。張と申します。 下記のソースはgccでコンパイル通りますが、adlintで解析失敗になります。 main() { /*/*/ } ご参考までに。 よろしくお願いします。 張 小東 |
From: Yutaka Y. <ya...@us...> - 2013-04-12 04:41:43
|
矢野尾です。 本日 3.0.2 をリリースしたばかりですが、致命的な問題により AdLint 3.0.4 をリリースいたしました。 AdLint 3.0.2 リリース前のテストから adlint_chk コマンドの動作確認が漏 れており、しかも、確認したところコマンドが異常終了してしまいました。 AdLint 3.0.2 からの変更点は下記の通りです。 * adlint_chk コマンドが異常終了する不具合を修正 たびたび申し訳ありませんが、是非アップデートをお願いいたします。 以上 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2013-04-12 02:29:27
|
矢野尾です。 本日、AdLint 3.0.2 をリリースいたしました。 先日公開した AdLint PAD にご投稿いただいたコードの解析結果から、インタ プリタのコア部分に重大な不具合を発見できました。 取り急ぎ、その不具合の対策を盛り込みリリースしました。 AdLint 3.0.0 からの変更点は下記の通りです。 * 式の評価時に配列と配列の先頭要素へのポインタを透過的に扱うようインタ プリタを修正 char *argv[] のときに *(++argv); といった式が現れた場合に、式の型を 見失ってしまっていました。 * 式の評価時に関数と関数へのポインタを透過的に扱うようインタプリタを修 正 上記の配列の場合と同様に、式中に関数名が現れた場合は該当する関数への ポインタとして扱うように修正しました。 * W0100 初期値設定後に変数へ再代入がない 警告メッセージを明確化。 W0100 警告は、「非 const 変数が初期値を指定して定義されたが、再代入 が行われないこと」と「非 const 変数が初期値無しで定義されたが、その 後一度しか代入が行われないこと」を指摘するメッセージですが、文言が分 かりづらかったため見直しました。 是非アップデートをお願いいたします。 以上 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2013-03-27 01:45:10
|
矢野尾です。 本日、AdLint 3.0.0 をリリースいたしました。 しばらくバージョンアップの期間があいてしまいましたが、コードチェックを 個別に選択する機能や、多くの不具合修正を盛り込み、メジャーバージョンア ップしました。 また、AdLint をインストールしなくても、ブラウザからオンラインで解析内 容を確認することができる、AdLint のお試しサービス AdLint PAD を公開し ました。 http://adlint-pad.herokuapp.com/ こちらも是非ご活用ください。 AdLint 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 に対応 是非アップデートをお願いいたします。 以上 -- 矢野尾 裕 <ya...@us...> |
From: 古谷 聡 <tfu...@ya...> - 2013-02-05 13:10:08
|
古谷です。 お世話になっております。 回答ありがとうございます。 勉強になりました。 =========================================== 日本プロセス株式会社 産業・公共システム事業部 古谷 聡 =========================================== |
From: Yutaka Y. <ya...@us...> - 2013-02-05 02:15:09
|
矢野尾です。 お問い合わせありがとうございます。 結論から申し上げますと、C 言語の標準規格 (ISO C99) に従いますと、グロ ーバルな宣言に ; が余分についている場合、構文として正しくありません。 ローカル変数の宣言に余分な ; が現れた場合、変数宣言の直後に「空の式文」 (セミコロンのみの文) が現れたと解釈できるため構文エラーとはなりません。 実際に、gcc に -pedantic オプションを指定して、グローバルな int a[1];; をコンパイルしたところ、下記のような警告が出力されます。 % /usr/local/gcc-4.7.2/bin/gcc -pedantic -c a.c a.c:1:10: 警告: ISO C では関数外での余分な ‘;’ を許可していません [-pedan tic] ただし、gcc では -Werror オプションにより、警告をエラー扱いとするよう 指定しない場合、コンパイルできてしまいますね。 AdLint は設計方針として、固有のコンパイラ製品に依存しないことを原則と して考えております。 gcc の #include_next ディレクティブなど、どうしても逃げようの無い拡張 機能については一部 AdLint でも対応しておりますが、全てを対応するとなる とキリが無いので、逃げ道が考えられるものについては運用で対応していただ きたいと考えております。 可能であれば、変数宣言直後の余分な ; を削除して AdLint を活用していた だけると大変助かります。 また、AdLint には解析直前に指定したパターンのトークン列を置換する機能 が備わっております。 この機能により、連続する ;; を ; に置換することも可能です。 ただし、for (;;) { ... } のような ;; も置換してしまうので、利用には注 意をお願いします。 以上 -- 矢野尾 裕 <ya...@us...> |