メインコンテンツまでスキップ

スクリプトを定期実行して LR の指摘情報を自動収集!

近藤 匠真

Lightning Review (以下、LR)開発チーム、入社2年目になりました近藤です!
WBC 大いに盛り上がりましたね!!! とても感動しました😭
栗山監督は村上選手へ、ずっと「最後はお前で勝つんだ」と言って最後まで信じていたと話していましたね。
自分も信頼し、信頼される人になれるよう邁進していきたいと思います!!

さて今回は、LR 2.5 に搭載された新機能「ScriptEditor」の便利な活用例の紹介、第二弾!
スクリプトのコマンドライン実行を使った LR の指摘情報の自動収集を紹介します!

前回は、スクリプトのコマンドライン実行により、簡単に LR の操作を自動化できるところを紹介しましたが、コマンドライン実行が可能になったことで、タスクスケジューラを用いた定期実行も可能となりました!
今回は、タスクスケジューラを活用して、LR の指摘データを収集して JSON ファイルに出力するスクリプトを定期実行します。
以下はその様子です。便宜上、タスクスケジューラから手動で実行した際の動きをお見せします。

スクリプトのコマンドライン実行のデモ画像

JSON ファイル形式で出力された指摘情報は、BIツールなどの分析用のツールで読み込み可能となります。
例えば、取得した指摘情報を、下図のように Excel の機能を利用して表形式に変換できます。

JSON ファイルを使用して分析に活用

上図のように Excel に出力先のデータを接続しておくことで、グラフの出力をする等、お好みの形に合わせて分析に活用していただけます。
つまり、タスクスケジューラで定期実行することで、手間なく最新の指摘情報を取得して、分析に利用できます!

今回も前回同様、 ScriptEditor を用いて LR の指摘データを収集して JSON ファイルに出力するスクリプトを実装しました。
完成したコードは以下になります。
※ 今回はサンプルのため、集計データの出力先と集計対象のフォルダはデスクトップとしています。

// 本スクリプトは、コマンドラインからスクリプトを実行する想定であり、
// 任意のフォルダ以下のレビューファイルの指摘データを集計し、JSONファイルを出力する。
// 出力したJSONファイルは、BIツールなどで読み込んで分析する対象とする。

// 結果を出力するファイルを指定(サンプルとしてデスクトップに Output.json を出力)
var outputPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Output.json");

// 指摘のデータのうち、出力対象とするフィールドを定義したクラス
class IssueData
{
// 指摘ID
public string Id {get; set;}
// ステータス
public string Status {get; set;}
// 重大度
public string Importance {get; set;}
// 検出工程
public string DetectionActivity {get; set;}
// 原因工程
public string InjectionActivity {get; set;}
// 修正者
public string AssignedTo {get; set;}
}

// 指定フォルダ以下のレビューファイルの指摘データを集計する(サンプルとしてデスクトップ以下のレビューファイルを集計)
var folderPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
var reviewFilePaths = System.IO.Directory.GetFiles(folderPath, "*.revx", SearchOption.AllDirectories);
var issueDataList = new List<IssueData>();
var service = App.GetReviewFileService();
foreach(var reviewFilePath in reviewFilePaths)
{
try
{
var review = service.OpenReview(reviewFilePath);
foreach(var issue in review.GetAllIssues())
{
issueDataList.Add(new IssueData()
{
Id = issue.Id,
Status = issue.Status,
Importance = issue.Importance,
DetectionActivity = issue.DetectionActivity,
InjectionActivity = issue.InjectionActivity,
AssignedTo = issue.AssignedTo,
});
}
service.CloseReview(review);
}
catch
{
// 例外が起きたファイルは何もしない
}
}

// JSONにシリアライズしてファイル出力する
var serializer = new JsonSerializer()
{
Formatting = Formatting.Indented,
};

using(TextWriter writer = File.CreateText(outputPath))
{
serializer.Serialize(writer, issueDataList);
}

// レビューファイルを開いていない、かつ、ダーティ状態でない場合は、
// スクリプトの実行のためにレビューウィンドウを起動したと判断してレビューウィンドウを閉じる
var window = App.ActiveReviewWindow;
if(window != null && string.IsNullOrEmpty(window.Review.FilePath) && !window.Review.IsDirty)
{
App.Quit();
}

次に、タスクスケジューラから[タスクの作成]-[操作]-[新規作成]を選択し、下図の赤枠内に以下のコマンドを設定します。

"C:\Program Files (x86)\Denso Create\Lightning Review\LightningReview.exe" --run "{作成したスクリプトのファイルパス}"

タスク7スケジューラの設定

任意の期間で定期実行することで、指定した集計対象フォルダ以下の指摘情報の自動収集が可能になります。

実際に実行した際の動作は冒頭の動画をご確認ください。

いかがでしたか? ScriptEditor を利用すれば、簡単に LR の操作を自動化できます!
今回は、スクリプトの定期実行によって、日々の LR を利用したレビューで貯まっていく指摘の情報を、自動で定期的に取得する方法を紹介しました!
上記の説明を参考に、ぜひ使ってみてください!

以下のリンク先にて、スクリプトのサンプルを公開しています。よろしければこちらもご確認ください。
https://docs.lightning-review.com/help/extensions/script-editor/sample-list