Programing Tool

CFAQ 18.1のようなツールってある程度以上(規模とか腕とか)になると必要になってくる。
けどこのリストって古いので普段自分が使っているのをメモ。
Linux用なのでUnixだったら多分使えるけどWindowsは辛いかも(Cygwinとかで代用できる?)

ソフトのリスト

目的 ソフト
相互参照を生成するツール cflow,Doxygen + Graphviz
整形ツール/プリティプリンター GNU indent
改訂履歴管理、構成管理ツール CVS,Subversion,Git
Cソースを解読不能にするツール、(シュレッダー) 使っていない
makeコマンドの依存関係を作り出すツール makedepend, gcc -M
コードのメトリックスを求めるツール cccc
行数測定ツール cccc
プロトタイプ生成ツール cproto
mallocの問題を追跡するツール gdb,valgrind,memwatch
"選択的"プリプロセッサ 使っていない
他のプログラム言語からの変換ツール 使っていない
Cプログラム検定器(lint) splint
Cコンパイラそのもの gcc

相互参照を生成するツール

Doxygenは基本的にソースからのドキュメント作成用のツールですが、Graphvizと組み合わせるとcallグラフも出力してくれる。
まあある程度時間が掛かるのが難点かな。cflowも時々使う。

整形ツール/プリティプリンター

これはGNU indentで充分です。

改訂履歴管理、構成管理ツール

CFAQの方は明らかに古い。今時RCS、SCCSなんか使ってるのなんか見たことない。
古くてもCVSSubversionが基本でしょう。最近なんかはGit等の分散レポジトリが良いのかな。

makeコマンドの依存関係を作り出すツール

これは未だにmakedepend、gcc -Mですね。ccからgccに変わったぐらいかな。

コードのメトリックスを求めるツール、行数測定ツール

これはccccがお勧め。コード行だけでなく、コメント行も求めてくれる。
メトリックスは出力ファイルのMVGがそれっぽい。

プロトタイプ生成ツール

cprotoで充分。

mallocの問題を追跡するツール

gdbで真面目に追うか、valgrindを使えばいい。
ただクロスな環境(特に組み込み系は)では上記ツールが使えないことも。
そこで見つけたのがmemwatch。
これはターゲットのソースコードと一緒にコンパイルして使うツールです。
http://memwatch.sourceforge.net/ からダウンロードする。


使い方は"memwatch.h"をincludeする。
test.cというソースで使いたいのならば

gcc -o test -DMEMWATCH -DMEMWATCH_STDIO test.c memwatch.c

コンパイルすればいい。
あとは実際に問題が出ればログに吐いてくれる。


GCを使った方が楽かも。
ただ、CでGCというとBoehm GCぐらいしか使ったことないし、スレッド使うとなんか動作が怪しいし。
LispRubyなんかのようにデフォルトでついている言語だったら気にしなくても良いのが羨ましい。

Cプログラム検定器(lint)

splintというlintの後継?ソフトがあります。
細かくチェックしすぎてうるさいぐらい。

Cコンパイラそのもの

gcc。説明は不要でしょう。

Cソースを解読不能にするツール、(シュレッダー)、"選択的"プリプロセッサー、他のプログラム言語からの変換ツール

これはさすがに使っていない。
このあたりは特殊な状況の人しか使わないはず。


ソースの解読化ってどういう時に使うんだろうか?
裏技として、下手な人に作らせれば難読化ができますよ。



"選択的"プリプロセッサー使う必要があるのであればソースがかなり汚い状態。
色々見直しが必要かと。


他のプログラム言語からの変換ツールってgccも含むといえば含むかも。Javaとかも。
そもそもコンパイラってそういうものだしね。
まあ、ここで言っているのはFortranをCに変換とからしいけど。
そんなことするよりも作り直した方が良いような気がするけどね。