DevPartner Studio 大 規 模 プロジェクトに 対 するの 活 用 DevPartner Studio Professional Edition ( 以 降 DPS と 記 す)の 静 的 ソースコード 解 析 ( 以 降 と 記 す) 機 能 は ソースコードの 問 題 点 を 文 法 的 に 分 析 する 機 能 です テストフェーズに 進 む 前 にコーディングレベルでの 問 題 点 を 検 出 でき その 早 期 修 正 を 実 現 するこ とができます しかし 解 析 対 象 のソースコード 行 数 が 数 十 万 行 以 上 などになると 解 析 が 完 了 するまでに 数 時 間 以 上 かかる 場 合 があります 当 資 料 は 大 規 模 プロジェクト( 特 に 20 万 行 を 越 えるような 場 合 )に 対 して DevPartner のコー ドレビュー 機 能 を 使 用 する 際 コード 解 析 作 業 を 効 率 良 く 実 施 するための 指 針 を 示 すものです ) 当 資 料 は DPS 11.1 にて 作 成 されております その 他 のバージョンでは 画 面 構 成 や 使 用 できる 機 能 対 応 言 語 に 違 いがある 場 合 がございます マイクロフォーカス 株 式 会 社 Borland ソリューション
目 次 1 概 要... 3 2 解 析 対 象 の 絞 込 み... 5 2.1 ソリューションがアセンブリに 分 割 されている 場 合... 5 2.2 アセンブリ(Exe DLL) 中 の 解 析 対 象 を 細 かく 絞 り 込 みたい 場 合... 6 3 適 用 する 機 能 を 限 定 する... 8 3.1 ネーミング 分 析... 9 3.2 メトリクス 分 析... 10 3.3 コールグラフ 分 析...11 4 適 用 ルールを 選 択 する... 12 5 バッチの 作 成 と 実 行... 14 5.1 バッチファイルの 自 動 作 成... 14 5.2 バッチファイルの 実 行... 16 2
1 概 要 DevPartner の 静 的 ソースコード 解 析 ( 以 降 と 記 す)は 大 規 模 な(ソース コード 行 数 が 多 い)システムに 対 して 一 度 に 適 用 すると 解 析 に 時 間 がかかる 場 合 があります 各 対 応 方 法 の 詳 細 は 2 章 以 降 を 参 照 ください ソリューション Exe 数 万 行 分 の コード 解 析 結 果 解 析 が 終 わるまで 数 時 間 メモリ 不 足 になる 可 能 性 ソリューションのコード 行 数 が 数 万 行 ( 例 えば 20 万 行 ) 以 上 図 1-1 大 規 模 システムに 対 するの 適 用 ) 一 回 の 解 析 で 対 象 とするソースコード 行 数 は 20 万 行 程 度 を 上 限 とする 運 用 を 検 討 下 さい 20 万 行 より 多 い 場 合 でも 解 析 は 可 能 ですが 動 作 の 安 定 性 が 低 下 し 解 析 結 果 の 管 理 工 数 を 増 加 させる 可 能 性 があります 3
大 規 模 システムに 対 してを 実 施 する 際 の フローを 以 下 に 記 述 します ソリューションの 構 造 を 分 析 アセンブリに 分 割 されているか YES アセンブリ 単 位 で 解 析 対 象 を 限 定 (2.1:ソリューションがアセンブリに 分 割 されている 場 合 ) NO 除 外 コンフィグファイル (DPCRUserExclusions.xml) 除 外 ファイルによる 解 析 コード 限 定 (2.2:アセンブリ 中 の 解 析 対 象 を 細 かく 絞 り 込 みたい 場 合 ) 適 用 するサブ 機 能 を 選 択 する (3: 適 用 する 機 能 を 限 定 する) ルールを 選 択 する (4: 適 用 ルールを 選 択 する) 独 自 ルール セットファイル バッチ 実 行 を 検 討 (5:バッチの 作 成 と 実 行 ) コード 解 析 実 施 図 1-2 大 規 模 システムに 対 する 適 用 フロー 4
2 解 析 対 象 の 絞 込 み 全 てのソースコードを 一 回 で 分 析 するのではなく 部 分 ごとに 絞 込 んで 実 行 することで 作 業 時 間 の 短 縮 し メモリ 使 用 量 を 少 なくすることが 出 来 ます 2.1 ソリューションがアセンブリに 分 割 されている 場 合 ソリューション アセンブリ 単 位 のコード 行 数 は 一 定 行 数 ( 例 え ば1 万 行 ) 以 内 DLL DLL EXE EXE を ア 実 セ 行 ン し ブ リ 結 毎 果 に も コ 個 ー 別 ド に レ 保 ビ 存 ュ ー ソリューション 全 体 では コード 行 数 は 数 万 行 ( 例 えば 20 万 行 ) 以 上 図 2-1 アセンブリに 分 割 されている 場 合 ソリューションが アセンブリに 細 かく 分 けられている 場 合 には 以 下 の 手 順 でオプション 設 定 画 面 から 対 象 アセンブリを 限 定 することが 出 来 ます (1) Visual Studio の 画 面 から DevPartner - オプション を 実 行 する (2) DevPartner - 全 般 画 面 にある レビューするプロジェクト の 中 で 解 析 対 象 にしたいアセンブリだけをチェックします (3) OK ボタンを 押 して 確 定 させます 図 2-2 オプションでアセンブリを 選 択 5
2.2 アセンブリ(EXE DLL) 中 の 解 析 対 象 を 細 かく 絞 り 込 みたい 場 合 ソリューション 全 体 が1つのアセンブリで 構 成 されている 場 合 や アセンブリに 分 割 されて いても 個 別 のサイズが 大 きい(コード 行 数 が 多 い) 場 合 には その 中 での 解 析 対 象 を フォル ダ 単 位 ファイル 単 位 クラス 単 位 などで 絞 り 込 むことで 解 析 効 率 を 上 げることが 出 来 ま す ソリューション EXE Exe EXE 除 外 アセンブリ 単 位 のコード 行 数 は 一 定 行 数 ( 例 え ば1 万 行 )より 多 い DLL 除 外 除 外 されていないソース コードだけを 分 析 図 2-3 除 外 コンフィグレーションファイルによる 解 析 対 象 の 選 択 ソースコードを 除 外 するための 設 定 ファイル DPCRUserExclusions.xml を 使 用 します 除 外 ファイルの 雛 形 は のインストールフォルダ(デフォルでは "C: Program Files Micro Focus DevPartner Studio CodeReview")にありますので コピーしてご 使 用 下 さい このファイルを 適 用 プロジェクトフォルダに 配 置 することで 除 外 が 有 効 になります ソリュー ション 内 のプロジェクト 毎 に 別 々のユーザー 定 義 ファイルを 指 定 することも 可 能 です 1 2 3 のインストールフォルダ(デフォルトのフォルダは "C: Program Files Micro Focus DevPartner Studio CodeReview")にある"DPCRUserExclusions.xml" ファイルを 適 用 プロジェクトフォルダにコピーします コピーした"DPCRUserExclusions.xml"ファイルに 除 外 対 象 を 記 述 します 以 下 次 頁 に 記 載 されているサンプルの 内 容 に 従 い 除 外 対 象 となるフォルダ/ファイル/クラス/メソッドの 情 報 をそれぞれ Folders/Files/Classes/Methods に 追 記 します ( 各 Folder/File/Class /Method の 記 述 は サンプルの 内 容 をコピーして 対 象 となるフォルダ 名 /ファイル 名 /クラ ス 名 /メソッド 名 のみを 書 き 換 えます ) を 実 行 し 除 外 されていることを 確 認 します (レビュー 結 果 の[サマリ]/ [ 問 題 ]タブから 確 認 可 能 です ) 6
<!-- ユーザー 定 義 の 除 外 ファイル サンプル ここから--> <CRExclusionList CRVersion="10.0.0"> <!-- DevPartner CodeReview user exclusion file--> <Exclusions> <Folders> <Folder VSVersion="2010" ProjectType="ASPNetWebApp"> AAA_Folder</Folder> <Folder VSVersion="2010" Language="C#.NET"> ABC_Folder</Folder> <Folder VSVersion="2010" Language="VB.NET"> XYZ_Folder</Folder> </Folders> <Files> <File VSVersion="All" Language="All" ProjectType="All" > AssemblyInfo.*</File> <File VSVersion="All" Language="All" ProjectType="All" >CoverageAnlysis.cs</File> <File VSVersion="All" Language="All" ProjectType="All" >*Anlysis.vb</File> </Files> <Classes> <Class VSVersion="All" Type="Base">MyObject</Class> </Classes> <Methods> <Method VSVersion="All" ClassType="Base">PerformanceExpert_Server.Server_Start</Method> <Method VSVersion="All" ClassType="Base">*.Dispose</Method> </Methods> </Exclusions> </CRExclusionList> <!-- ユーザー 定 義 の 除 外 ファイル サンプル ここまで--> 図 2-4 除 外 コンフィグレーションファイルサンプル 7
3 適 用 する 機 能 を 限 定 する DevPartner のには ソースコードからの 問 題 点 検 出 機 能 以 外 に 3 つのサブ 機 能 があります 標 準 設 定 では 全 てのサブ 機 能 がオンになっていますので それらをオフにすること でコード 解 析 時 間 を 短 くすることが 出 来 ます 表 3-1 サブ 機 能 一 覧 機 能 コマンド 1. ネーミング 分 析 クラス 名 メソッド 名 変 数 名 のネーミング 規 則 違 反 を 検 出 します 2. メトリクス 分 析 メソッド 単 位 の 複 雑 度 (サイクロマティックメトリクス)を 分 析 します 3. コールグラフ 分 析 メソッドの 相 互 呼 出 関 係 を 分 析 し グラフィカルに 表 示 します 8
3.1 ネーミング 分 析 ソースコードを 解 析 し Pascal 記 法 Camel 記 法 もしくは ハンガリアン 記 法 に 違 反 している 箇 所 (クラス 名 メソッド 名 変 数 名 など)を 以 下 のように 指 摘 する 機 能 です 図 3-1 ネーミング 分 析 画 面 サンプル ネーミング 分 析 機 能 をオフにするには 以 下 のオプション 設 定 画 面 から 設 定 します (4) Visual Studio の 画 面 から DevPartner - オプション を 実 行 します (5) DevPartner - - 全 般 画 面 にある 使 用 するネーミング 分 析 の 値 を <なし> に 設 定 します (6) OK ボタンを 押 して 確 定 させます 図 3-2 オプション 画 面 のネーミング 分 析 設 定 9
3.2 メトリクス 分 析 ソースコードを 解 析 し メソッド 中 の 条 件 分 岐 数 などから 複 雑 度 ( 保 全 性 の 低 さ)を 計 算 し て 表 示 する 機 能 です 図 3-3 メトリクス 分 析 画 面 サンプル メトリクス 分 析 機 能 をオフにするには 以 下 のオプション 設 定 画 面 から 設 定 します (1) Visual Studio の 画 面 から DevPartner - オプション を 実 行 します (2) DevPartner - 全 般 の メトリクスの 収 集 のチェック を 外 します (3) OK ボタンを 押 して 確 定 させます 図 3-4 オプション 画 面 のメトリクス 分 析 設 定 10
3.3 コールグラフ 分 析 ソースコードを 解 析 し メソッド 同 士 の 相 互 呼 出 関 係 を 分 析 する 機 能 です 図 3-5 コールグラフ 画 面 サンプル コールグラフ 分 析 機 能 をオフにするには 以 下 のオプション 設 定 画 面 から 設 定 します (1) Visual Studio の 画 面 から DevPartner - オプション を 実 行 します (2) DevPartner - - 全 般 の コールグラフデータの 収 集 のチ ェックを 外 します (3) OK ボタンを 押 して 確 定 させます 図 3-6 オプション 画 面 のコールグラフ 分 析 設 定 11
4 適 用 ルールを 選 択 する のソースコード 解 析 機 能 は 合 計 817 個 のルールをもっています 標 準 では デ フォルト ルールセットが 適 用 されるように 設 定 されており デフォルト ルールセットは 重 要 度 : 中 と 高 の 483 個 のルールを 含 んでいます の 実 行 時 間 を 減 らし 使 用 メモリ 量 を 少 なくするには 更 に 適 用 ルールを 絞 り 込 む( 例 えば 100 個 ) 作 業 が 有 効 です ソース コード 時 間 : 多 メモリ: 多 ルール:817 個 ルール 選 定 時 間 : 少 メモリ: 少 解 析 結 果 ルール:100 個 図 4-1 ルール 選 択 適 用 するルールを 選 択 するには DPS の ルールマネージャ を 使 用 します ルールマネージャで 新 規 ルールセットを 作 成 し 必 要 なルールだけをコピーします 図 4-2 ルールマネージャにおけるルールセット 設 定 12
ルールマネージャで 作 成 したルールセットは 以 下 のようにオプション 設 定 画 面 から 設 定 し ます (1) Visual Studio の 画 面 から DevPartner - オプション を 実 行 します (2) DevPartner - - 全 般 画 面 にある ルールセット の 値 を 作 成 したルールセットに 設 定 します (3) OK ボタンを 押 して 確 定 させます 図 4-3 オプション 画 面 のルールセット 設 定 13
5 バッチの 作 成 と 実 行 Visual Studio から 実 行 するのではなく バッチ 形 式 でを 実 行 することによって メモリ 使 用 量 を 少 なく 抑 える 効 果 があります コマンドラインからを 起 動 するプログラムは 以 下 のフォルダにインストールさ れています ご 使 用 になる 場 合 にはフルパスでの 指 定 か 環 境 変 数 PATH の 設 定 を 調 整 下 さい DPS インストールフォルダ( 通 常 は C: Program Files Micro Focus DevPartner Studio ) CodeReview CRBatch.exe 図 5-1 バッチ 実 行 プログラムのフォルダ 5.1 バッチファイルの 自 動 作 成 Visual Studio から ソリューションに 対 して 静 的 ソースコード 解 析 を 実 行 すると その 解 析 を 繰 り 返 すことができるバッチファイルを 自 動 的 に 作 成 します このバッチファイルを 夜 間 などに 実 行 すれば 開 発 作 業 がおこなわれていない 時 間 帯 を 有 効 に 使 うことが 出 来 ます )バッチファイルは オプション 設 定 画 面 において 図 5-1 の 常 にバッチファイルを 生 成 をチェックしておくことで 作 成 されます バッチファイル 作 成 フラグ 図 5-2 バッチファイル 作 成 フォルダ 14
バッチファイルはソリューションと 同 じ 場 所 通 常 の 設 定 であれば 以 下 の 図 5-3 のような フォルダに 作 成 されます C: Users ユーザ 名 Documents Visual Studio 2010 Projects ソリューション 名 バッチファイル CR_ソリューション 名.BAT もしくは ソリューション 名.BAT 図 5-3 バッチファイル 作 成 フォルダ 自 動 作 成 されるバッチファイルは 以 下 のような 形 になっています "C: Program Files Micro Focus DevPartner Studio CodeReview CRBATCH.EXE" /f "C: プロジェクト ソリューション 名.CRB" /l " C: プロジェクト CR_ソリューション 名..xml" /vs "10.0" 細 かな 設 定 は 全 て 拡 張 子 CRB のファイルに 記 述 します Visual Studio のメニューから 静 的 ソースコード 解 析 を 実 行 したときのオプション 設 定 状 態 がテキストファイルで 保 存 されます )CRB ファイル( 構 成 ファイル)の 詳 細 は DevPartner ヘルプの DevPartner 構 成 ファイル を 参 照 下 さい ( DevPartner Studio / / コマ ンドラインからレビューを 実 行 する / ソリューションレビューを 実 行 する から 構 成 ファイル のリンクをクリックします 15
5.2 バッチファイルの 実 行 バッチファイルを 実 行 すると 以 下 のように 結 果 (DPMDB ファイル)が 作 成 さ れます 図 5-4 のバッチ 実 行 16