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なんか使ってるのなんか見たことない。
古くてもCVS。Subversionが基本でしょう。最近なんかはGit等の分散レポジトリが良いのかな。
コードのメトリックスを求めるツール、行数測定ツール
これは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ぐらいしか使ったことないし、スレッド使うとなんか動作が怪しいし。
LispやRubyなんかのようにデフォルトでついている言語だったら気にしなくても良いのが羨ましい。
Cプログラム検定器(lint)
splintというlintの後継?ソフトがあります。
細かくチェックしすぎてうるさいぐらい。
Cソースを解読不能にするツール、(シュレッダー)、"選択的"プリプロセッサー、他のプログラム言語からの変換ツール
これはさすがに使っていない。
このあたりは特殊な状況の人しか使わないはず。
ソースの解読化ってどういう時に使うんだろうか?
裏技として、下手な人に作らせれば難読化ができますよ。
"選択的"プリプロセッサー使う必要があるのであればソースがかなり汚い状態。
色々見直しが必要かと。
他のプログラム言語からの変換ツールってgccも含むといえば含むかも。Javaとかも。
そもそもコンパイラってそういうものだしね。
まあ、ここで言っているのはFortranをCに変換とからしいけど。
そんなことするよりも作り直した方が良いような気がするけどね。