デンソークリエイトのレビュー支援ツール Lightning Review(https://www.lightning-review.com/) のレビューファイルに関するライブラリとツールです。Lightning Reviewアプリケーション不要でLightning Reviewのレビューファイルの高速なデータ読み込みが可能です。また、.NET Standard/.NET Coreで開発をしているのでWindows/Linux/Macで動作可能です。
Lightning Reviewのレビューファイルのレビューや指摘のデータを高速に読み込み可能なライブラリです。
- コンパクトで他への依存関係がない軽量な設計になっています。
- 複数のLightning Reviewバージョンでの分析が可能です。
- Lightning ReviewはV1.8でレビューファイルのフォーマットが変わりましたが、このライブラリではV1.8でもそれ以前のバージョンでもどちらのファイルも対応しています。
- V2.0で追加された以下のプロパティに対応しています。
- レビューのカスタムフィールド1~20
- 指摘のカスタムフィールド11~20
- メンバのカスタムフィールド1~5、カスタムロール1~5、タグ
- ステータスの設定日、設定者、クローズを意味するステータスか、色
- 1000ファイルのレビューファイルの読み込みに数秒程度で処理可能と非常に高速になっています。
- 複数のレビューファイルを集計して品質メトリクスを計測するようなユースケースを想定しています。従って、現時点ではレビューファイルの要素のすべてに対応しているわけではありません。主にレビューと指摘に関する情報が参照できます。また、指摘画像の読み込みは対応していません。
Nuget: LightningReview.ReviewFile
C:\Project> NuGet Install LightningReview.ReviewFile
単一のレビューファイルを指定する場合
using LightningReview.ReviewFile;
using LightningReview.ReviewFile.Models;
//...
// レビューファイルを読み込むクラスです
var reader = new ReviewFileReader();
// 単一のレビューファイルを指定する場合
var review = reader.Read(ReviewFilePath);
Console.WriteLine(review.Issues.Count());
フォルダにある複数のレビューファイルを指定する場合
// フォルダにある複数のレビューファイルを指定する場合
var reviews = reader.ReadFolder(folder);
foreach ( var review in reviews)
{
Console.WriteLine(review.Name);
// レビューごとの指摘件数
Console.WriteLine(review.Issues.Count());
// 指摘毎の詳細
foreach ( var issue in review.Issues)
{
Console.WriteLine(issue.Description);
}
}
読み込んだレビューおよび指摘の要素にアクセスする場合
// レビューを取得する
var review = reader.Read(ReviewFilePath);
// レビューのプロジェクト名
Console.WriteLine(review.ProjectName);
// レビューの目標件数
Console.WriteLine(review.IssueCountOfGoal);
// レビューの計画実施日
Console.WriteLine(review.PlannedDate);
// レビューが持つ指摘を取得する
foreach (var issue in review.Issues)
{
// 指摘のステータス
Console.WriteLine(issue.Status);
// 指摘の優先度
Console.WriteLine(issue.Priority);
// 指摘の修正日
Console.WriteLine(issue.DateFixed);
}
.Net Standard 2.0
なし
詳細はインターフェースの一覧を参照してください。
V2.0以降で追加されたプロパティは、V1.8以前のレビューファイルでは定義されていないため、取得できません。
そのため、V1.8以前のレビューファイルでは、以下の一覧に示す値を返します。
インターフェース | プロパティ | V1.8以前のレビューファイルに対して取得した場合の値 |
---|---|---|
IReview | string CustomText(1~20) | 空文字列(string.Empty) |
IEnumerable<IReviewCustomFieldDefinition> ReviewCustomFieldDefinitions | 空のコレクション | |
IEnumerable<IMemberCustomRoleDefinition> MemberCustomRoleDefinition | 空のコレクション | |
IEnumerable<IMemberCustomFieldDefinition> MemberCustomFieldDefinitions | 空のコレクション | |
IEnumerable<IIssueCustomFieldDefinition> IssueCustomFieldDefinitions | 指摘のカスタムフィールド1~10の定義のコレクション | |
IEnumerable<IReviewMember> Members | `IReviewMember`の`Name`、`Reviewer`、`Reviewee`、`Moderator`のみを設定したオブジェクトの一覧を返す。 | |
IStatusItem ReviewStatusItem | `IStatusItem`の`Name`と`IsSelected`のみを設定したオブジェクトを返す。 | |
IEnumerable<IStatusItem> ReviewStatusItems | ステータスごとに`ReviewStatusItem`と同様のポリシーで設定し、ステータスの一覧を返す。 | |
IIssue | string CustomText(11~20) | 空文字列(string.Empty) |
IReviewMember | bool CustomRole(1~5) | false |
string CustomText(1~5) | 空文字列(string.Empty) | |
string Tag | 空文字列(string.Empty) | |
IStatusItem | DateTime? SelectedOn | null |
string SelectedBy | 空文字列(string.Empty) | |
bool IsClosed | false | |
string Color | "なし" |
フォルダ内のLightning Reviewのレビューファイルの内容を読み込んでJSONファイルに出力するライブラリです。
LightningReview.ReviewFile
を参照して作成している軽量なライブラリです。レビューの指摘件数、メトリクスの計算などで利用して下さい。
Nuget: LightningReview.ReviewFileToJsonService
C:\Project> NuGet Install LightnigReview.ReviewFileToJsonService
using LightnigReview.ReviewFileToJsonService;
//...
// エクスポート処理
var exporter = new ReviewFileToJsonExporter();
// ロガーを設定しておく
exporter.Logger = (message) => Console.WriteLine(message);
// 実行
exporter.Export(folderPath, jsonFilePath);
- .Net Standard 2.0
- LightnigReview.ReviewFile
- System.Text.Json
- System.Text.Encodings.Web
フォルダ内のレビューファイルの内容をJSONファイルに出力するコマンドラインプログラムです。
| ReviewFileToJson.exe -f folderPath
-f
でレビューファイルが格納されたフォルダパスを指定すると、現在のフォルダに output.json
を出力します。
| ReviewFileToJson.exe -f folderPath -o myJsonFile.json
-o
で出力ファイル(パス)を指定できます。
| ReviewFileToJson.exe -f folderPath -o myJsonFile.json -r
-r
を指定するとサブフォルダまで対象にできます。
| ReviewFileToJson.exe -f folderPath -u
-u
を指定すると出力されるJSONファイルにおいてUnicodeエスケープを行いません。
本オプションをつけることで出力されるJSONファイルはUTF-8でエンコードされたJSONファイルとなります。
以下はJSONファイルの指摘の重大度の出力イメージ例
"Importance": "\u4E2D" // -u オプションをつけず、Unicodeエスケープされた状態
"Importance": "中" // -u オプションをつけて、UTF-8で出力された状態
-uをつけて出力されたJSONファイルを別ツールで読み込む場合は、ファイル内容がうまく読み取れなくなる恐れがあるため、UTF-8で読み込む必要があることに注意してください。
{
"TotalReviewCount": 3, // 読みこんだレビューファイルの数
"TotalIssueCount": 9, // すべてのレビューファイルの指摘の合計
"Reviews": [ // 読み込んだレビューの一覧
{
// レビュー①のフィールド情報
"GID": "b90a3142-2c05-4550-9ac5-008ea6461bc0",
"FilePath": "C:\\work\\\\RevFile1.revx",
//...
"Issues": [
{
// レビュー①に関連する指摘①のフィールド情報
"GID": "a74cde8d-d7e7-4948-8a60-82f0fabea5f8",
"LID": "1",
//...
},
{
// レビュー①に関連する指摘②のフィールド情報
"GID": "4eaf62fa-995a-45f7-9ddf-65e605bfc28c",
"LID": "2",
//...
}
]
},
{
// レビュー②のフィールド情報
"GID": "b90a3142-2c05-4550-9ac5-008ea6461bc1",
"FilePath": "C:\\work\\\\RevFile2.revx",
//...
"Issues": [
{
// レビュー②に関連する指摘①のフィールド情報
"GID": "a74cde8d-d7e7-4948-8a60-82f0fabea5f9",
"LID": "1",
//...
}
]
}
]
}
フィールド情報の詳細は下記クラスに記載してあります。
- .Net Core 3.1
- LightningReview.ReviewFileToJsonService
- CommandLineParser
本ライブラリの具体的な利用例を動画を使ってご紹介します。
ここでは、以下の Step で実施します。
フォルダ内に複数格納されているレビューファイルに登録されたレビューや指摘のデータを、JSON形式で出力します。
下の動画では、Windows のコマンドプロンプトにて Lightning Review のファイルが複数格納されたフォルダを指定して実行することで、output.jsonというファイルを出力しています。
JSON形式で出力したoutput.jsonは、Excelの機能を利用して表形式に変換できます。
下の動画では、Step1 にて出力したoutput.jsonファイルをExcelで表に変換して表示しています。
Lightning Review ファイルが保持しているそのままのデータを一覧に表示できるため、その後はお好みの形に合わせて分析できます。