19
18

More than 5 years have passed since last update.

CodePro AnalytiXを使ってネストが深いメソッドや類似コードを発見して、ざくざくリファクタリングしよう

Posted at

EclipseのCodePro AnalytiXというプラグインがあります。

できることは

  1. パフォーマンスや保守性などに問題がある個所を発見
  2. 各種メトリクス計測
  3. 類似コード検索

リファクタリングしたい箇所をざくざく発見して
リファクタリングしたい欲求を高めることができたので紹介します。
他にも

  • テストコードの自動生成
  • 依存関係の図示
  • スペルチェック

といった機能があるらしいです。

パフォーマンスなどに問題がある個所を教えてもらう

プラグインをインストールしたら、
プロジェクト右クリック -> CodePro Tools -> Audit Code
で実行できます。
結果は

audit-code.png

というように表示されます。モザイク部分はファイル名です。
上の画像の左半分は、指摘事項と、対応箇所です。
右半分は、なぜそんな指摘をするのかの理由の説明になっています。

  • 長さが1のStringはcharにしよう
  • try-catchのcatch節で何もしていない
  • 不要なcastがある
  • 配列をコピーするときにはSystem#arraycopy()を使おう

といったことを指摘されています。

指摘ルールのプリセットも用意されています。
「Effective Java」というルールでは、「Effective Java」という書籍で挙げられている原則を守っているかどうかのチェックができます。
「Effective Java」は読んだことがあるのにもかかわらず、自分で指摘事項に気が付かないところが結構あったので、軽くショックを受けました。

ルールは、設定画面から自分で設定することもできます。
audit-code-rule-edit.png

各種メトリクス計測

プロジェクト右クリック-> CodePro Tools -> Compute Metrics
metrics.png
という具合に結果がわかります。
上の例では

  • パッケージやクラスごとのネストの深さの平均
  • サイクロマチック複雑度
  • パッケージやクラスごとのメソッド数・フィールド数・メソッドの引数の数の平均・合計

などがわかります。
上の例だと、パッケージごとのフィールドの数の平均を見ています。
プロジェクトの平均が3.48ですが、特定のクラスのフィールドの数が19で、平均を押し上げていることがわかりました。
特定のクラスだけ突出しているのは、ちょっと怪しいですよね。
いわゆるServiceなど、ステートレスに保ちたいクラスがステートの制限を受けて汚れていくのを発見できたりします。

30個くらいの測定項目を、それぞれ、測定ON/OFFできます。

やたらと引数が多いメソッドを発見したり、やたらと行数が長いメソッドを発見したりできます。

類似コード検索

プロジェクト右クリック-> CodePro Tools -> Find Similar Code
似ているコードを探し出して、diffを取って見せてくれます。
似ているコードはこのように比較して見ることができます。
similar-code.png
あとで共通化しようとして忘れていたコードを、発見できたりします。

インストール方法

普通のプラグインと同じです。
かつてはある企業が開発して有償で販売していたそうです。
今では、Googleが無償で配布しています。
公式サイトの説明はここです
実は開発が停止しているようですが Eclipse Luna では便利に使えています。

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18