コンテンツにスキップ

getImpactSet

指定したファイルを参照しているファイルを、直接参照と推移的参照の両方にわたって取得します。グラフの逆辺を辿る BFS で、変更対象ファイル自身は結果から除外されます。

ドキュメントを変更・削除する前に、それが他のどのドキュメントに影響を与えるかを把握したい場面があります。getImpactSet は「このファイルを変えたら、どこを見直す必要があるか」をフラットなリストで返します。

直接参照と推移的参照を区別したい場合は classifyImpact を使ってください。

function getImpactSet(
graph: ContextGraph,
filePath: string,
): string[];
パラメータ必須説明
graphContextGraphbuildContextGraph で構築したグラフ
filePathstring影響範囲を調べたいファイルのパス。graph.nodes のキーと一致している必要があります

string[] を返します。filePath を直接または推移的に参照しているファイルパスの配列で、アルファベット順にソートされます。filePath 自身は含まれません。グラフ上に該当ファイルが存在しない、または誰も参照していない場合は空配列を返します。

import { buildContextGraph, getImpactSet, loadDocuments } from "@contextlint/core";
const documents = loadDocuments(["docs/**/*.md"]);
const graph = buildContextGraph(documents);
const affected = getImpactSet(graph, "docs/architecture.md");
if (affected.length === 0) {
console.log("影響を受けるファイルはありません");
} else {
console.log(`${affected.length} ファイルが影響を受けます:`);
for (const file of affected) {
console.log(` - ${file}`);
}
}