2

メソッドごとの平均コード行数を計算するためのツールはありますか?

プロジェクトの総行数だけでなく、各メソッドの平均サイズを知りたいです。メソッドごとのカウントにより、各メソッドがどれほど単純かを測定できます。

これは、ビルド プロセスの一部として計算され、ダッシュボードに表示されます。各メソッドの平均サイズが増加しているかどうかを確認できるという考えです。これにより、コードの複雑さが増し、リファクタリングを検討する必要がある可能性が示されます。

4

5 に答える 5

1

プロジェクト全体で再帰的な「for(i in this)」検索を実行し、オブジェクト (i) が関数の場合は、「test.toString().split("\n").length」を呼び出します。これは、関数内の改行の数をカウントします。関数ではなくオブジェクトの場合は、そのオブジェクトでこの関数を呼び出します。また、見つかった関数の数を数え、改行の総数を関数の総数で割ると、平均が得られます。

編集

function calculateMethodSize(obj){
  var fcount = 0;
  var fsize = 0;
  for(i in obj){
    if(obj[i] instanceof Function){
      fcount++;
      fsize += obj[i].toString().split(";\n").length;
    }else if(obj[i] instanceof Object){
      var ret = calculateMethodSize(obj[i]);
      fcount += ret.fcount;
      fsize += ret.fsize;
    }
  }
  return {fsize:fsize, fcount:fcount};
}
var data = calculateMethodSize(this);
var average = data.fsize / data.fcount;

ただし、このコードの実行には注意してください。私が行ったように、これで実行すると、スタックオーバーフローが発生する可能性があります (私はそうしました)。

于 2008-09-19T10:03:48.330 に答える
1

short fast and dirty : ";" を grep して、行数を数えます。これにより、ステートメント数の見積もりが得られます。

于 2008-09-19T09:35:31.780 に答える
0

おそらく他のメトリックも手がかりにしたいと思うでしょう。行数を数える方法は、「function」キーワードまたは中括弧なしで定義された関数に直面して鳴らないように注意してください。実際の例:

var negate = bind1st(compose, not);

(ここでnegateは、bind1st、compose、notの各関数から構築された関数です)

于 2009-11-16T04:23:44.900 に答える
0

行を「\n」または「;」として定義し、

次のような単純なアルゴリズムを試すことができます。

FOR each line in a javascript file (or chunk of text)
    IF the line starts with "function " THEN
        PUSH the first left-curly brace you find onto a stack
        WHILE the stack is non-empty
            PUSH any left-curly braces in the current line
            POP any left-curly braces when you encounter a right-curly brace
            Increment your line-count by 1
            Increment your line counter (as mentioned in the FOR loop above)
        END WHILE
        Store your total lines for this function            
     ELSE
         //ignore the line because it's probably a global var or blank
     END IF
END FOR

これを自動的に実行できるツールを知りません。でも、自分で作ってみるのも楽しそうですね。

于 2008-09-19T14:40:23.677 に答える
0

それができるかどうかはわかりませんが、前回の投稿の後、循環的複雑度とは何かを検索して、Code Analyzerを指す関連するウィキペディアのページに移動しました。そこで彼らは言います:

HTML または JSP ファイルをカウントする場合、<script> タグ内に埋め込まれた javascript および vbscript コードの LoC を正しくカウントします。

このカウントがメソッドごとにディスパッチされるかどうかはわかりませんが、一見の価値があるかもしれません (無料のツールです)。

于 2008-09-19T09:33:51.800 に答える