@oddessentials/odd-ai-reviewers 1.7.3 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/ai_semantic_review.d.ts.map +1 -1
- package/dist/agents/ai_semantic_review.js +4 -1
- package/dist/agents/ai_semantic_review.js.map +1 -1
- package/dist/agents/control_flow/safe-source-detector.d.ts +48 -0
- package/dist/agents/control_flow/safe-source-detector.d.ts.map +1 -0
- package/dist/agents/control_flow/safe-source-detector.js +424 -0
- package/dist/agents/control_flow/safe-source-detector.js.map +1 -0
- package/dist/agents/control_flow/safe-source-patterns.d.ts +61 -0
- package/dist/agents/control_flow/safe-source-patterns.d.ts.map +1 -0
- package/dist/agents/control_flow/safe-source-patterns.js +137 -0
- package/dist/agents/control_flow/safe-source-patterns.js.map +1 -0
- package/dist/agents/control_flow/scope-stack.d.ts +113 -0
- package/dist/agents/control_flow/scope-stack.d.ts.map +1 -0
- package/dist/agents/control_flow/scope-stack.js +320 -0
- package/dist/agents/control_flow/scope-stack.js.map +1 -0
- package/dist/agents/control_flow/vulnerability-detector.d.ts +13 -0
- package/dist/agents/control_flow/vulnerability-detector.d.ts.map +1 -1
- package/dist/agents/control_flow/vulnerability-detector.js +252 -35
- package/dist/agents/control_flow/vulnerability-detector.js.map +1 -1
- package/dist/agents/opencode.d.ts.map +1 -1
- package/dist/agents/opencode.js +4 -1
- package/dist/agents/opencode.js.map +1 -1
- package/dist/agents/pr_agent.d.ts.map +1 -1
- package/dist/agents/pr_agent.js +5 -2
- package/dist/agents/pr_agent.js.map +1 -1
- package/dist/agents/security.d.ts.map +1 -1
- package/dist/agents/security.js +1 -0
- package/dist/agents/security.js.map +1 -1
- package/dist/agents/types.d.ts +6 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/benchmark/adapter.d.ts +39 -0
- package/dist/benchmark/adapter.d.ts.map +1 -0
- package/dist/benchmark/adapter.js +217 -0
- package/dist/benchmark/adapter.js.map +1 -0
- package/dist/benchmark/scoring.d.ts +100 -0
- package/dist/benchmark/scoring.d.ts.map +1 -0
- package/dist/benchmark/scoring.js +195 -0
- package/dist/benchmark/scoring.js.map +1 -0
- package/dist/context-loader.d.ts +80 -0
- package/dist/context-loader.d.ts.map +1 -0
- package/dist/context-loader.js +202 -0
- package/dist/context-loader.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +131 -4
- package/dist/main.js.map +1 -1
- package/dist/phases/index.d.ts +1 -1
- package/dist/phases/index.d.ts.map +1 -1
- package/dist/phases/index.js +1 -1
- package/dist/phases/index.js.map +1 -1
- package/dist/phases/report.d.ts +8 -1
- package/dist/phases/report.d.ts.map +1 -1
- package/dist/phases/report.js +27 -5
- package/dist/phases/report.js.map +1 -1
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +8 -3
- package/dist/preflight.js.map +1 -1
- package/dist/report/ado.d.ts +2 -0
- package/dist/report/ado.d.ts.map +1 -1
- package/dist/report/ado.js +9 -23
- package/dist/report/ado.js.map +1 -1
- package/dist/report/finding-validator.d.ts +104 -0
- package/dist/report/finding-validator.d.ts.map +1 -0
- package/dist/report/finding-validator.js +273 -0
- package/dist/report/finding-validator.js.map +1 -0
- package/dist/report/github.d.ts +2 -0
- package/dist/report/github.d.ts.map +1 -1
- package/dist/report/github.js +9 -23
- package/dist/report/github.js.map +1 -1
- package/dist/trust.d.ts +6 -0
- package/dist/trust.d.ts.map +1 -1
- package/dist/trust.js +2 -0
- package/dist/trust.js.map +1 -1
- package/package.json +5 -5
package/dist/report/ado.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ado.d.ts","sourceRoot":"","sources":["../../src/report/ado.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAuB3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ado.d.ts","sourceRoot":"","sources":["../../src/report/ado.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAuB3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sCAAsC;IACtC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uEAAuE;IACvE,yBAAyB,CAAC,EAAE,OAAO,EAAE,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAgC3E;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,OAAO,EAAE,EAC1B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,YAAY,CAAC,CA0EvB"}
|
package/dist/report/ado.js
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { deduplicateFindings, sortFindings, generateSummaryMarkdown, renderPartialFindingsSection, countBySeverity, extractFingerprintMarkers, getDedupeKey, buildProximityMap, isDuplicateByProximity, identifyStaleComments, updateProximityMap, } from './formats.js';
|
|
7
7
|
import { buildCommentToMarkersMap, shouldResolveComment, getPartiallyResolvedMarkers, hasMalformedMarkers, applyPartialResolutionVisual, emitResolutionLog, emitMalformedMarkerWarning, } from './resolution.js';
|
|
8
|
-
import { canonicalizeDiffFiles } from '../diff.js';
|
|
9
8
|
import { delay, INLINE_COMMENT_DELAY_MS, formatInlineComment, formatGroupedInlineComment, groupAdjacentFindings, } from './base.js';
|
|
10
|
-
import {
|
|
9
|
+
import { generateDriftMarkdown, shouldSuppressInlineComments, } from './line-resolver.js';
|
|
10
|
+
import { normalizeAndValidateFindings } from './finding-validator.js';
|
|
11
11
|
/**
|
|
12
12
|
* Start a commit status in 'pending' state
|
|
13
13
|
* Call this at the beginning of the review to show users the review is running
|
|
@@ -52,23 +52,10 @@ export async function reportToADO(findings, partialFindings, context, config, di
|
|
|
52
52
|
summary: true,
|
|
53
53
|
thread_status: 'active',
|
|
54
54
|
};
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const lineResolver = buildLineResolver(canonicalFiles);
|
|
60
|
-
const normalizationResult = normalizeFindingsForDiff(findings, lineResolver);
|
|
61
|
-
if (normalizationResult.stats.dropped > 0 || normalizationResult.stats.normalized > 0) {
|
|
62
|
-
console.log(`[ado] Line validation: ${normalizationResult.stats.valid} valid, ` +
|
|
63
|
-
`${normalizationResult.stats.normalized} normalized, ${normalizationResult.stats.dropped} dropped`);
|
|
64
|
-
}
|
|
65
|
-
// Compute drift signal for visibility in PR thread summary
|
|
66
|
-
const driftSignal = computeDriftSignal(normalizationResult.stats, normalizationResult.invalidDetails);
|
|
67
|
-
// Compute inline-specific drift signal for gate decisions.
|
|
68
|
-
// Uses only line-bearing findings as denominator to avoid dilution by file-level findings.
|
|
69
|
-
const inlineDriftSignal = computeInlineDriftSignal(normalizationResult.stats, normalizationResult.invalidDetails);
|
|
70
|
-
// Process normalized findings
|
|
71
|
-
const deduplicated = deduplicateFindings(normalizationResult.findings);
|
|
55
|
+
// Normalize findings against diff and run Stage 2 validation
|
|
56
|
+
const { validatedFindings, canonicalFiles, driftSignal, inlineDriftSignal, normalizationStats, invalidDetails, } = normalizeAndValidateFindings(findings, diffFiles, 'ado');
|
|
57
|
+
// Process validated findings
|
|
58
|
+
const deduplicated = deduplicateFindings(validatedFindings);
|
|
72
59
|
const sorted = sortFindings(deduplicated);
|
|
73
60
|
const counts = countBySeverity(sorted);
|
|
74
61
|
try {
|
|
@@ -93,11 +80,10 @@ export async function reportToADO(findings, partialFindings, context, config, di
|
|
|
93
80
|
statusId,
|
|
94
81
|
threadId,
|
|
95
82
|
skippedDuplicates,
|
|
96
|
-
validationStats:
|
|
97
|
-
invalidLineDetails:
|
|
98
|
-
? normalizationResult.invalidDetails
|
|
99
|
-
: undefined,
|
|
83
|
+
validationStats: normalizationStats,
|
|
84
|
+
invalidLineDetails: invalidDetails.length > 0 ? invalidDetails : undefined,
|
|
100
85
|
inlineCommentsGated: shouldSuppressInlineComments(inlineDriftSignal, config.gating.drift_gate),
|
|
86
|
+
postNormalizationFindings: sorted,
|
|
101
87
|
};
|
|
102
88
|
}
|
|
103
89
|
catch (error) {
|
package/dist/report/ado.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ado.js","sourceRoot":"","sources":["../../src/report/ado.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ado.js","sourceRoot":"","sources":["../../src/report/ado.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finding Validator Module
|
|
3
|
+
*
|
|
4
|
+
* Post-processing validation for findings before they are posted to platforms.
|
|
5
|
+
* Implements FR-011 (line validation), FR-012 (classification), FR-013 (self-contradiction),
|
|
6
|
+
* and FR-014 (validation summary).
|
|
7
|
+
*/
|
|
8
|
+
import type { Finding } from '../agents/types.js';
|
|
9
|
+
import type { DiffFile } from '../diff.js';
|
|
10
|
+
import { type ValidationStats, type InvalidLineDetail, type DriftSignal } from './line-resolver.js';
|
|
11
|
+
export type FindingClassification = 'inline' | 'file-level' | 'global' | 'cross-file';
|
|
12
|
+
export interface FindingValidationResult {
|
|
13
|
+
finding: Finding;
|
|
14
|
+
classification: FindingClassification;
|
|
15
|
+
valid: boolean;
|
|
16
|
+
filterReason?: string;
|
|
17
|
+
filterType?: 'invalid_line' | 'self_contradicting';
|
|
18
|
+
}
|
|
19
|
+
export interface FindingValidationSummary {
|
|
20
|
+
validFindings: Finding[];
|
|
21
|
+
filtered: FindingValidationResult[];
|
|
22
|
+
stats: {
|
|
23
|
+
total: number;
|
|
24
|
+
valid: number;
|
|
25
|
+
filteredByLine: number;
|
|
26
|
+
filteredBySelfContradiction: number;
|
|
27
|
+
byClassification: Record<FindingClassification, number>;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Interface for validating line numbers against diff content.
|
|
32
|
+
* Compatible with the LineResolver from line-resolver.ts but simplified
|
|
33
|
+
* to the minimal interface needed for finding validation.
|
|
34
|
+
*/
|
|
35
|
+
interface FindingLineResolver {
|
|
36
|
+
validateLine(file: string, line: number | undefined, options?: {
|
|
37
|
+
suggestNearest?: boolean;
|
|
38
|
+
}): {
|
|
39
|
+
valid: boolean;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Stage 1: Semantic-only validation (no lineResolver needed).
|
|
44
|
+
*
|
|
45
|
+
* Performs ONLY normalization-independent checks:
|
|
46
|
+
* - Classification (inline / file-level / global / cross-file)
|
|
47
|
+
* - Self-contradiction detection (info severity + dismissive language + no suggestion)
|
|
48
|
+
* - NO line validation, NO path validation against diff
|
|
49
|
+
*
|
|
50
|
+
* Used in processFindings() BEFORE platform reporters run normalizeFindingsForDiff().
|
|
51
|
+
* This ensures renamed-file and stale-line findings survive to be salvaged by normalization.
|
|
52
|
+
*
|
|
53
|
+
* @param findings - Array of findings to validate
|
|
54
|
+
* @returns Validation summary with valid findings, filtered findings, and stats
|
|
55
|
+
*/
|
|
56
|
+
export declare function validateFindingsSemantics(findings: Finding[]): FindingValidationSummary;
|
|
57
|
+
/**
|
|
58
|
+
* Stage 2: Diff-bound validation (for use AFTER normalizeFindingsForDiff()).
|
|
59
|
+
*
|
|
60
|
+
* Performs line validation against normalized diff positions and path validation.
|
|
61
|
+
* Runs only after normalization has had a chance to remap renamed paths and snap stale lines.
|
|
62
|
+
*
|
|
63
|
+
* @param findings - Array of findings (already normalized by normalizeFindingsForDiff)
|
|
64
|
+
* @param lineResolver - Resolver for validating line numbers against diff
|
|
65
|
+
* @param diffFiles - Array of file paths present in the diff
|
|
66
|
+
* @returns Validation summary with valid findings, filtered findings, and stats
|
|
67
|
+
*/
|
|
68
|
+
export declare function validateNormalizedFindings(findings: Finding[], lineResolver: FindingLineResolver, diffFiles?: string[]): FindingValidationSummary;
|
|
69
|
+
/**
|
|
70
|
+
* Full normalization + validation pipeline shared by platform reporters.
|
|
71
|
+
*
|
|
72
|
+
* Canonicalizes diff files, normalizes findings against the diff, runs Stage 2
|
|
73
|
+
* validation, and computes drift signals. Both github.ts and ado.ts delegate
|
|
74
|
+
* to this function to avoid duplicating the pipeline.
|
|
75
|
+
*/
|
|
76
|
+
export interface NormalizationPipelineResult {
|
|
77
|
+
validatedFindings: Finding[];
|
|
78
|
+
canonicalFiles: DiffFile[];
|
|
79
|
+
driftSignal: DriftSignal;
|
|
80
|
+
inlineDriftSignal: DriftSignal;
|
|
81
|
+
normalizationStats: ValidationStats;
|
|
82
|
+
invalidDetails: InvalidLineDetail[];
|
|
83
|
+
}
|
|
84
|
+
export declare function normalizeAndValidateFindings(findings: Finding[], diffFiles: DiffFile[], platform: string): NormalizationPipelineResult;
|
|
85
|
+
/**
|
|
86
|
+
* Validate and classify findings, filtering out invalid lines and self-contradicting findings.
|
|
87
|
+
*
|
|
88
|
+
* Three-pass validation:
|
|
89
|
+
* 1. Classify each finding (inline, file-level, global, cross-file)
|
|
90
|
+
* 2. Validate line numbers for inline findings
|
|
91
|
+
* 3. Detect self-contradicting findings (info + dismissive + no suggestion)
|
|
92
|
+
*
|
|
93
|
+
* @deprecated Use validateFindingsSemantics() in processFindings and
|
|
94
|
+
* validateNormalizedFindings() in platform reporters after normalization.
|
|
95
|
+
* Kept for backward compatibility (benchmark adapter).
|
|
96
|
+
*
|
|
97
|
+
* @param findings - Array of findings to validate
|
|
98
|
+
* @param lineResolver - Resolver for validating line numbers against diff
|
|
99
|
+
* @param diffFiles - Array of file paths present in the diff
|
|
100
|
+
* @returns Validation summary with valid findings, filtered findings, and stats
|
|
101
|
+
*/
|
|
102
|
+
export declare function validateFindings(findings: Finding[], lineResolver: FindingLineResolver, diffFiles?: string[]): FindingValidationSummary;
|
|
103
|
+
export {};
|
|
104
|
+
//# sourceMappingURL=finding-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-validator.d.ts","sourceRoot":"","sources":["../../src/report/finding-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEtF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,qBAAqB,CAAC;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,cAAc,GAAG,oBAAoB,CAAC;CACpD;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,MAAM,CAAC;QACpC,gBAAgB,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;KACzD,CAAC;CACH;AAED;;;;GAIG;AACH,UAAU,mBAAmB;IAC3B,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GACrC;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CACvB;AAyCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,wBAAwB,CA4EvF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,mBAAmB,EACjC,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,wBAAwB,CA8F1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IAC1C,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,EAAE,WAAW,CAAC;IAC/B,kBAAkB,EAAE,eAAe,CAAC;IACpC,cAAc,EAAE,iBAAiB,EAAE,CAAC;CACrC;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,QAAQ,EAAE,EACrB,QAAQ,EAAE,MAAM,GACf,2BAA2B,CA6C7B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,mBAAmB,EACjC,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,wBAAwB,CAE1B"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finding Validator Module
|
|
3
|
+
*
|
|
4
|
+
* Post-processing validation for findings before they are posted to platforms.
|
|
5
|
+
* Implements FR-011 (line validation), FR-012 (classification), FR-013 (self-contradiction),
|
|
6
|
+
* and FR-014 (validation summary).
|
|
7
|
+
*/
|
|
8
|
+
import { canonicalizeDiffFiles } from '../diff.js';
|
|
9
|
+
import { buildLineResolver, normalizeFindingsForDiff, computeDriftSignal, computeInlineDriftSignal, } from './line-resolver.js';
|
|
10
|
+
/**
|
|
11
|
+
* Patterns that indicate a finding is self-dismissing.
|
|
12
|
+
* When combined with info severity and no actionable suggestion,
|
|
13
|
+
* the finding is likely a false positive.
|
|
14
|
+
*/
|
|
15
|
+
const DISMISSIVE_PATTERNS = [
|
|
16
|
+
/\bno action required\b/i,
|
|
17
|
+
/\bacceptable as[- ]is\b/i,
|
|
18
|
+
/\bnot blocking\b/i,
|
|
19
|
+
/\bno change needed\b/i,
|
|
20
|
+
/\bcan be ignored\b/i,
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Check if a suggestion is actionable (contains concrete guidance beyond dismissive language).
|
|
24
|
+
*/
|
|
25
|
+
function hasActionableSuggestion(suggestion) {
|
|
26
|
+
if (!suggestion || suggestion.trim().length === 0) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const trimmed = suggestion.trim();
|
|
30
|
+
const dismissiveFragments = DISMISSIVE_PATTERNS.map((pattern) => pattern.exec(trimmed)?.[0] ?? '').filter((fragment) => fragment.length > 0);
|
|
31
|
+
if (dismissiveFragments.length === 0) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
const residual = dismissiveFragments
|
|
35
|
+
.reduce((remaining, fragment) => remaining.replace(fragment, ' '), trimmed)
|
|
36
|
+
.replace(/[.,;:()-]/g, ' ')
|
|
37
|
+
.replace(/\s+/g, ' ')
|
|
38
|
+
.trim();
|
|
39
|
+
return residual.length > 0;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Stage 1: Semantic-only validation (no lineResolver needed).
|
|
43
|
+
*
|
|
44
|
+
* Performs ONLY normalization-independent checks:
|
|
45
|
+
* - Classification (inline / file-level / global / cross-file)
|
|
46
|
+
* - Self-contradiction detection (info severity + dismissive language + no suggestion)
|
|
47
|
+
* - NO line validation, NO path validation against diff
|
|
48
|
+
*
|
|
49
|
+
* Used in processFindings() BEFORE platform reporters run normalizeFindingsForDiff().
|
|
50
|
+
* This ensures renamed-file and stale-line findings survive to be salvaged by normalization.
|
|
51
|
+
*
|
|
52
|
+
* @param findings - Array of findings to validate
|
|
53
|
+
* @returns Validation summary with valid findings, filtered findings, and stats
|
|
54
|
+
*/
|
|
55
|
+
export function validateFindingsSemantics(findings) {
|
|
56
|
+
const results = [];
|
|
57
|
+
const stats = {
|
|
58
|
+
total: findings.length,
|
|
59
|
+
valid: 0,
|
|
60
|
+
filteredByLine: 0,
|
|
61
|
+
filteredBySelfContradiction: 0,
|
|
62
|
+
byClassification: {
|
|
63
|
+
inline: 0,
|
|
64
|
+
'file-level': 0,
|
|
65
|
+
global: 0,
|
|
66
|
+
'cross-file': 0,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
// Pass 1: Classify each finding (no diff file set — classification is best-effort)
|
|
70
|
+
for (const finding of findings) {
|
|
71
|
+
let classification;
|
|
72
|
+
if (!finding.file) {
|
|
73
|
+
classification = 'global';
|
|
74
|
+
}
|
|
75
|
+
else if (finding.line === undefined) {
|
|
76
|
+
classification = 'file-level';
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
classification = 'inline';
|
|
80
|
+
}
|
|
81
|
+
stats.byClassification[classification]++;
|
|
82
|
+
results.push({
|
|
83
|
+
finding,
|
|
84
|
+
classification,
|
|
85
|
+
valid: true,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
// Pass 2 (line validation): SKIPPED — deferred to Stage 2 after normalization
|
|
89
|
+
// Pass 3: Self-contradiction detection
|
|
90
|
+
for (const result of results) {
|
|
91
|
+
if (!result.valid)
|
|
92
|
+
continue;
|
|
93
|
+
// Only filter info severity - NEVER filter warning/error
|
|
94
|
+
if (result.finding.severity !== 'info')
|
|
95
|
+
continue;
|
|
96
|
+
const matchedPattern = DISMISSIVE_PATTERNS.find((p) => p.test(result.finding.message));
|
|
97
|
+
if (!matchedPattern)
|
|
98
|
+
continue;
|
|
99
|
+
if (hasActionableSuggestion(result.finding.suggestion))
|
|
100
|
+
continue;
|
|
101
|
+
// All 3 conditions met: info + dismissive + no actionable suggestion
|
|
102
|
+
result.valid = false;
|
|
103
|
+
result.filterReason = `Self-contradicting: info severity with dismissive language (${matchedPattern.source})`;
|
|
104
|
+
result.filterType = 'self_contradicting';
|
|
105
|
+
stats.filteredBySelfContradiction++;
|
|
106
|
+
console.log('[router] [finding-validator] [filtered:semantic]', {
|
|
107
|
+
file: result.finding.file,
|
|
108
|
+
line: result.finding.line,
|
|
109
|
+
reason: result.filterReason,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
// Build final arrays
|
|
113
|
+
const validFindings = [];
|
|
114
|
+
const filtered = [];
|
|
115
|
+
for (const result of results) {
|
|
116
|
+
if (result.valid) {
|
|
117
|
+
validFindings.push(result.finding);
|
|
118
|
+
stats.valid++;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
filtered.push(result);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { validFindings, filtered, stats };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Stage 2: Diff-bound validation (for use AFTER normalizeFindingsForDiff()).
|
|
128
|
+
*
|
|
129
|
+
* Performs line validation against normalized diff positions and path validation.
|
|
130
|
+
* Runs only after normalization has had a chance to remap renamed paths and snap stale lines.
|
|
131
|
+
*
|
|
132
|
+
* @param findings - Array of findings (already normalized by normalizeFindingsForDiff)
|
|
133
|
+
* @param lineResolver - Resolver for validating line numbers against diff
|
|
134
|
+
* @param diffFiles - Array of file paths present in the diff
|
|
135
|
+
* @returns Validation summary with valid findings, filtered findings, and stats
|
|
136
|
+
*/
|
|
137
|
+
export function validateNormalizedFindings(findings, lineResolver, diffFiles) {
|
|
138
|
+
const diffFileSet = new Set(diffFiles ?? []);
|
|
139
|
+
const results = [];
|
|
140
|
+
const stats = {
|
|
141
|
+
total: findings.length,
|
|
142
|
+
valid: 0,
|
|
143
|
+
filteredByLine: 0,
|
|
144
|
+
filteredBySelfContradiction: 0,
|
|
145
|
+
byClassification: {
|
|
146
|
+
inline: 0,
|
|
147
|
+
'file-level': 0,
|
|
148
|
+
global: 0,
|
|
149
|
+
'cross-file': 0,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
// Pass 1: Classify each finding
|
|
153
|
+
for (const finding of findings) {
|
|
154
|
+
let classification;
|
|
155
|
+
if (!finding.file) {
|
|
156
|
+
classification = 'global';
|
|
157
|
+
}
|
|
158
|
+
else if (diffFileSet.size > 0 && !diffFileSet.has(finding.file)) {
|
|
159
|
+
classification = 'cross-file';
|
|
160
|
+
console.log(`[router] [finding-validator] cross-file finding for ${finding.file}`);
|
|
161
|
+
}
|
|
162
|
+
else if (finding.line === undefined) {
|
|
163
|
+
classification = 'file-level';
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
classification = 'inline';
|
|
167
|
+
}
|
|
168
|
+
stats.byClassification[classification]++;
|
|
169
|
+
results.push({
|
|
170
|
+
finding,
|
|
171
|
+
classification,
|
|
172
|
+
valid: true,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
// Pass 2: Line validation (inline findings only)
|
|
176
|
+
for (const result of results) {
|
|
177
|
+
if (result.classification === 'inline' && result.finding.line !== undefined) {
|
|
178
|
+
const validation = lineResolver.validateLine(result.finding.file, result.finding.line);
|
|
179
|
+
if (!validation.valid) {
|
|
180
|
+
result.valid = false;
|
|
181
|
+
result.filterReason = `Line ${result.finding.line} not in diff range for ${result.finding.file}`;
|
|
182
|
+
result.filterType = 'invalid_line';
|
|
183
|
+
stats.filteredByLine++;
|
|
184
|
+
console.log('[router] [finding-validator] [filtered:unplaceable]', {
|
|
185
|
+
file: result.finding.file,
|
|
186
|
+
line: result.finding.line,
|
|
187
|
+
reason: result.filterReason,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Pass 3: Self-contradiction detection (all findings that passed Pass 2)
|
|
193
|
+
for (const result of results) {
|
|
194
|
+
if (!result.valid)
|
|
195
|
+
continue;
|
|
196
|
+
if (result.finding.severity !== 'info')
|
|
197
|
+
continue;
|
|
198
|
+
const matchedPattern = DISMISSIVE_PATTERNS.find((p) => p.test(result.finding.message));
|
|
199
|
+
if (!matchedPattern)
|
|
200
|
+
continue;
|
|
201
|
+
if (hasActionableSuggestion(result.finding.suggestion))
|
|
202
|
+
continue;
|
|
203
|
+
result.valid = false;
|
|
204
|
+
result.filterReason = `Self-contradicting: info severity with dismissive language (${matchedPattern.source})`;
|
|
205
|
+
result.filterType = 'self_contradicting';
|
|
206
|
+
stats.filteredBySelfContradiction++;
|
|
207
|
+
console.log('[router] [finding-validator] [filtered:semantic]', {
|
|
208
|
+
file: result.finding.file,
|
|
209
|
+
line: result.finding.line,
|
|
210
|
+
reason: result.filterReason,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
// Build final arrays
|
|
214
|
+
const validFindings = [];
|
|
215
|
+
const filtered = [];
|
|
216
|
+
for (const result of results) {
|
|
217
|
+
if (result.valid) {
|
|
218
|
+
validFindings.push(result.finding);
|
|
219
|
+
stats.valid++;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
filtered.push(result);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return { validFindings, filtered, stats };
|
|
226
|
+
}
|
|
227
|
+
export function normalizeAndValidateFindings(findings, diffFiles, platform) {
|
|
228
|
+
const canonicalFiles = canonicalizeDiffFiles(diffFiles);
|
|
229
|
+
const lineResolver = buildLineResolver(canonicalFiles);
|
|
230
|
+
const normalizationResult = normalizeFindingsForDiff(findings, lineResolver);
|
|
231
|
+
if (normalizationResult.stats.dropped > 0 || normalizationResult.stats.normalized > 0) {
|
|
232
|
+
console.log(`[${platform}] Line validation: ${normalizationResult.stats.valid} valid, ` +
|
|
233
|
+
`${normalizationResult.stats.normalized} normalized, ${normalizationResult.stats.dropped} dropped`);
|
|
234
|
+
}
|
|
235
|
+
const diffFilePaths = canonicalFiles.map((f) => f.path);
|
|
236
|
+
const stage2Result = validateNormalizedFindings(normalizationResult.findings, lineResolver, diffFilePaths);
|
|
237
|
+
if (stage2Result.filtered.length > 0) {
|
|
238
|
+
console.log(`[${platform}] Stage 2 validation: ${stage2Result.stats.valid} valid, ` +
|
|
239
|
+
`${stage2Result.stats.filteredByLine} filtered by line, ` +
|
|
240
|
+
`${stage2Result.stats.filteredBySelfContradiction} self-contradicting`);
|
|
241
|
+
}
|
|
242
|
+
const driftSignal = computeDriftSignal(normalizationResult.stats, normalizationResult.invalidDetails);
|
|
243
|
+
const inlineDriftSignal = computeInlineDriftSignal(normalizationResult.stats, normalizationResult.invalidDetails);
|
|
244
|
+
return {
|
|
245
|
+
validatedFindings: stage2Result.validFindings,
|
|
246
|
+
canonicalFiles,
|
|
247
|
+
driftSignal,
|
|
248
|
+
inlineDriftSignal,
|
|
249
|
+
normalizationStats: normalizationResult.stats,
|
|
250
|
+
invalidDetails: normalizationResult.invalidDetails,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Validate and classify findings, filtering out invalid lines and self-contradicting findings.
|
|
255
|
+
*
|
|
256
|
+
* Three-pass validation:
|
|
257
|
+
* 1. Classify each finding (inline, file-level, global, cross-file)
|
|
258
|
+
* 2. Validate line numbers for inline findings
|
|
259
|
+
* 3. Detect self-contradicting findings (info + dismissive + no suggestion)
|
|
260
|
+
*
|
|
261
|
+
* @deprecated Use validateFindingsSemantics() in processFindings and
|
|
262
|
+
* validateNormalizedFindings() in platform reporters after normalization.
|
|
263
|
+
* Kept for backward compatibility (benchmark adapter).
|
|
264
|
+
*
|
|
265
|
+
* @param findings - Array of findings to validate
|
|
266
|
+
* @param lineResolver - Resolver for validating line numbers against diff
|
|
267
|
+
* @param diffFiles - Array of file paths present in the diff
|
|
268
|
+
* @returns Validation summary with valid findings, filtered findings, and stats
|
|
269
|
+
*/
|
|
270
|
+
export function validateFindings(findings, lineResolver, diffFiles) {
|
|
271
|
+
return validateNormalizedFindings(findings, lineResolver, diffFiles);
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=finding-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-validator.js","sourceRoot":"","sources":["../../src/report/finding-validator.ts"],"names":[],"mappings":"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"}
|
package/dist/report/github.d.ts
CHANGED
|
@@ -31,6 +31,8 @@ export interface ReportResult {
|
|
|
31
31
|
invalidLineDetails?: InvalidLineDetail[];
|
|
32
32
|
/** Whether inline comments were suppressed by drift gate */
|
|
33
33
|
inlineCommentsGated?: boolean;
|
|
34
|
+
/** Post-normalization validated findings for gating (after Stage 2) */
|
|
35
|
+
postNormalizationFindings?: Finding[];
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* Start a check run in 'in_progress' state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/report/github.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAyB3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/report/github.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAyB3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAS3C,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sCAAsC;IACtC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uEAAuE;IACvE,yBAAyB,CAAC,EAAE,OAAO,EAAE,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB3E;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE;IACN,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,OAAO,EAAE,EAC1B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,YAAY,CAAC,CAmHvB"}
|
package/dist/report/github.js
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
import { Octokit } from '@octokit/rest';
|
|
7
7
|
import { deduplicateFindings, sortFindings, generateSummaryMarkdown, renderPartialFindingsSection, toGitHubAnnotation, countBySeverity, extractFingerprintMarkers, getDedupeKey, buildProximityMap, isDuplicateByProximity, identifyStaleComments, updateProximityMap, } from './formats.js';
|
|
8
8
|
import { buildCommentToMarkersMap, shouldResolveComment, getPartiallyResolvedMarkers, hasMalformedMarkers, applyPartialResolutionVisual, stripOwnFingerprintMarkers, emitResolutionLog, emitMalformedMarkerWarning, } from './resolution.js';
|
|
9
|
-
import { canonicalizeDiffFiles } from '../diff.js';
|
|
10
9
|
import { delay, INLINE_COMMENT_DELAY_MS, formatInlineComment, formatGroupedInlineComment, groupAdjacentFindings, } from './base.js';
|
|
11
|
-
import {
|
|
10
|
+
import { generateDriftMarkdown, shouldSuppressInlineComments, } from './line-resolver.js';
|
|
11
|
+
import { normalizeAndValidateFindings } from './finding-validator.js';
|
|
12
12
|
/**
|
|
13
13
|
* Start a check run in 'in_progress' state
|
|
14
14
|
* Call this at the beginning of the review to show users the review is running
|
|
@@ -71,23 +71,10 @@ export async function reportToGitHub(findings, partialFindings, context, config,
|
|
|
71
71
|
max_inline_comments: 20,
|
|
72
72
|
summary: true,
|
|
73
73
|
};
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const lineResolver = buildLineResolver(canonicalFiles);
|
|
79
|
-
const normalizationResult = normalizeFindingsForDiff(findings, lineResolver);
|
|
80
|
-
if (normalizationResult.stats.dropped > 0 || normalizationResult.stats.normalized > 0) {
|
|
81
|
-
console.log(`[github] Line validation: ${normalizationResult.stats.valid} valid, ` +
|
|
82
|
-
`${normalizationResult.stats.normalized} normalized, ${normalizationResult.stats.dropped} dropped`);
|
|
83
|
-
}
|
|
84
|
-
// Compute drift signal for visibility in check summary
|
|
85
|
-
const driftSignal = computeDriftSignal(normalizationResult.stats, normalizationResult.invalidDetails);
|
|
86
|
-
// Compute inline-specific drift signal for gate decisions.
|
|
87
|
-
// Uses only line-bearing findings as denominator to avoid dilution by file-level findings.
|
|
88
|
-
const inlineDriftSignal = computeInlineDriftSignal(normalizationResult.stats, normalizationResult.invalidDetails);
|
|
89
|
-
// Process normalized findings
|
|
90
|
-
const deduplicated = deduplicateFindings(normalizationResult.findings);
|
|
74
|
+
// Normalize findings against diff and run Stage 2 validation
|
|
75
|
+
const { validatedFindings, canonicalFiles, driftSignal, inlineDriftSignal, normalizationStats, invalidDetails, } = normalizeAndValidateFindings(findings, diffFiles, 'github');
|
|
76
|
+
// Process validated findings
|
|
77
|
+
const deduplicated = deduplicateFindings(validatedFindings);
|
|
91
78
|
const sorted = sortFindings(deduplicated);
|
|
92
79
|
const counts = countBySeverity(sorted);
|
|
93
80
|
try {
|
|
@@ -116,11 +103,10 @@ export async function reportToGitHub(findings, partialFindings, context, config,
|
|
|
116
103
|
commentId,
|
|
117
104
|
skippedDuplicates,
|
|
118
105
|
checkRunCompleted,
|
|
119
|
-
validationStats:
|
|
120
|
-
invalidLineDetails:
|
|
121
|
-
? normalizationResult.invalidDetails
|
|
122
|
-
: undefined,
|
|
106
|
+
validationStats: normalizationStats,
|
|
107
|
+
invalidLineDetails: invalidDetails.length > 0 ? invalidDetails : undefined,
|
|
123
108
|
inlineCommentsGated: shouldSuppressInlineComments(inlineDriftSignal, config.gating.drift_gate),
|
|
109
|
+
postNormalizationFindings: sorted,
|
|
124
110
|
};
|
|
125
111
|
}
|
|
126
112
|
catch (error) {
|