Fortranドキュメント生成プログラムFordの導入と設定

日紀

Fortranのプログラムのモジュールの依存関係を可視化したかったので、doxygenを使おうかと思いたった。しかしdoxygenをうまく使えなかったので、そのかわりにFordを使うことにした。結論からいうととても役に立つプログラムであることがわかった。とくにネットワークのグラフがわかりやすい。余談だがFordは有名な自動車製造業者なので検索性が低いのが曲者である。

導入

だいたいこの記事を読めばわかる。この記事と自分の環境が異なるところがあるので、実際にやった内容をメモする。

使っている環境はWSL2上のUbuntu 22.04で、Pythonはvenv+pyenvである。venvに入ってからインストールは下記のとおり。

$ pip install ford

グラフを描くにはgraphvizのインストールが必要。

$ sudo apt install graphviz

実行

実行するには設定ファイルが必要である。たとえば名前をsettings.mdとして下記のように設定する。

src_dir: ./src
output_dir: ./api-doc
include: ./include
project: sample_project
summary: something funny
author: salamann
license: by-nc
preprocess: False
graph: true
fixed_length_limit: False

参考記事に足しているのは3行。

  • preprocess: これがないとエラーになったので追加
  • graph: graphvizで依存関係のグラフを描くために追加
  • fixed_length_limit: f77の場合、72列を通常超えてはいけないが、実際に超えている場合にこれを指定しないとエラーとなる。
  • include: インクルードファイルが入っている別フォルダがある場合に足す

たとえば下記で実行できる。

$ python -m ford ./settings.md

注意事項

実行してみると、コードによっては実行が途中で止まってしまったり、ドキュメントが生成されなかったりする。たとえばひっかかった点は次のとおり。

Subroutineの名前にスペースが含まれている

Subroutine名にスペースが含まれているとドキュメントが生成されない。ifortのコンパイルはなぜか通るが本来のルールからは外れてそうなので直したほうが素直。

文字コードがSJIS

SJISで書かれていると通らなかった。これは日本語がコード内に含まれている場合かもしれない。その場合は、次のコードで変換できる。

$ iconv hoge.f -f sjis -t utf8
空のファイルをIncludeしている

コメントだけのファイルをIncludeしていると通らなかった。コメントだけのファイルをなぜIncludeしないといけないのかは謎だが、Includeしなければ通る。

コメントの種類

行内にコメントを書きたい場合、!*と書いてあると通らない。これは!にすれば通る。

タブ

行頭のスペース6個の替わりにタブを使うと通らない。スペース6個に変える。

コメント