07

05

コメント

HEW(R8Cコンパイラ)でadlintを使ってみた

こんにちは、ビーコンの菅原です。

Adlintを使ってみたので、記事にします。

AdLint は、オージス総研が提供している、オープンソースで無償のソースコード静的解析ツールです。

オージス総研 adlint HP
http://www.ogis-ri.co.jp/product/1199335_6798.html

オージス総研のHPでは次のように案内されています。

オープンソースで無償のソースコード静的解析ツール
AdLint - Advanced Lint - は、オープンソースで無償のソースコード静的解析ツールです。コンパイラ等では検出できないソースコード内の潜在的な不具合の可能性を指摘し、定量的な品質メトリクスを出力します。 AdLint の活用は、ソフトウェア製品をより安全で品質の高い状態へ改良することを支援します。


ということです。
静的解析ツールを普通に購入すると数十万円かかります。
オープンソースとして公開されているので、是非利用したいところです。

説明書通りに実行すれば大体OKですが、R8Cのコンパイラで引っかかったところを二点報告します。


(1)adlint_traiits.yml

# Project specific additional include paths.
# Ex.
# include_path:
# - "include/foo"
# - "../include/bar"
# - "/opt/baz/include"
include_path:
- "C:/Program Files/Renesas/Hew_002/Tools/Renesas/nc30wa/v545r01/inc30"

ここで、コンパイラのインクルードファイルのパスを指定します。
私の開発環境だと

C:/Program Files/Renesas/Hew_002/Tools/Renesas/nc30wa/v545r01/inc30

でしたが、バージョンやインストールした条件で変わりますので、各自調べて書き込んでください。


(2)adlint_pint.h

#define _far
#define _near
#define __interrupt


と定義して、コンパイラ独自の予約語をキャンセルします。
これをしないと、独自の予約語に引っ掛かり解析を停止してしまいます。

これで adlint_all.bat を実行するとどんどん解析してきます。

adlint_gamen.png
といってもノートパソコンではけっこう時間がかかりました。


使った感想として
コメントとして // は警告を報告されます。
私は多用しているので、これが大量発生します。
さらに、日本語でコメントしていて、これについても警告されます。


つぎに、メーカ提供のヘッダファイルではレジスタ定義のために#pragmaを大量に使っていますが、これもいちいち警告を出します。

そんなわけで、コードの警告のほとんどが // と #pragma に関することとなっていました。



こういうツールを使うと、C言語の得意技である一行に複数の意味を持たせた「粋」な書き方ができなくなってしまいます。

その昔はメモリもすくなく、処理速度が遅く、画面も小さかったので、そういう書き方が良かったのですが、今の時代はなんでもパワーがあるので、ダサくても確実なコードにするべきですね。

長くプログラマーをやっていると、自分が慣れている記述をしてしまいがちですが、解析ツールでチェックすることにより、安全でメンテナンス性の良いコードにすることができます。


報告ファイルは CSV形式でしたが、エディタのマクロを作り、タグジャンプできる形式にしました

◆元のファイル
W,cstartdef.h,14,32,W0511,C++ コメント `//' が使われています。
W,cstartdef.h,15,1,W0511,C++ コメント `//' が使われています。
W,cstartdef.h,15,1,W0576,基本ソース文字集合に含まれない文字が、ソースファイル `cstartdef.h' のコメントの中で使われています。

◆変換したファイル
cstartdef.h(14),W,32,W0511,C++ コメント `//' が使われています。
cstartdef.h(15),W,1,W0511,C++ コメント `//' が使われています。
cstartdef.h(15),W,1,W0576,基本ソース文字集合に含まれない文字が、ソースファイル `cstartdef.h' のコメントの中で使われています。


いろいろなオプションについては、今後検討しましょうというスタンスのようです。

プロフィール

ビーコン菅原

Author:ビーコン菅原
組み込み始めてそろそろ25年。マイコンとか電子回路が大好きなんですよー

メールフォーム

名前:
メール:
件名:
本文:

Twitter

カウンター(UV)

月別アーカイブ

05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  03  02  01  12  11  10  09  07  05  02  12  10  09  08  07  05  04  03  11  09  08  07  06  03  02  01  12  11  10  09  08  07  06  05  04  02  12  11  10  08  02  12 

QRコード

QRコード

Designed by

Ad