Menu

解析時に、使用実績のあるインクルードファイルで構文エラー検知

Anonymous
2012-06-25
2012-06-25
  • Anonymous

    Anonymous - 2012-06-25

    動作確認のため、稼働中のプログラム(C言語)を、adlintize、make verbose-allコマンドにて解析を実行しましたが、msg.csvファイルに下記エラーが出力されました。

    E,/usr/include/gconv.h,72,24,E0008,"トークン `, size_t' で構文エラーを検知しました。

    上記インクルードファイルは、初期(デフォルトで)インストールされているものであり、構文に問題はないと思われます。
    adlintの不具合でしょうか?
    OSは、Red Hat Enterprise Linux Server release 5 です。

     
    • Yutaka Yanoh

      Yutaka Yanoh - 2012-06-25

      お問い合わせありがとうございます。

      現状の adlintize コマンド (バージョン 1.12.0) がサポートしている i686-linux-gcc_4.5.1 テンプレートは、Fedora 14 上の GCC 4.5.1 に向けて作成したものです。
      おそらく、このテンプレートの内容をそのまま RHEL 5 上で使用できないことが考えられます。

      下記の手順で、adlintize コマンドにプリセットされた i686-linux-gcc_4.5.1 テンプレートを使用せずに、ユーザー独自の環境設定を行ってみてください。

      1. gcc コマンドが事前定義するマクロと、ヘッダのサーチパスを調査
      
         % touch a.c
         % gcc -E -dM -fsyntax-only -v a.c 1>a.h 2>a.log
      
      2. adlintize で作成した adlint_cinit.h ファイルを a.h の内容で上書き
      
         % cp a.h path/to/adlint_cinit.h
      
      3. adlintize で作成した adlint_traits.yml ファイルを編集
      
         a.log 中の下記のように #include <...> のサーチパスを確認し、adlint_traits.yml 
         compiler_traits:include_path 項目を修正します。
      
         % cat a.log
         ...snip...
         #include <...> の探索はここから始まります:
          /usr/local/include
          /usr/lib/gcc/i686-redhat-linux/4.5.1/include
          /usr/include
         探索リストの終わり
         ...snip...
      
         この場合、adlint_traits.yml ファイルの compiler_traits セクション内の include_path
         項目を下記のように編集してください。
      
         compiler_traits:
         ...snip...
           include_path:
             - "/usr/local/include"
             - "/usr/lib/gcc/i686-redhat-linux/4.5.1/include"
             - "/usr/include"
         ...snip...
      
         include_path 項目は project_traits セクションにも存在しますが、
         こちらは変更しないよう注意してください。
      

      また、上記で問題が解決できましたら、手順の 1 で作成した a.h、a.log ファイルを頂ければ、今後のリリースで RHEL 5 用のテンプレートを adlintize コマンドにプリセットすることも可能です。ご協力お願いいたします。

       

Anonymous
Anonymous

Add attachments
Cancel