循環的複雑度は価値のある指標ですが、メンテナンスが難しいコードを特定するには不十分なツールであることがわかります。特に、特定のタイプのコード (パーサーなど) を強調するだけで、難しい再帰、スレッド化、結合の問題、および定義されている多くのアンチパターンを見落としていることがよくあります。
問題のある Java コードを特定するために利用できる他のツールは何ですか?
メソッド レベルの問題識別に優れていると思われる PMD と FindBugs を既に使用していることに注意してください。
循環的複雑度は価値のある指標ですが、メンテナンスが難しいコードを特定するには不十分なツールであることがわかります。特に、特定のタイプのコード (パーサーなど) を強調するだけで、難しい再帰、スレッド化、結合の問題、および定義されている多くのアンチパターンを見落としていることがよくあります。
問題のある Java コードを特定するために利用できる他のツールは何ですか?
メソッド レベルの問題識別に優れていると思われる PMD と FindBugs を既に使用していることに注意してください。
私の経験では、コードの保守性を検討する際の最も重要な指標は次のとおりです。
他の人が作成したコードを調べる場合、動的な手法を含めると役立つことがよくあります。プロファイラー/コード カバレッジ ツールを使用して一般的な使用シナリオを実行するだけで、次のことがわかります。
プロファイラー、コード カバレッジ、メトリクス ツールなどの通常の容疑者は、通常、これらの評価を行うために必要なデータを取得するのに役立ちます。
Google Testability Explorerは、たとえば、デザインの悪臭であるシングルトンやその他の静的なものをチェックします。Metricsは、人類に知られているほぼすべてのコードメトリックを測定するEclipseプラグインです。私は両方を使用し、簡単に推奨できます。
私はそれを使用したことはありませんが、これはかなり興味深く有望であることがわかりました。
http://erik.doernenburg.com/2008/11/how-toxic-is-your-code/
そして、私はこれを使用しましたが、依存関係の素晴らしい視覚化のため、非常に役立つことがわかりました
http://www.headwaysoftware.com/products/structure101/index.php
ツールNDepend for .NET コードを使用すると、循環的複雑性、ネストの深さ、メソッドの結合の欠如、テストによるカバレッジなどのコード メトリックを含む、コードの複雑さの多くの側面を分析できます。
...依存関係の分析を含め、LINQ クエリ (CQLinq) を介したコード ルールを含め、質問、コードの複雑さ、およびルールの記述に特化しています。約200 のデフォルト Code Rulesが用意されています。それらは、 Singletonのようなアンチパターン、スレッド化の問題の検出、 UI レイヤーが直接 DB タイプを使用してはならないなどのカップリングの問題の検出に関係しています...
しばらく前に、コードの複雑さのいくつかの側面をまとめた記事を書きました。