Weiβlogy

Logo

作ったもの、気づいたこと、試したこと。元エンジニアの視点で技術も日常もつづる雑多ブログ「Weiβlogy」。

View the Project on GitHub weizlogy/blog

2016/07/29

ステップカウンターのあるべき姿を考察する

ステップカウンターとは?

LOCを計測するツールです。LOCはLines Of Codeの略で、プログラムの規模として扱います。

空行(改行など空白だけの行)やコメント行(コメントと空白だけの行)は除く、2つの命令が書かれた行は2行と数える、括弧だけの行を除くなどの換算をした行数を論理LOC (logical LOC) といい、通常はこちらを使う。

– https://ja.wikipedia.org/wiki/LOC

2つの命令が書かれた行は2行と数える、括弧だけの行を除くなどの換算してますか?

世にあるステップカウンターは、有効行(実行行)、コメント行、空白行の3種を見ていることが多く、高度な換算はされていないようです。

そこで、本来あるべきステップカウンターを、以下の考察に基づき鋭意作成中です。

詳細はこちらをご覧ください。

本来あるべきステップカウンターの想定仕様概要

本来あるべきステップカウンターの想定仕様詳細

2つの命令が書かれた行は2行と数える

C言語系統は命令の終端に”;”が必要な言語使用のため、その終端記号(または文字)を数えれば良い。また、IF文では”{“、SWITCH-CASE文では”{“と”:”に着目することで命令を計測します。

ただし、FOR文は3式で1セットの命令であるため、FOR文中の終端記号は無視しなければいけません。 VBやRubyのような言語、HTMLのようなタグが構成要素の場合は検討中です。

括弧だけの行を除く

C言語系統はブロックの終端記号”}”がありますが、1命令のセットであるため、開始記号”{“とどちらか一方を測定対象とすべきです。 VBやRubyのような言語の”END”キーワードも同様です。

ディレクティブは考慮が必要

Javaのimport文、C#のusingディレクティブは、パッケージ名を省略するためだけに存在するもので、記載の有無がプログラムの動作に影響を与えませんので、命令とは位置付け異なります。

C言語系統のプリプロセッサーディレクティブは微妙ですが、動作に影響を与えるものもあるため、命令と考えます。

ただし、”#endif”、”#region”、”#endregion”は非命令とし計測しません。

C言語の#includeは、必須であることを除き、C#のusingディレクティブ同様、非命令とします。

考察は続きます。。。