はじめに
現在の最新版であるUnderstand 7.0では、従来のUnderstand 6.3から一部のメトリクス設定のオプションが変更されています。
今回はUnderstand 7.0を対象としたコマンドラインによるメトリクス出力方法をご紹介します。
※Understand 6.3における出力方法の記事はこちらをご確認ください。
なお、下記の説明内で登場するコマンド例に記載されている”myProject.und”は、ご利用のプロジェクト名に読み替えてください。
前提
- 使用するUnderstandバージョン
- Understand 7.0(Build 1220)
- Understandライセンスが設定され、Understandが使用可能である
- 環境変数
- undコマンドの使用には、お使いのマシンにおける環境変数PATHの追加が必要です。
以下はWindowsの場合の追加例となります。なお、複数のバージョンのUnderstandをインストールしている場合、undコマンドでご利用予定のバージョンのインストールディレクトリをご指定ください。- 変数:PATH
- 値:(Understandインストールディレクトリ)\bin\pc-win64
(例)C:\Program Files\SciTools\bin\pc-win64
- undコマンドの使用には、お使いのマシンにおける環境変数PATHの追加が必要です。
準備
undコマンドのバージョン確認
以下のコマンドにより、現在実行しているundコマンドのビルド番号をご確認いただけます。
Understand 6.3は「Build 1139」、Understand 7.0は「Build 1220」と表記されます。
>und version
(Build 1220)
なお、Understand 7.0以降のバージョンでは-fullオプションによりバージョン番号を付記して出力することが可能となりました。
>und version -full
(Build 7.0.1220)
プロジェクトの作成と解析
本手順(プロジェクトの作成と解析)はGUIから実施いただいても問題ありません。undコマンドによりプロジェクトを作成する手順例は以下の通りです。
なお、ここでは本記事の目的に注力するため、C/C++の場合の簡易なプロジェクト作成手順例を示すのみに留めます。
Understand 7.0(Build 1220)におけるプロジェクト解析では、エンコーディング設定として”System”以外を指定して解析する必要がございます。詳しくはこちらの記事をご確認ください。
メトリクスに関する一部の設定について、und analyzeコマンドの実行前に実施すると反映されない現象を確認しております。後述のund settingsによる設定はund analyzeコマンドの実行後に実施するようにしてください。
und create -local -db myProject.und -languages c++
und add . -db myProject.und
und settings -C++UseStrict off -db myProject.und
und settings -FileEncoding "Shift_JIS" -db myProject.und (Shift_JISの場合)
und settings -FileEncoding "UTF-8" -db myProject.und (UTF-8の場合)
und analyze -db myProject.und
実際のプロジェクト作成手順やコマンドの使用方法の詳細については、Understandユーザーサポートページよりダウンロードいただける「Understand プロジェクト作成・運用ガイド」や「und コマンドラインガイド」をご確認ください。
(ダウンロードをするには、『Scitools製品ライセンス証書』または『Scitools 製品年間保守サービス証書』に記載されている「ログインID」と「パスワード」が必要です。)
メトリクスレポートの設定と出力
メトリクスレポート形式設定
以下はメトリクスレポートの出力形式を変更する場合の例となります。
ご希望の形式に従い、必要に応じて各コマンドを実行してください。
- カラム名を表示します。
und settings -MetricWriteColumnTitles on -db myProject.und
- エンティティ名を相対パスで表示します。
und settings -MetricFileNameDisplayMode RelativePath -db myProject.und
- 定義ファイルを表示します。
und settings -MetricShowDeclaredInFile on -db myProject.und
- 定義元ファイルを相対パスで表示します。
und settings -MetricDeclaredInFileDisplayMode RelativePath -db myProject.und
[オプション] メトリクスのカスタマイズ
以下は特定のメトリクスの出力に関するメトリクスの有効化や特定のメトリクスに関するカスタマイズを行う設定の例となります。
ここではCUIにおける設定方法をご案内いたしますが、本手順はGUIから実施いただくことも可能です。(本記事文末「Appendix」参照)
Understand 7.0では、一部のメトリクスについて、有効化やカスタマイズに関するオプションが追加されています。
特にこだわりがない場合は、本設定を飛ばし、次の「メトリクス出力設定」に進んでいただけます。
今後有効化やカスタマイズに関する設定が必要になった場合には、本設定をご確認ください。
Understandでは、ロジックの複雑さを表すメトリクスは非常に多くの種類を取得可能です。
しかし、”Cyclomatic”、”MaxNesting”、”Essential”、”Knots”、”Paths”のように、複雑さを表すメトリクスが多数表示されてしまうことは管理のしづらさを生んでいる場合がありました。
本オプションの搭載により、こうしたロジックの複雑さを始めとした、同種で種類の多いメトリクスから、普段使うメトリクスを指定することが可能となりました。
これにより、例えば、”SumEssential”を取得したい場合、”Essential”を有効化する必要があります。
[CUIにおける設定情報の表示例]
本設定をCUIから設定する場合、選択可能なオプションを事前に知る必要があります。
下記のように現在の設定をCUIから表示した場合、”Avaliable Settings”欄に選択可能なオプションが表示されます。
※後述”und list -metrics settings myProject.und”により出力した情報です。
(解析指定言語により若干表示内容が変わります。)
C:\work\>und list -metrics settings myProject.und
--------------------------Metric Settings--------------------------
Option Current Setting Available Settings
WriteColumnTitles On On/Off
AddUniqueNameColumn Off On/Off
ShowFunctionParameterTypes Off On/Off
ShowDeclaredInFile On On/Off
DeclaredInFileDisplayMode RelativePath NoPath/FullPath/RelativePath
FileNameDisplayMode NoPath NoPath/FullPath/RelativePath
OutputFile C:\work\myProject.csv
ShowLineCountMetrics On On/Off
InactiveLines Exclude Exclude/Include/Both
ShowStatementCountMetrics On On/Off
Cyclomatic Normal All/Normal/Strict/Modified/StrictModified
ShowMaximumNesting On On/Off
ShowPaths Off On/Off
ShowKnots Off On/Off
ShowEssential Off On/Off
ShowInheritanceMetrics On On/Off
ShowMethodAndVariableCountMetrics
On On/Off
ShowCouplingAndCohesionMetrics On On/Off
ShowDefaultSummaryMetrics On On/Off
ShowAggregatedFileMetrics On On/Off
ShowAggregatedFunctionMetrics On On/Off
ShowAggregatedClassMetrics On On/Off
[オプション] メトリクスの指定(On)
各メトリクスの出力を有効化する場合、下記のように設定します。
und settings -MetricShowLineCountMetrics On -db myProject.und
und settings -MetricShowMaximumNesting On -db myProject.und
und settings -MetricShowEssential On -db myProject.und
und settings -MetricShowStatementCountMetrics On -db myProject.und
und settings -MetricShowKnots On -db myProject.und
und settings -MetricShowDefaultSummaryMetrics On -db myProject.und
[オプション] 行数メトリクス、複雑度メトリクスの指定
空白行、コメント行、コード行メトリクスにおける非アクティブ行のカウント方法の指定は、以下のように指定可能です。
und settings -MetricInactiveLines Both -db myProject.und
サイクロマティック複雑度のカスタマイズオプションは以下のように指定可能です。
und settings -MetricCyclomatic All -db myProject.und
メトリクス出力設定
以下は出力するメトリクスを指定する例となります。
※一部のメトリクスは上述の有効化が必要です。もし設定したはずのメトリクスが設定に反映されていない、もしくは出力ができない場合には、上述の有効化オプションの指定をご検討ください。
und settings -MetricMetrics CountLine CountLineCode CountLineComment Cyclomatic Essential MaxNesting -db myProject.und
現設定における全てのメトリクスを出力する場合は以下のコマンドを実行します。
und settings -MetricMetrics all -db myProject.und
Understand 7.0より、メトリクスのAPI Name, Friendly Nameが変更されています。
変更の詳細については、 ユーザーサポートページの『Understand 7.0メトリクス一覧表』の”API Name”と”API Name (Old)”で確認いただけます。
なお、上記一覧表に記載されていない一部のメトリクスはアーキテクチャレベルでの値の算出に問題があったため、削除されています。
メトリクスレポートの出力
以下のコマンドの実行により、csv形式にてメトリクスレポートを出力可能です。
und metrics myProject.und
うまくいかない場合には
undコマンドラインガイドを参照
「und コマンドラインガイド」をご確認ください。
Understandユーザーサポートページよりダウンロードいただける「und コマンドラインガイド」をご確認ください。(ダウンロードをするには、『Scitools製品ライセンス証書』または『Scitools 製品年間保守サービス証書』に記載されている「ログインID」と「パスワード」が必要です。)
Understand ユーザーサポートページ>>
→「Understand 7.0 日本語版 [Build 1220]」
→「und コマンドラインガイド」
コマンドのヘルプを参照
undコマンドのヘルプを表示します。
und help
und settingsのヘルプを表示します。
und help settings
現在のプロジェクト設定を参照
現在のプロジェクト設定を参照します。
und list settings myProject.und
現在のプロジェクト設定(詳細)を参照します。
und list -all settings myProject.und
現在のプロジェクト設定(メトリクス設定のみ)を参照します。
und list -metrics settings myProject.und
現在のプロジェクト設定(言語設定)を参照します。
und list -lang settings myProject.und
テクニカルサポートに問い合わせる
本記事でご案内した手順でも、メトリクス出力がうまくいかない場合には、テクニカルサポートセンターの宛先へお問い合わせいただくことが可能です。
ただし、お問い合わせには保守サポートへの加入が必要となり、『Scitools製品ライセンス証書』または『Scitools 製品年間保守サービス証書』に記載されているユーザー登録番号や製品番号のご連絡が必要です。
お問い合わせいただく際は、以下の4点の情報をご連絡いただけますよう、お願いいたします。
- ユーザー登録番号や製品番号
- ご利用のマシン情報(OSとそのバージョン、CPU、搭載メモリ)
- 以下の実行結果(myProject.undはご利用のプロジェクト名に読み替えてください)
where und ※linux環境の場合はwhich und
und version
und list -metrics settings myProject.und
und list -lang settings myProject.und
- [ヘルプ]-[サンプルプロジェクト]-[Fastgrep – C]から以下にダウンロードされるサンプルプロジェクト「C:/Users/(ユーザー名)/AppData/Roaming/SciTools/samples/fastgrep」でも発生するかどうか
※ダウンロード後、ご利用のバージョンでの再解析(und analyze -db fastgrep.und)が必要です。
Appendix
GUIにおけるメトリクスの有効化・カスタマイズ
[GUIにおける設定情報の表示例]
上述の一部のメトリクス設定はGUIからの設定の場合、下記のように[プロジェクトの設定]-[メトリクス]より指定可能です。
