MCPcopy Create free account
hub / github.com/PatrickSys/codebase-context / deriveCodebaseHealth

Function deriveCodebaseHealth

src/health/derive.ts:168–207  ·  view source on GitHub ↗
({
  buildId,
  formatVersion,
  generatedAt,
  chunks,
  graph
}: DeriveCodebaseHealthParams)

Source from the content-addressed store, hash-verified

166}
167
168export function deriveCodebaseHealth({
169 buildId,
170 formatVersion,
171 generatedAt,
172 chunks,
173 graph
174}: DeriveCodebaseHealthParams): CodebaseHealthArtifact {
175 const fileMetrics = collectFileMetrics(chunks, graph);
176 const files = Array.from(fileMetrics.entries())
177 .map(([file, metrics]) => {
178 const health = getHealthLevel(metrics);
179 return {
180 ...health,
181 file
182 };
183 })
184 .sort((a, b) => {
185 const priority = { high: 0, medium: 1, low: 2 };
186 const levelDelta = priority[a.level] - priority[b.level];
187 if (levelDelta !== 0) return levelDelta;
188 if (b.score !== a.score) return b.score - a.score;
189 return a.file.localeCompare(b.file);
190 });
191
192 const highRiskFiles = files.filter((file) => file.level === 'high').length;
193 const mediumRiskFiles = files.filter((file) => file.level === 'medium').length;
194 const lowRiskFiles = files.length - highRiskFiles - mediumRiskFiles;
195
196 return {
197 header: { buildId, formatVersion },
198 generatedAt,
199 summary: {
200 files: files.length,
201 highRiskFiles,
202 mediumRiskFiles,
203 lowRiskFiles
204 },
205 files
206 };
207}

Callers 1

indexMethod · 0.85

Calls 2

collectFileMetricsFunction · 0.85
getHealthLevelFunction · 0.85

Tested by

no test coverage detected