adlint-user-ja Mailing List for AdLint (Page 3)
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: 古谷 聡 <tfu...@ya...> - 2013-02-03 10:52:04
|
古谷です。 お世話になっております。 AdLint 2.6.14 で以下の事象が発生しました。 int a[1];;をグローバル変数として宣言した場合 『E0008,トークン `; ;' で構文エラーを検知しました。』と表示され解析が止まる。 int a[1];;をローカル変数として宣言した場合 『W0425,一つの行に複数の宣言または文が存在します。』と表示される。 どちらもコンパイル可能ではあるので、グローバル変数として宣言した場合も、 ローカル変数として宣言した場合と同様に解析が続いて警告がでるのがよいと思います。 =========================================== 日本プロセス株式会社 産業・公共システム事業部 古谷 聡 =========================================== |
From: 高瀬竜一 <r-t...@ai...> - 2012-12-17 12:28:49
|
高瀬です. いつもご対応ありがとうございます. adlint-2.6.14に更新してW0246が出力されなくなったことを確認いたしました. char_as_unsigned_charについては失念しておりました. 最近は時間がとれずご無沙汰しておりますが,今後ともますますのご発展をお祈りします. 以上,取り急ぎ御礼まで. -- -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: Yutaka Y. <ya...@us...> - 2012-12-17 08:35:19
|
矢野尾です。 本日、AdLint 2.6.14 をリリースいたしました。 AdLint 2.6.12 からの変更点は下記の通りです。 * 識別子や宣言の重複を指摘する W0051 / W0052 / W0491 / W0492 / W0703 / W0704 / W0770 / W0771 / W0787 / W0788 / W0789 / W0790 / W1037 コード チェックで、重複のペアとなる部分を C0001 メッセージで補足するよう仕 様変更 掲示板の「識別子の警告について」にてご提案いただいた改善です。 http://sf.net/p/adlint/discussion/request_ja/thread/7437af87/ * char 型が関係する暗黙の変換コードチェックの仕様を変更し、明示的な signed / unsigned 指定を考慮して警告の意図を明確化 [adlint-user-ja:18] でご報告いただいた不具合修正です。 * 他の製品に AdLint を組み込みやすくするため、ライブラリインタフェース を改善 * lint コマンドが事前定義する __LINT__ / lint / __lint / __lint__ マク ロと、AdLint 独自の事前定義マクロとして、__ADLINT__ / adlint / __adlint / __adlint__ を追加 #ifdef に、これらの AdLint 固有のマクロを指定することで、コンパイル 時と静的解析時を区別できます。 これにより、特性ファイル中のトークン置換設定で回避することができない 問題などに対応するための記述をソースコード中に埋め込むことが可能とな ります。 是非アップデートをお願いいたします。 また、下記の「不具合・改善の対応状況」も更新しましたので、あわせてご確 認ください。 http://adlint.sourceforge.net/pmwiki/pmwiki.php?n=Main.TicketList 以上 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2012-12-17 08:32:38
|
矢野尾です。 ご報告ありがとうございます。 申し訳ありません。これは AdLint の不具合です。 特性ファイルで char_as_unsigned_char: true を設定した場合、明示的に signed / unsigned を指定しない char 型を unsigned char として扱う仕様 としておりますが、この時に char 型変数を暗黙的に他の型に変換した場合に W0123 と W0246 メッセージを重複して出力していました。 変換に関するコードチェックで、signed char / unsigned char / char 型を 明確に区別するように対策し、AdLint 2.6.14 としてリリースいたしました。 お手数おかけしますが、AdLint 2.6.14 にアップデートしていただき、再度ご 確認をお願いいたします。 以上 -- 矢野尾 裕 <ya...@us...> > 高瀬です. > お世話になっております. > > AdLintの型変換の警告について一つ理由の分からないものが見つかりました. > それは,下記のコードで発生するchar型からint型への暗黙の型変換です. > short型は警告されませんが,なぜかchar型は次のように警告されます. > > W,../convert.c,6,8,W0123,暗黙的に char 型から int 型に型変換されています。 > W,../convert.c,6,8,W0246,暗黙的に unsigned char 型から int 型に型変換されて > います。 > W,../convert.c,6,14,W0123,暗黙的に char 型から int 型に型変換されています。 > W,../convert.c,6,14,W0246,暗黙的に unsigned char 型から int 型に型変換され > ています。 > > ----------------------------------- > void convert(const char a1, const char a2, > const short b1, const short b2, > const int c1, const int c2, > const long d1, const long d2) > { > if ((a1 == a2) && > (b1 == b2) && > (c1 == c2) && > (d1 == d2)) > { > } > return; > } > ----------------------------------- > > 関係演算子のオペランドでの算術型変換に対する警告でしょうか. > adlint_traits.ymlでは char, short ともに int とビット数が > 異なりますが,なぜ short 型と扱いが違うのでしょう. > > AdLint 2.4.10とUbuntu 12.04(64bit)で確認しました. > > -------------------------------------------------------------------- > 高瀬竜一 <r-t...@ai...> > > 独立行政法人 産業技術総合研究所 > 知能システム研究部門 タスクビジョン研究グループ > -------------------------------------------------------------------- |
From: Yutaka Y. <ya...@us...> - 2012-11-29 08:15:32
|
矢野尾です。 本日、AdLint 2.6.12 をリリースいたしました。 前回リリースから間隔が開いてしまい、また、今回リリースではご報告いただ いている不具合の修正を盛り込むことができませんでした。 AdLint 2.6.10 からの変更点は下記の通りです。 * 大きすぎる整数定数の評価時に異常終了する不具合を修正 int i = 123456790123456790123456790123456790; といったソースファイルを解析すると異常終了していました。 * Ruby 2.0.0dev (r37962) 上で警告なしに実行できるよう調整 現在、CRuby コミュニティにて AdLint を Ruby 処理系自体のベンチマーク プログラムとして活用いただいてます。 Ruby 2.0.0dev の最新版で組み込みライブラリのインタフェースが一部変更 となったため、この対応を盛り込みました。 是非アップデートをお願いいたします。 以上 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2012-11-17 02:09:18
|
矢野尾です。 実験とご報告ありがとうございます。 ちょうど私も ruby-2.0.0-preview1 リリース時に性能比較をしてみて 1.2 倍ほ ど解析時間が長くなるのを確認しました。 その後、CRuby コミッタの方とお話する機会があり、口頭で性能劣化を報告した ところ「ぜひチケット登録してほしい」と依頼されたので、下記のように報告し ました。 http://bugs.ruby-lang.org/issues/7356 それにしても、ちょうど同じタイミングで実験していたのですね! いつもありがとうございます。 -- 矢野尾 裕 <ya...@us...> (2012年11月17日 01:04), 高瀬竜一 wrote: > 高瀬です. > > 新しい発見があったわけではありませんが,ちょっと実験したのでご報告です.AdLint 2.6.10 を,先ごろ公開された Ruby > 2.0.0 preview1 で動かしてみました. > > 結論から言うと,今のところ Ruby 1.9.3 と大差ありませんでした.Ruby自身のパフォーマンス向上で解析時間が短縮しないか期待したのですが. > > 解析時間: > Ruby 2.0.0 preview1 の場合:約 93 分 > Ruby 1.9.3 の場合:約 89 分 > > 解析対象: > GTKアプリケーション 17,650 行(SLOCCount調べ) > > 実行環境: > OS: Vine Linux 6.1 (32bit) > CPU: Core2 Duo E6700 2.66GHz > メモリ: 3 GB > > 誤差のレベルですが,むしろ若干遅くなりました. > 解析結果は未確認ですが,動作はするようですね. > > 以上,取り急ぎご報告まで. > -- > -------------------------------------------------------------------- > 高瀬竜一 <r-t...@ai...> > > 独立行政法人 産業技術総合研究所 > 知能システム研究部門 タスクビジョン研究グループ > -------------------------------------------------------------------- |
From: 高瀬竜一 <r-t...@ai...> - 2012-11-16 16:04:58
|
高瀬です. 新しい発見があったわけではありませんが,ちょっと実験したのでご報告です.AdLint 2.6.10 を,先ごろ公開された Ruby 2.0.0 preview1 で動かしてみました. 結論から言うと,今のところ Ruby 1.9.3 と大差ありませんでした.Ruby自身のパフォーマンス向上で解析時間が短縮しないか期待したのですが. 解析時間: Ruby 2.0.0 preview1 の場合:約 93 分 Ruby 1.9.3 の場合:約 89 分 解析対象: GTKアプリケーション 17,650 行(SLOCCount調べ) 実行環境: OS: Vine Linux 6.1 (32bit) CPU: Core2 Duo E6700 2.66GHz メモリ: 3 GB 誤差のレベルですが,むしろ若干遅くなりました. 解析結果は未確認ですが,動作はするようですね. 以上,取り急ぎご報告まで. -- -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: 高瀬竜一 <r-t...@ai...> - 2012-11-08 12:41:54
|
高瀬です. たびたびのごご対応,恐縮です. 再び更新したAdLintでチェックし,問題がないことを確認いたしました. ありがとうございました. 2012年11月8日 15:44 Yutaka Yanoh <ya...@us...>: > 矢野尾です。 > > ご報告ありがとうございます。 > > 申し訳ありません。これは AdLint の不具合です。 > > ご指摘のとおり W0708 コードチェックの仕様としましては、for 文の条件式 > 部分はループの本体では無い扱いなので、サンプルコードでは W0708 を出力 > しないよう対策しました。 > > i++ < z のように式中に ++ , -- 式を含めた場合は、W0512 メッセージにて > 指摘します。 > > また、コードチェック全般に同一メッセージを同一箇所に出力してしまう不具 > 合もありましたので、こちらも対策しました。 > > 対策を盛り込み、本日 AdLint 2.6.10 をリリースしました。 > > お手数おかけしますが、アップデートしていただき、再度ご確認をお願いいた > します。 > > -- > 矢野尾 裕 <ya...@us...> > -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: 高瀬竜一 <r-t...@ai...> - 2012-11-08 12:33:11
|
高瀬です. お世話になっております. AdLint 2.6.10 にて,変更点を確認いたしました. if文で関数の戻り値が使われていると見なされない件, またその他関連の条件に対するご確認とAdLintの修正, ありがとうございました. 2012年11月8日 15:47 Yutaka Yanoh <ya...@us...>: > 矢野尾です。 > > ご報告ありがとうございます。 > > 申し訳ありません。AdLint の不具合です。 > > たしかに、条件式として値を使用しているにも関わらず、W1073 メッセージで > 関数の戻り値を捨てていると指摘するのはおかしいですね。 > > 本件の問題は、if 文に限らず while 文、do 文、for 文、条件演算式 (三項 > 演算式) でも再現します。 > > また、条件式にグローバル変数を使用した場合に、関数からグローバル変数へ > の依存関係を表すメトリクスファイル (*.met.csv) 中の DEP レコードが出力 > されない問題もあります。 > > 抽象インタプリタの条件式評価を修正し、上記すべての問題を対策しました。 > > 本日 AdLint 2.6.10 としてリリースしましたので、アップデートしていただ > き、再度ご確認をお願いいたします。 > > -- > 矢野尾 裕 <ya...@us...> > > -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: 高瀬竜一 <r-t...@ai...> - 2012-11-08 12:22:10
|
高瀬です. いつもお世話になっております. ループの制御変数に関する提案のご採用,ありがとうございます. 早速 AdLint 2.6.10 で確認いたしました. 以上,取り急ぎ御礼まで. 2012年11月8日 15:42 Yutaka Yanoh <ya...@us...>: > 矢野尾です。 > > ご提案ありがとうございます。 > > たしかに、ループの制御変数として const な変数を候補に挙げてしまうのは > 意味がないですね。 > > ご提案いただいた W0585 コードチェックを含む下記の類似チェックで、const > 変数を制御変数の候補としてチェックしないよう対策しました。 > > W0534 : 制御変数が for 文で初期化されていない > W0585 : 制御変数がインクリメント式に現れない > W0611 : 繰り返し文の制御式が常に真 > W0708 : for 文の制御変数をループ本体で更新 > > 本日 AdLint 2.6.10 をリリースしましたので、ぜひアップデートをお願いい > たします。 > > -- > 矢野尾 裕 <ya...@us...> > -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: Yutaka Y. <ya...@us...> - 2012-11-08 06:56:10
|
矢野尾です。 本日、AdLint 2.6.10 をリリースいたしました。 AdLint 2.6.2 からの変更点は下記の通りです。 * 警告メッセージが重複することがある不具合を修正 * W1069「if-else-if 文の並びを完結させる else 節がない」コードチェック で完結した if-else 文中に完結していない if-else-if 文の並びがある場 合に、親の if-else 文の位置で警告してしまう不具合を修正 * W0708「for 文の制御変数がループ本体で更新されている」コードチェック で明示的な制御式が関数呼び出し式で、制御変数をその関数で更新する場合 にもループ本体で更新していると警告してしまう不具合を修正 * W0534「制御変数が for 文で初期化されていない」、W0585「制御変数がイ ンクリメント式に現れない」、W0611「繰り返し文の制御式が常に真」、 W0708「for 文の制御変数をループ本体で更新」コードチェックで、制御変 数の推論が不十分なため、const 変数を制御変数と判定することがある不具 合を修正 * W1073「関数の戻り値を破棄」コードチェックで、制御文の条件式として関 数呼び出し式を指定すると、戻り値を条件判断に使用しているのに関わらず 警告してしまう不具合を修正 * W0460「変数値が評価時点で未設定の可能性有り」コードチェックで、配列 の要素や構造体/共用体のメンバについて警告するときに、一番外側の変数 名をメッセージに載せるように修正 是非アップデートをお願いいたします。 また、下記の「不具合・改善の対応状況」も更新しましたので、あわせてご確 認ください。 http://adlint.sourceforge.net/pmwiki/pmwiki.php?n=Main.TicketList 以上 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2012-11-08 06:47:28
|
矢野尾です。 ご報告ありがとうございます。 申し訳ありません。AdLint の不具合です。 たしかに、条件式として値を使用しているにも関わらず、W1073 メッセージで 関数の戻り値を捨てていると指摘するのはおかしいですね。 本件の問題は、if 文に限らず while 文、do 文、for 文、条件演算式 (三項 演算式) でも再現します。 また、条件式にグローバル変数を使用した場合に、関数からグローバル変数へ の依存関係を表すメトリクスファイル (*.met.csv) 中の DEP レコードが出力 されない問題もあります。 抽象インタプリタの条件式評価を修正し、上記すべての問題を対策しました。 本日 AdLint 2.6.10 としてリリースしましたので、アップデートしていただ き、再度ご確認をお願いいたします。 -- 矢野尾 裕 <ya...@us...> > 高瀬です. > いつもお世話になっております. > > 細かいことですが,AdLintで少し気になる警告がありましたのでご報告します. > > 下記のソースコードのif文で警告W1073が検知されました. > きちんと論理式に直せば出ない警告ですが,一応戻り値は使っています. > > W,../compare.c,6,14,W1073,関数 `compare' の戻り値を破棄しています。 > > -------------------------------- > extern int compare(const int p1, const int p2); > static int check(const int data1, const int data2) > { > int equal; > > if (compare(data1, data2)) > { > equal = 0; > } > else > { > equal = 1; > } > > return equal; > } > -------------------------------- > > 使用したのは AdLint 2.6.2,環境は Ubuntu 12.04 (64bit) です. > > 以上,ご連絡まで. > -------------------------------------------------------------------- > 高瀬竜一 <r-t...@ai...> > > 独立行政法人 産業技術総合研究所 > 知能システム研究部門 タスクビジョン研究グループ > -------------------------------------------------------------------- |
From: Yutaka Y. <ya...@us...> - 2012-11-08 06:44:15
|
矢野尾です。 ご報告ありがとうございます。 申し訳ありません。これは AdLint の不具合です。 ご指摘のとおり W0708 コードチェックの仕様としましては、for 文の条件式 部分はループの本体では無い扱いなので、サンプルコードでは W0708 を出力 しないよう対策しました。 i++ < z のように式中に ++ , -- 式を含めた場合は、W0512 メッセージにて 指摘します。 また、コードチェック全般に同一メッセージを同一箇所に出力してしまう不具 合もありましたので、こちらも対策しました。 対策を盛り込み、本日 AdLint 2.6.10 をリリースしました。 お手数おかけしますが、アップデートしていただき、再度ご確認をお願いいた します。 -- 矢野尾 裕 <ya...@us...> > 高瀬です. > > 副作用完了点についてのご対応ありがとうございます. > > ところで,教えていただいた情報から気がついたことがあります. > > return文の i の評価後に for 文の i を処理する点に関連するかと思いますが, > 下記のように変更したコードを検査すると次の警告が出ました. > > W,../side.c,4,16,W0708,for 文の制御変数 `i' は繰り返し文本体の中で値を変え > られています。 > W,../side.c,4,16,W0708,for 文の制御変数 `i' は繰り返し文本体の中で値を変え > られています。 > > ------------------------------ > int getarea(const int z) > { > int i; > for (i = 0; i++ < z;) > { > } > return 0; > } > ------------------------------ > AdLint 2.6.2で確認しました. > > for文のi++が警告すべきコーディングである点は確かですが, > 「繰り返し文本体の中」という表現になっています. > また,なぜか警告が二つになっていました. > > 以上,取り急ぎご連絡まで. |
From: Yutaka Y. <ya...@us...> - 2012-11-08 06:42:10
|
矢野尾です。 ご提案ありがとうございます。 たしかに、ループの制御変数として const な変数を候補に挙げてしまうのは 意味がないですね。 ご提案いただいた W0585 コードチェックを含む下記の類似チェックで、const 変数を制御変数の候補としてチェックしないよう対策しました。 W0534 : 制御変数が for 文で初期化されていない W0585 : 制御変数がインクリメント式に現れない W0611 : 繰り返し文の制御式が常に真 W0708 : for 文の制御変数をループ本体で更新 本日 AdLint 2.6.10 をリリースしましたので、ぜひアップデートをお願いい たします。 -- 矢野尾 裕 <ya...@us...> > 高瀬です. > お世話になっております. > > ループの制御変数に対する警告について,1つ提案があります. > 例として下記のコードを AdLint 2.6.0 で検査すると W0585 が出力されます. > > > W,../forval.c,7,54,W0585,制御変数 `center' はインクリメント式に現れません。 > > ---------------------------------- > #define RADIUS 10 > > int sum_numerical_sequence(const int center) > { > int x; > int sum = 0; > for (x = center - RADIUS; x <= (center + RADIUS); x++) > { > sum += x; > } > return sum; > } > ---------------------------------- > > この W0585 について利用者ガイドには > 「ループ変数の増分を増分式で行わずにループ本体中で行うと...」 > とありますが,変数 center は const で修飾されています. > > この場合,警告は出さないようにするのはいかがでしょうか. > > 以上です. |
From: 高瀬竜一 <r-t...@ai...> - 2012-11-05 14:02:26
|
高瀬です. いつもお世話になっております. 細かいことですが,AdLintで少し気になる警告がありましたのでご報告します. 下記のソースコードのif文で警告W1073が検知されました. きちんと論理式に直せば出ない警告ですが,一応戻り値は使っています. W,../compare.c,6,14,W1073,関数 `compare' の戻り値を破棄しています。 -------------------------------- extern int compare(const int p1, const int p2); static int check(const int data1, const int data2) { int equal; if (compare(data1, data2)) { equal = 0; } else { equal = 1; } return equal; } -------------------------------- 使用したのは AdLint 2.6.2,環境は Ubuntu 12.04 (64bit) です. 以上,ご連絡まで. -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: Tetsuya.Mukawa <mu...@ig...> - 2012-11-05 06:40:43
|
矢野尾様 お返事ありがとうございます。 (2012/11/02 12:40), Yutaka Yanoh wrote: > 矢野尾です。 > > お問い合わせありがとうございます。 > > 申し訳ありません。AdLint 2.6.2 では、ISO C99 で追加された関数形式マク > ロに可変引数を指定する構文には対応しておりません。 なるほど、あれはC99形式の書き方だったのですね。 承知しました。 > > 今後の課題として対応を検討しようと思います。 > > AdLint が正式にマクロの可変引数に対応するまでの間、どのように対処すれ > ばよいかアイデアをお持ちでしたら、是非お聞かせください。 今回は、AdLintのログから、解析に失敗している箇所がどこか判断できました。 バグならば問題かと思いますが、 解析に失敗している箇所がユーザに判断可能かつユーザ側で回避策もある状況な ので、 正式対応までの間は今の実装で十分かと思いました。 お返事、ありがとうございました。 > > 以上、よろしくお願いいたします。 > > -- > 矢野尾 裕 <ya...@us...> > > >> はじめまして。武川と申します。 >> >> adlinit を使わせていただいているのですが、 >> 以下のコードに含まれる"D_DEFINE_INTERFACE1"マクロが上手く解析できないよ >> うに思いましたので、 >> ご報告させていただきます。 >> (使い始めて日が浅いため、私の設定ミスでしたらすいません) >> >> ---------------------------------------------------- >> #include <stdio.h> >> >> #define D_DEFINE_INTERFACE1( IFACE, ... ) \ >> struct _ ## IFACE { \ >> int tmp; \ >> \ >> __VA_ARGS__ \ >> }; >> >> #define D_DEFINE_INTERFACE2( IFACE, x... ) \ >> struct _ ## IFACE { \ >> int tmp; \ >> \ >> x \ >> }; >> >> D_DEFINE_INTERFACE1( test1, ) >> D_DEFINE_INTERFACE2( test2, ) >> >> int main(int argc, char *argv[]) { >> return 0; >> } >> ---------------------------------------------------- >> >> D_DEFINE_INTERFACE1については”X0003,回復不能なエラー”となってしまいました。 >> D_DEFINE_INTERFACE2については問題なく解析が出来ます。 >> >> 私の環境は以下の通りとなります。 >> >> OS: Ubuntu 12.04 LTS >> Adlin: 2.6.2 (2012-10-31) >> Ruby: 1.9.3p286 (2012-10-12 revision 37165) [i686-linux] >> >> よろしくお願いします。 > > ------------------------------------------------------------------------------ > LogMeIn Central: Instant, anywhere, Remote PC access and management. > Stay in control, update software, and manage PCs from one command center > Diagnose problems and improve visibility into emerging IT issues > Automate, monitor and manage. Do more in less time with Central > http://p.sf.net/sfu/logmein12331_d2d > _______________________________________________ > adlint-user-ja mailing list > adl...@li... > https://lists.sourceforge.net/lists/listinfo/adlint-user-ja |
From: Yutaka Y. <ya...@us...> - 2012-11-02 03:40:39
|
矢野尾です。 お問い合わせありがとうございます。 申し訳ありません。AdLint 2.6.2 では、ISO C99 で追加された関数形式マク ロに可変引数を指定する構文には対応しておりません。 今後の課題として対応を検討しようと思います。 AdLint が正式にマクロの可変引数に対応するまでの間、どのように対処すれ ばよいかアイデアをお持ちでしたら、是非お聞かせください。 以上、よろしくお願いいたします。 -- 矢野尾 裕 <ya...@us...> > はじめまして。武川と申します。 > > adlinit を使わせていただいているのですが、 > 以下のコードに含まれる"D_DEFINE_INTERFACE1"マクロが上手く解析できないよ > うに思いましたので、 > ご報告させていただきます。 > (使い始めて日が浅いため、私の設定ミスでしたらすいません) > > ---------------------------------------------------- > #include <stdio.h> > > #define D_DEFINE_INTERFACE1( IFACE, ... ) \ > struct _ ## IFACE { \ > int tmp; \ > \ > __VA_ARGS__ \ > }; > > #define D_DEFINE_INTERFACE2( IFACE, x... ) \ > struct _ ## IFACE { \ > int tmp; \ > \ > x \ > }; > > D_DEFINE_INTERFACE1( test1, ) > D_DEFINE_INTERFACE2( test2, ) > > int main(int argc, char *argv[]) { > return 0; > } > ---------------------------------------------------- > > D_DEFINE_INTERFACE1については”X0003,回復不能なエラー”となってしまいました。 > D_DEFINE_INTERFACE2については問題なく解析が出来ます。 > > 私の環境は以下の通りとなります。 > > OS: Ubuntu 12.04 LTS > Adlin: 2.6.2 (2012-10-31) > Ruby: 1.9.3p286 (2012-10-12 revision 37165) [i686-linux] > > よろしくお願いします。 |
From: Tetsuya.Mukawa <mu...@ig...> - 2012-11-01 03:15:45
|
はじめまして。武川と申します。 adlinit を使わせていただいているのですが、 以下のコードに含まれる"D_DEFINE_INTERFACE1"マクロが上手く解析できないよ うに思いましたので、 ご報告させていただきます。 (使い始めて日が浅いため、私の設定ミスでしたらすいません) ---------------------------------------------------- #include <stdio.h> #define D_DEFINE_INTERFACE1( IFACE, ... ) \ struct _ ## IFACE { \ int tmp; \ \ __VA_ARGS__ \ }; #define D_DEFINE_INTERFACE2( IFACE, x... ) \ struct _ ## IFACE { \ int tmp; \ \ x \ }; D_DEFINE_INTERFACE1( test1, ) D_DEFINE_INTERFACE2( test2, ) int main(int argc, char *argv[]) { return 0; } ---------------------------------------------------- D_DEFINE_INTERFACE1については”X0003,回復不能なエラー”となってしまいました。 D_DEFINE_INTERFACE2については問題なく解析が出来ます。 私の環境は以下の通りとなります。 OS: Ubuntu 12.04 LTS Adlin: 2.6.2 (2012-10-31) Ruby: 1.9.3p286 (2012-10-12 revision 37165) [i686-linux] よろしくお願いします。 |
From: 高瀬竜一 <r-t...@ai...> - 2012-10-31 13:36:00
|
高瀬です. いつもご対応ありがとうございます. AdLint 2.6.2 にアップデートして,代入された変数に未初期化の警告が出なくなったことを確認しました. 以上,取り急ぎ御礼まで. 2012年10月31日 11:53 Yutaka Yanoh <ya...@us...>: > 矢野尾です。 > > お待たせいたしました。 > > 本件の対応を盛り込み、本日 AdLint 2.6.2 をリリースいたしました。 > > お手数おかけしますが、AdLint 2.6.2 にアップデートしていただき、再度ご > 確認をお願いいたします。 > > -- > 矢野尾 裕 <ya...@us...> > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct > _______________________________________________ > adlint-user-ja mailing list > adl...@li... > https://lists.sourceforge.net/lists/listinfo/adlint-user-ja -- -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: 高瀬竜一 <r-t...@ai...> - 2012-10-31 13:20:05
|
高瀬です. AdLint 2.6.2 に更新して,潜在型の型名が表示されることを確認しました. 以前より,指摘内容が単刀直入になって分かりやすくなったと思います. ご対応ありがとうございました. 2012年10月31日 11:56 Yutaka Yanoh <ya...@us...>: > 矢野尾です。 > > ご提案ありがとうございます。 > > たしかに、潜在型や整数拡張、通常の算術変換 (usual-arithmetic-conversion) > の仕様に沿って都度警告の内容を確認するのは大変ですね。 > > AdLint としては、変換元 / 変換先の型情報はすべて把握しているので、警告 > メッセージに型名を追加することにしました。 > > この対応が必要そうな警告メッセージを下記に洗い出しましたが、今回はご提 > 案いただいた W0719 を含む、特に内容確認が難しいもののみを対応いたしま > した。 > > (+) が今回対応、(-) が今後対応予定 となります。 > > (+) W0082 : `-' 単項演算子を潜在型が符号無しのオペランドに適用 > (-) W0565 : 汎整数型と volatile ポインタ型間でキャスト > (-) W0566 : 汎整数型と関数ポインタ型間でキャスト > (-) W0567 : 汎整数型と変数ポインタ型間でキャスト > (+) W0578 : 暗黙的に汎整数型の式をより大きな型に変換 > (+) W0579 : 汎整数型の式をより大きな型にキャスト > (-) W0584 : 実引数の型が対応する仮引数の型と不一致 > (-) W0607 : 負数となる整数式を符号無し型に変換 > (-) W0608 : 負数になりえる整数式を符号無し型に変換 > (-) W0635 : printf の変換指定子と対応する実引数の型が不一致 > (-) W0639 : scanf の変換指定子と対応する実引数の型が不一致 > (-) W0641 : 浮動小数点数型と変数ポインタ型間でキャスト > (+) W0650 : シフト演算式の右オペランドが左オペランドのビット長より大きい > (+) W0719 : シフト演算式の右オペランドが潜在型のビット長以上の定数 > (-) W0720 : 浮動小数点数型の値が変換先の型に入りきらない > (-) W0721 : 汎整数型がポインタ値を格納できない > (-) W0722 : 符号付き式の値がオーバーフローする > (-) W0723 : 符号付き式の値がオーバーフローするかも > (-) W0727 : 列挙型にない値を使用 > (-) W0728 : 列挙型の仮引数に異なる列挙型の実引数を指定 > (-) W0729 : 列挙型の変数に異なる列挙型の列挙子を代入 > (-) W0730 : 列挙型の戻り値として異なる列挙型の列挙子を指定 > (-) W0731 : switch 文の列挙型制御式に属さない値を case 節に指定 > (-) W0738 : 暗黙的に正の整数定数をより小さな符号無し型へ変換 > (-) W0742 : 負の整数定数式を符号無し型に変換 > (-) W0743 : 整数定数式の値が変換先の符号付き型の範囲を超える > (-) W0792 : 浮動小数点数型と関数ポインタ間でキャスト > (-) W0793 : 関数ポインタと変数ポインタ間でキャスト > (-) W0794 : 符号付きのオペランドを左シフト > (-) W1049 : 整数式の値が変換先の符号付き型の範囲を超えるかも > (-) W1050 : 整数式の値が変換先の符合付き型の範囲を超える > (+) W1051 : 符号無し型の算術演算結果が桁あふれする > (+) W1052 : 符号無し型の算術演算結果が桁あふれするかも > (-) W1054 : 列挙型変数に列挙型ではない式を代入 > (-) W1055 : 列挙型の戻り値に列挙型ではない式を指定 > (-) W1057 : 列挙型変数に異なる列挙型変数の値を代入 > (-) W1058 : 列挙型の戻り値に異なる列挙型の式を指定 > (-) W1060 : 列挙型ではない戻り値に列挙型の式を指定 > (-) W1064 : 列挙型制御式を持つ switch 文に整数定数の case 節を記述 > (-) W1065 : 列挙型制御式を持つ switch 文で該当列挙型に属さない列挙子を指定 > > 本件の対応を盛り込み AdLint 2.6.2 をリリースしました。 > > ぜひ、アップデートをお願いいたします。 > > -- > 矢野尾 裕 <ya...@us...> -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: 高瀬竜一 <r-t...@ai...> - 2012-10-31 13:07:26
|
高瀬です. 副作用完了点についてのご対応ありがとうございます. ところで,教えていただいた情報から気がついたことがあります. return文の i の評価後に for 文の i を処理する点に関連するかと思いますが, 下記のように変更したコードを検査すると次の警告が出ました. W,../side.c,4,16,W0708,for 文の制御変数 `i' は繰り返し文本体の中で値を変えられています。 W,../side.c,4,16,W0708,for 文の制御変数 `i' は繰り返し文本体の中で値を変えられています。 ------------------------------ int getarea(const int z) { int i; for (i = 0; i++ < z;) { } return 0; } ------------------------------ AdLint 2.6.2で確認しました. for文のi++が警告すべきコーディングである点は確かですが, 「繰り返し文本体の中」という表現になっています. また,なぜか警告が二つになっていました. 以上,取り急ぎご連絡まで. -------------------------------------------------------------------- 高瀬竜一 <r-t...@ai...> 独立行政法人 産業技術総合研究所 知能システム研究部門 タスクビジョン研究グループ -------------------------------------------------------------------- |
From: Yutaka Y. <ya...@us...> - 2012-10-31 04:22:26
|
矢野尾です。 本日、AdLint 2.6.2 をリリースいたしました。 AdLint 2.6.0 からの変更点は下記の通りです。 * 複合代入式の評価時に右辺が未初期化な場合に、代入したにも関わらず左辺 に未初期化状態を伝搬する不具合を修正 * 特性ファイルのパス名リストを指定する項目で、Windows 環境でのパス名と してドライブレターを含めた文字列を指定すると、正しくパス名を認識でき ない不具合を修正 * W0082 `-' 単項演算子を潜在型が符号無しのオペランドに適用 警告メッセ ージに該当する潜在型名を追加 * W0578/W0579 汎整数型の式をより大きな型に変換 警告メッセージに変換元 と変換先の型名を追加 * W0650 シフト演算式の右辺が左辺のビット長より大きい値 警告メッセージ に左辺の型名を追加 * W0719 シフト演算式の右辺が潜在型のビット長以上の定数 警告メッセージ に左辺の潜在型名を追加 * W1051/W1052 符号無し型の算術演算結果が桁あふれ 警告メッセージに算術 演算式の型名を追加 * インタプリタでの return 文評価時に副作用完了点が不足していたため、 W0599 副作用完了点間で参照と更新 コードチェックが不正となる不具合を 修正 是非アップデートをお願いいたします。 また、下記の「不具合・改善の対応状況」も更新しましたので、あわせてご確 認ください。 http://adlint.sourceforge.net/pmwiki/pmwiki.php?n=Main.TicketList 以上 -- 矢野尾 裕 <ya...@us...> |
From: Yutaka Y. <ya...@us...> - 2012-10-31 02:57:31
|
矢野尾です。 ご報告ありがとうございます。 申し訳ありません。AdLint の不具合でした。 インタプリタで return 文を評価する際に、戻り値となる式を完結式として評 価し、その後、呼び出し元へ値を返却するためにその式の値を参照していまし た。 したがってサンプルコードでは、 1. return i; の i を評価 2. シーケンスポイントを通過 3. 呼び出し元へ値を返却するため i の値を参照 4. for 文中の i++ を評価 となり、3 と 4 がシーケンスポイントで仕切られない区間で評価されていま した。 そこで、return 文の評価方法を修正し、3 の直後にシーケンスポイントを置 くようにしました。 本件の対応を盛り込み AdLint 2.6.2 をリリースしました。 お手数おかけしますが、AdLint 2.6.2 にアップデートしていただき、再度ご 確認をお願いいたします。 -- 矢野尾 裕 <ya...@us...> > 高瀬です. > いつもお世話になっております. > > AdLint 2.6.0 で,再び妙だと思われる警告に遭遇したのでご報告します. > 下記のコードを検査すると,警告 W0599 が出力されます. > > W,../side.c,4,23,W0599,副作用完了点の間で `i' が変えられ、参照されています。 > 評価順序は未定義です。 > > ------------------------------------------------ > int getarea(const int x, const int y, const int z) > { > int i; > for (i = 0; i < z; i++) > { > if (x < y) > { > return i; > } > } > return 0; > } > ------------------------------------------------ > > この警告は「同一の変数が副作用完了点の間に 2 度以上アクセスされた場合、」と > の解説があります. > しかしfor文やreturn文の式は完結式となり,副作用完了点となるようです. > すると,変数 i の評価順序は未定義とはならないのではないでしょうか. > > 以上,取り急ぎご報告まで. |
From: Yutaka Y. <ya...@us...> - 2012-10-31 02:56:11
|
矢野尾です。 ご提案ありがとうございます。 たしかに、潜在型や整数拡張、通常の算術変換 (usual-arithmetic-conversion) の仕様に沿って都度警告の内容を確認するのは大変ですね。 AdLint としては、変換元 / 変換先の型情報はすべて把握しているので、警告 メッセージに型名を追加することにしました。 この対応が必要そうな警告メッセージを下記に洗い出しましたが、今回はご提 案いただいた W0719 を含む、特に内容確認が難しいもののみを対応いたしま した。 (+) が今回対応、(-) が今後対応予定 となります。 (+) W0082 : `-' 単項演算子を潜在型が符号無しのオペランドに適用 (-) W0565 : 汎整数型と volatile ポインタ型間でキャスト (-) W0566 : 汎整数型と関数ポインタ型間でキャスト (-) W0567 : 汎整数型と変数ポインタ型間でキャスト (+) W0578 : 暗黙的に汎整数型の式をより大きな型に変換 (+) W0579 : 汎整数型の式をより大きな型にキャスト (-) W0584 : 実引数の型が対応する仮引数の型と不一致 (-) W0607 : 負数となる整数式を符号無し型に変換 (-) W0608 : 負数になりえる整数式を符号無し型に変換 (-) W0635 : printf の変換指定子と対応する実引数の型が不一致 (-) W0639 : scanf の変換指定子と対応する実引数の型が不一致 (-) W0641 : 浮動小数点数型と変数ポインタ型間でキャスト (+) W0650 : シフト演算式の右オペランドが左オペランドのビット長より大きい (+) W0719 : シフト演算式の右オペランドが潜在型のビット長以上の定数 (-) W0720 : 浮動小数点数型の値が変換先の型に入りきらない (-) W0721 : 汎整数型がポインタ値を格納できない (-) W0722 : 符号付き式の値がオーバーフローする (-) W0723 : 符号付き式の値がオーバーフローするかも (-) W0727 : 列挙型にない値を使用 (-) W0728 : 列挙型の仮引数に異なる列挙型の実引数を指定 (-) W0729 : 列挙型の変数に異なる列挙型の列挙子を代入 (-) W0730 : 列挙型の戻り値として異なる列挙型の列挙子を指定 (-) W0731 : switch 文の列挙型制御式に属さない値を case 節に指定 (-) W0738 : 暗黙的に正の整数定数をより小さな符号無し型へ変換 (-) W0742 : 負の整数定数式を符号無し型に変換 (-) W0743 : 整数定数式の値が変換先の符号付き型の範囲を超える (-) W0792 : 浮動小数点数型と関数ポインタ間でキャスト (-) W0793 : 関数ポインタと変数ポインタ間でキャスト (-) W0794 : 符号付きのオペランドを左シフト (-) W1049 : 整数式の値が変換先の符号付き型の範囲を超えるかも (-) W1050 : 整数式の値が変換先の符合付き型の範囲を超える (+) W1051 : 符号無し型の算術演算結果が桁あふれする (+) W1052 : 符号無し型の算術演算結果が桁あふれするかも (-) W1054 : 列挙型変数に列挙型ではない式を代入 (-) W1055 : 列挙型の戻り値に列挙型ではない式を指定 (-) W1057 : 列挙型変数に異なる列挙型変数の値を代入 (-) W1058 : 列挙型の戻り値に異なる列挙型の式を指定 (-) W1060 : 列挙型ではない戻り値に列挙型の式を指定 (-) W1064 : 列挙型制御式を持つ switch 文に整数定数の case 節を記述 (-) W1065 : 列挙型制御式を持つ switch 文で該当列挙型に属さない列挙子を指定 本件の対応を盛り込み AdLint 2.6.2 をリリースしました。 ぜひ、アップデートをお願いいたします。 -- 矢野尾 裕 <ya...@us...> > 高瀬です. > いつもお世話になっております. > > 今度は AdLint 2.6.0 について要望が1つあります. > それは次の W0719 の警告メッセージについてです. > > 「シフト演算子の右オペランドが、潜在型のビット幅以上の定数値です。」 > > このメッセージに,警告の原因となっている潜在型の型名を加えていただくことは可 > 能でしょうか. > > > コードを直す検討をするとき,まず潜在型がどれかを推測する必要があります. > 潜在型を何ビット超えたのか,何ビットのシフトなら危険をはらまないかについて. > しかし整数拡張や潜在型のルールがややこしく,調べるのに時間がかかります. > > メッセージと一緒に潜在型の型名も出力していただけると話が簡単になりますので. > > 以上,ご検討のほどよろしくお願いいたします. |
From: Yutaka Y. <ya...@us...> - 2012-10-31 02:53:37
|
矢野尾です。 お待たせいたしました。 本件の対応を盛り込み、本日 AdLint 2.6.2 をリリースいたしました。 お手数おかけしますが、AdLint 2.6.2 にアップデートしていただき、再度ご 確認をお願いいたします。 -- 矢野尾 裕 <ya...@us...> |