6

phplocPHP プロジェクト (オープン ソース) の 1 つに対して実行すると、この出力が表示されます。

phploc 1.6.4 by Sebastian Bergmann.

Directories:                                          3
Files:                                               33

Lines of Code (LOC):                               2358
  Cyclomatic Complexity / Lines of Code:           0.08
Comment Lines of Code (CLOC):                       903
Non-Comment Lines of Code (NCLOC):                 1455

Namespaces:                                           0
Interfaces:                                           3
Classes:                                             28
  Abstract:                                           1 (3.57%)
  Concrete:                                          27 (96.43%)
  Average Class Length (NCLOC):                      49
Methods:                                            149
  Scope:
    Non-Static:                                     128 (85.91%)
    Static:                                          21 (14.09%)
  Visibility:
    Public:                                         103 (69.13%)
    Non-Public:                                      46 (30.87%)
  Average Method Length (NCLOC):                      9
  Cyclomatic Complexity / Number of Methods:       1.69

Anonymous Functions:                                  0
Functions:                                            3

Constants:                                            9
  Global constants:                                   0
  Class constants:                                    9

この静的分析で、このコードベースが良いか悪いかをどのように判断しますか? または、どれくらいよく書かれているか、または悪く書かれていますか?

  1. 循環的複雑度が低すぎるか高すぎる場合は良いですか?
  2. 抽象クラスを持つこと3.57%は良いことですか、それとも悪いことですか?
  3. 14.09%静的メソッド。OOPコードベースで低くする必要がありますか?
  4. 名前空間は使用されていません。それは良いことですか、それとも悪いことですか?

最後の質問phploc の出力を使用してコードベースを分析するにはどうすればよいですか?

4

1 に答える 1

10

循環的複雑度が低いことは良いことですが、高いことは悪いことです。静力学は単体テストが難しいですが、(一部の人々はそれらを評価と同じくらい悪いと考えていますが)それらは目的を果たします。phplocの他の測定値は、解釈の対象となります。

ただし、実際には、 pdependphpmdなどの他のツールと一緒にphplocを使用する必要があります。特にpdependサイトでは、使用される分析の多くが説明されており、phpmdの出力はかなり自明です。

編集

比較として、私が現在取り組んでいるコード(https://github.com/MarkBaker/PHPGeodetic):抽象/具象クラスのレベルにはかなり満足していますが、少し高くなる可能性があります。循環的複雑度が高く、これらの数値を少し歪めるのに十分な方法が1つありますが、それは簡単に分解するのに役立ちません。そして、いくつかのより長いメソッド(ただし、phpmd警告をトリガーするのに十分な長さではありません)。

Lines of Code (LOC):                               4003
  Cyclomatic Complexity / Lines of Code:           0.07
Comment Lines of Code (CLOC):                      1580
Non-Comment Lines of Code (NCLOC):                 2423

Namespaces:                                           0
Interfaces:                                           1
Traits:                                               0
Classes:                                             25
  Abstract:                                           4 (16.00%)
  Concrete:                                          21 (84.00%)
  Average Class Length (NCLOC):                     103
Methods:                                            160
  Scope:
    Non-Static:                                     129 (80.62%)
    Static:                                          31 (19.38%)
  Visibility:
    Public:                                         131 (81.88%)
    Non-Public:                                      29 (18.12%)
  Average Method Length (NCLOC):                     16
  Cyclomatic Complexity / Number of Methods:       2.12

Anonymous Functions:                                  2
Functions:                                            0

Constants:                                           66
  Global constants:                                   0
  Class constants:                                   66

全体として、私はパブリック/プライベート、非静的/静的、およびコンクリート/抽象の80:20の法則を使用したいと思っています。しかし、実際にコーディングしているものに大きく依存します

おそらくもっと重要なのは循環的複雑度/メソッドの数です...私はその数字が高すぎるのは好きではありません。しかし、平均が2.5を超える場合は、phpmdの統計をさらに詳しく調べます。

于 2012-12-18T16:51:50.867 に答える