演習 1.2: コード・レビューの実行と即時修正の適用
この演習では、『演習 1.1: 必要なリソースのインポート』を完了していることを想定としています。この演習では、最初にユーザー・シナリオを読みます。次に、ユーザー・シナリオで説明しているソフトウェア開発者の役割を想定します。
ユーザー・シナリオ
広い地域に分散した大規模な開発者のグループが、新しいソフトウェア・アプリケーションをコーディングしています。開発者が定期的にコード・レビューを実行してコードに問題がないことを確認することが重要です。
1 人の開発者がコード・レビューを実行し、自分の一般的なコーディング方法を確認するとします。新規に作成したコードをレビューしていくつかの領域でベスト・プラクティスに従っているかどうかを評価するには、開発者は、自動即時コード・レビューを実行します。このレビューは、提供されるルールのうち、いくつかのカテゴリーをコードに適用します。ルールの各カテゴリーでは、特定の領域 (パフォーマンスなど) についてコードの品質を検査します。
コード・レビューが完了したら、検出結果のリストを確認します。各検出結果は、適用したルールに厳密に従っていないコードのストリングを表します。検出結果には即時修正が適用可能なものもあるため、開発者は、自動化された解決策を適用して問題をただちに訂正します。
演習の最初の部分では、以下の作業を行ってコード・レビューを実行します。
- 実行するコード・レビューを選択します。
- コード・レビューで適用するルールを表示します。
- レビューを実行するコードを選択します。
- コード・レビューを実行します。
- コード・レビューの検出結果を表示します。
- 検出結果を選択し、以下の情報を表示します。
次に、コード・レビューの特定の検出結果に即時修正を適用するために、以下の作業を行います。
- 検出結果に対して即時修正が使用可能かを確認します。
- 即時修正でコードに対して行われる変更のリストを確認します。
- 即時修正を適用する前に、元のコードとリファクタリング後のコードをプレビューします。
- 即時修正を適用し、コードをリファクタリングします。
- 即時修正を適用した後の状態を確認します。
演習
コード・レビューの選択
即時コード・レビューを選択するには、以下のようにします。
- 「コード・レビュー」ビューのツールバーで、「ルールの管理」アイコン
をクリックします。

- 「コード・レビューの選択」リストで、「即時コード・レビュー」をクリックします。選択したコード・レビューのルールのフォルダーが表示されます (以下の画面取りを参照してください)。

- コード・レビューで適用するルールを表示するために、「J2SE ベスト・プラクティス」フォルダーを展開し、「ヌル」サブフォルダーを展開します。「ヌル」フォルダーに、ルールと問題の重大度レベルが表示されます (以下の画面取りを参照してください)。

参考のために、重大度レベル・アイコンを以下の図に示します。

- 「OK」をクリックし、「即時コード・レビュー」を選択します。
レビューするコード・ベースの選択
レビューするコード・ベースとしてプロジェクトを選択するには、以下のようにします。
- 「コード・レビュー」ビューのツールバーで、「レビュー」アイコン (
) > 「プロジェクト」 > 「CodeReview_Examples のレビュー」をクリックします。
コード・レビューの実行
レビューするコード・ベースを選択したら、コード・レビューを実行します。ビューの右下隅にある進行状況表示バーを確認すると、状況が分かります。
コード・レビューでの検出結果の表示
コード・レビューが完了すると、「コード・レビュー」ビューに検出結果が表示されます (以下の画面取りを参照してください)。

「コード・レビュー」ビューには、以下の情報が表示されます。
- コード・レビューの統計: 検出結果の上の行に、最後に行ったコード・レビューに関する情報 (タイプ、有効範囲、含まれるルールとファイルの数、検出結果の数と重大度) が表示されます。
- コード・レビューでの検出結果: コード・レビューでの検出結果は、「コード・レビュー」ビューのフォルダーにリストされます。各フォルダー名には、適用したルールのカテゴリーと検出結果の数が示されます。
コード・レビューでの検出結果に関する詳細情報の取得
コード・レビューでの検出結果に関する詳細情報を取得するには、以下のようにします。
- 「コード・レビュー」ビューで、「J2SE ベスト・プラクティス: 比較」フォルダーにスクロールします。次に、フォルダーを展開してフォルダー内の検出結果を表示します (以下の画面取りを参照してください)。

- 最初の検出結果は EqualsHashCode_Example.java で始まっています。以下のように適用されたルールがその後に示されます。
java.lang.Object.equals() と java.lang.Object.hashCode() の両方を常に指定変更する
- 最初の検出結果をダブルクリックします。詳細が 2 箇所に表示されます。概要および画面取りは以下のとおりです。
- ソース・コード: 検出されたコードが表示され、その正確な場所が強調表示されます。
- 「コード・レビューの詳細」ビュー: 検出結果を詳細に説明し、訂正するための例と解決策を提示します。

即時修正がある検出結果の選択
「ベスト・プラクティス: 比較」フォルダーの検出結果には、いずれも即時修正があることがアイコンで分かります。参考のために、即時修正アイコンを以下の図に示します。

- リストの最初の検出結果を右マウス・ボタンでクリックします (次の画面取りを参照してください)。
- 「即時修正」ポップアップ・メニューの選択項目は、解決策によって異なります。ここで選択した検出結果では、修正内容は hashCode および equals の実装です。

- 「即時修正: hashCode および equals の実装」をクリックします。
即時修正の適用
ここで選択した検出結果に対する即時修正は、hashCode および equals の実装です。
検出結果に対する即時修正を確認して適用するには、以下のようにします。
- コードの横並びビューを表示します (以下の画面取りを参照してください)。元のソース・コードは左側に、即時修正によって作成されるリファクタリング後のソース・コードは右側に表示されます。即時修正の適用を選択すると、強調表示されているコードに欠落している行が付加されます。

- 「実行される変更」セクションでリストを展開し、即時修正による変更内容および変更方法を確認します (以下の画面取りを参照してください)。

- リストの変更を検討します。次に「OK」をクリックし、リストで選択したすべての変更に即時修正を適用します。
- 即時修正を適用すると、解決した検出結果の横にチェックマークが表示されます。

チェックマークの横には以下の情報が表示されます。
- 適用した即時修正
- ソース・コード内で結果が検出された場所の行番号
- 従っていなかったコード・レビューのルール
『演習: コード・レビューの実行と即時修正の適用』は完了です。
演習のまとめ
『演習: コード・レビューの実行と即時修正の適用』の作業をすべて完了しました。
コード・レビューを実行するための作業
このコード・レビューを実行するときには、以下の作業を行いました。
- 実行するコード・レビューを選択しました。
- コード・レビューで適用するルールを表示しました。
- レビューを実行するコードの本体を選択しました。
- コード・レビューを実行しました。
- コード・レビューの検出結果を表示しました。
- 検出結果を選択し、以下の情報を表示しました。
即時修正を適用するための作業
即時修正を適用するときには、次の一連の作業を行いました。
- 検出結果に対して即時修正が使用可能かを確認しました。
- 即時修正でコードに対して行われる変更のリストを確認しました。
- 元のコードとリファクタリング後のコードをプレビューしました。
- 即時修正を適用し、コードをリファクタリングしました。
- 即時修正を適用したことを確認しました。
コード・レビュー機能の活用
コード・レビューを事前に実行することにより、早期に検出結果を分析できます。つまり、以下の問題が発生する前に早期に対策をとることができます。
- アプリケーションのパフォーマンス、保守、スケーラビリティーへの影響
- 企業の資金、時間、リソースにおけるコストの上昇
即時修正機能の活用
提供されている即時修正を適用することにより、よくある検出結果を自動的に解決できます。即時修正は以下の方法で支援を行います。
- 毎回一貫した方法で問題を訂正する
- コーディングが不要になり、バグを修正するときの時間が短縮される
『要約: コード・レビューの実行』に記載されている学習目標を確認してチュートリアルを終了します。