沢山あるルールの中でどれを使えばよいか判らない
コードレビューには標準で817個のルールが用意されており、用途に応じて使い分けることが出来るように、複数の切り口で分類されています。
個々のルールに対する切り口は、以下のルールマネージャのルール設定画面のように確認できます。
一つのルールは同時に複数の分類に属することもあります。「パフォーマンスとロジック両方のセットに属するルール」「VB.NETとC# 両方の言語に属するルール」などです。
これらの分類方法を使い分けることによって効果的な解析を、効率よく行うことが可能になります。
以下に、どういう時に、どのルールを適用するか、について代表的なパターンを記述いたします。選択基準を設けるときにご参照下さい。
(A) 設定は変えずに有効に活用したい
標準設定で全て解析を行い、検出された問題点の中から修正した方が良いと思われるものだけを選んで対応します。
例えば、以下の結果画面のように、重要度でソートして、重要度が高のものだけをすべて修正します。
(B) 簡単な調整で効果的なカスタマイズを行いたい
コードレビューの解析結果表示画面において、抑制機能を使ってルールの使用を制限することができます。上記の結果画面で、抑制したいルールを選択して、+ボタンを押してください。また、オプション設定画面でルールセットを選択することもできます。
(C) 自分のプロジェクトに適したルールだけを選択したい
新規にルールセットを作成し、以下の「重要度」「ルールセット」「タイプ」「言語」の表を参考にして、選択したルールを登録することで、必要なチェックを効率よく行うことができます。
重要度
| 内容 | 件数 | 判断例 |
高 | システムに重大な問題を引き起こす可能性が高い | 134 | 可能な限り修正する |
中 | システムに中度の問題を引き起こす可能性がある | 484 | なるべく修正する |
低 | システムに軽度の問題を引き起こす可能性がある | 127 | 可能であれば修正する |
警告 | 特定のプログラミングの問題に注意を促す | 72 | 参考程度に参照 |
ルールセット
| 内容 | 件数 | 判断例 |
すべてのルール | 全てのルール | 817 | 全てのルールを含む特別なルールセット |
日付形式のルール | 日付型の使用方法ルール | 13 | 日付型を使用する場合に使用 |
デザイン タイム プロパティ | ボタン等のコンポーネントプロパティに対するチェック | 73 | 画面設計をWindows標準に合わせる場合に使用 |
国際化のルール | 文字を扱うライブラリ等の使用方法ルール | 11 | 複数の国でシステムを開発・使用する場合に使用 |
ロジックのルール | .NETにおける開発全般のルール | 61 | 重要な内容なので、必ずご使用下さい |
ネーミングガイドライン | クラス名、メソッド名、変数名等に関する命名規則 | 7 | .NETガイドラインに沿って名前を付ける場合に使用 |
パフォーマンスのルール | パフォーマンスに問題を起こす可能性をチェック | 30 | 重要な内容なので、必ずご使用下さい |
Webアプリケーション | Webアプリケーション専用のルール | 33 | Webアプリケーションの場合に使用 |
デフォルト | デフォルトのルールセット | 483 | 重要度が“高”及び“中”のルールだけを集約したもの。ルールをカスタマイズする手間を省き、”すべてのルール”よりも解析にかかる時間を短縮する場合に使用 |
標準 | 保守性を向上させるための標準ルール | 19 | コーディング技法とプログラミング技術に特化したルールで保守性向上のために使用 |
セキュリティ ルール | セキュリティに関するルール | 191 | セキュリティに課題がある場合に使用 |
タイプ
| 内容 | 件数 | 判断例 |
COM相互運用性 | アンマネージコードに関する問題を指摘します。 | 3 | アンマネージコードを使用している場合に選択を検討します。 |
データベース | データベースに関する問題を指摘します。 | 2 | データベースに関する問題を検証したい場合に選択を検討します。 |
日付 | VB.NETの2000年問題の日付処理に関する問題を指摘します。 | 8 | VB.NETで2000年以前の日付の処理を行なっている場合に選択を検討します。 |
デザインタイププロパティ | GUIコントロールのプロパティに指定した値に関する問題を指摘します。 | 73 | GUIコントロールを使用している場合に選択を検討します。 |
エラー/例外処理 | エラーハンドリングや例外処理に関する問題を指摘します。 | 11 | 重要なルールが含まれるので、確認することをお勧めします。 |
ガベージコレクション | ガベージ コレクションに関する問題を指摘します。 | 16 | 重要なルールが含まれるので、確認することをお勧めします。 |
国際化 | アプリケーションの文字列や、画面の表示に関して、国際化の問題が発生する可能性がある事項を指摘します。 | 11 | アプリケーションが日本語以外のOS上で動作する可能性がある場合や、こうした環境に移植が予定されている場合には選択を検討します。 |
言語 | 言語仕様に関するルール | 0 | |
ロジック | プログラムに、論理的なミスが疑われる場合にそれを指摘します。 | 25 | 重要なルールが含まれるので、確認することをお勧めします。 |
保守性 | プログラムコードの保守を行なっていく上で問題となる可能性がある事項を指摘します。例えば、コメントがない、ネストが深すぎる等。 | 27 | プログラムコードの保守性を検証したい場合に選択を検討します。 |
パフォーマンス | プログラムの実行速度を劣化させる可能性がある問題を指摘します。 | 28 | アプリケーションの速度が遅いことが問題となる場合に選択を検討します。 |
移植性 | Webアプリケーションのポータビリティ、デプロイに関連する問題を指摘します。 | 2 | Webアプリケーションの場合に選択を検討します。 |
プロジェクトとソリューションのプロパティ | プロジェクトプロパティに関するルール | 0 | |
信頼性 | プログラムコードの信頼性に関して問題となる可能性がある事項を指摘します。例えば、Option Strict、Option Explicitがオフになっている等。 | 14 | 重要なルールが含まれるので、確認することをお勧めします。 |
セキュリティ | セキュリティに関する問題を指摘します。 | 223 | セキュリティ関連の問題を検証したい場合に選択を検討します。 |
標準 | 多くのプログラマが自然に従っている暗黙のルールや、美しいといわれているコードの特徴に違反している場合に指摘します。 | 20 | 含まれているルールの中から御社のコーディング規約にあったものを選択します。 |
システム | システムに関するルール | 0 | |
ユーザビリティ | 他の人がプログラムコードを利用する際に問題となる事項を指摘します。 | 2 | 他の人がプログラムコードを利用する可能性がある場合に選択を検討します。 |
ユーザー定義のルール | ユーザー定義のルール | 0 | |
バージョン管理 | インターフェースとConstに関する注意点を指摘します。一般的な意味のバージョン管理ではありません。 | 3 | インターフェースとConstを使用している場合に選択を検討します。 |
Windows API | Win32 APIの呼び出しが行われている場合にはそれを指摘し、その代替となる.NET Frameworkのメソッドを提案します。Win32 APIを直接呼び出すよりも、.NET Frameworkのメソッドを使用した方が安全です。 | 350 | Win32 APIの呼び出しが行われている可能性がある場合には選択を検討します。 |
言語
| 件数 |
Visual Basic .NET | 633 |
C# | 622 |
HTML | 46 |