Skip to content

Commit 97c235a

Browse files
feat: enhance dependency usage tracking in module analysis
1 parent b4478fd commit 97c235a

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

scripts/check-modules/index.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,7 @@ async function analyzeModule({ module, moduleDir, issues, config }) {
760760
: null;
761761
const declaredDependencyNames = extractDeclaredDependencyNames(packageSummary);
762762
const usedDependencies = new Set();
763+
const dependencyUsage = new Map();
763764

764765
const groups = config?.groups ?? {};
765766
const runFastChecks = groups.fast !== false;
@@ -840,6 +841,10 @@ async function analyzeModule({ module, moduleDir, issues, config }) {
840841
if (detectedDependencies.size > 0) {
841842
for (const dependencyName of detectedDependencies) {
842843
usedDependencies.add(dependencyName);
844+
if (!dependencyUsage.has(dependencyName)) {
845+
dependencyUsage.set(dependencyName, new Set());
846+
}
847+
dependencyUsage.get(dependencyName).add(relative);
843848
}
844849
}
845850
}
@@ -998,7 +1003,17 @@ async function analyzeModule({ module, moduleDir, issues, config }) {
9981003
if (filteredMissingDependencies.length > 0) {
9991004
const rule = getRuleById(MISSING_DEPENDENCY_RULE_ID);
10001005
const dependencyList = filteredMissingDependencies
1001-
.map((name) => `\`${name}\``)
1006+
.map((name) => {
1007+
const files = dependencyUsage.get(name);
1008+
if (!files || files.size === 0) {
1009+
return `\`${name}\``;
1010+
}
1011+
const formattedFiles = Array.from(files)
1012+
.sort()
1013+
.map((file) => `\`${file}\``)
1014+
.join(", ");
1015+
return `\`${name}\` (used in ${formattedFiles})`;
1016+
})
10021017
.join(", ");
10031018
const plural = filteredMissingDependencies.length > 1;
10041019
const baseMessage = `The module imports ${dependencyList} but does not list ${plural ? "them" : "it"} in package.json.`;

0 commit comments

Comments
 (0)