Skip to content

Commit b746ef3

Browse files
committed
Revert "revert sarif"
This reverts commit 99059bd.
1 parent 99059bd commit b746ef3

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

cmd/analyze.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ var analyzeCmd = &cobra.Command{
488488
log.Fatalf("Failed to read merged SARIF output: %v", err)
489489
}
490490

491-
filteredData, err := utils.FilterRuleDefinitions(sarifData)
491+
filteredData, err := utils.FilterRulesFromSarif(sarifData)
492492
if err != nil {
493493
log.Fatalf("Failed to filter rules from SARIF: %v", err)
494494
}

utils/sarif.go

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -204,14 +204,8 @@ func MergeSarifOutputs(inputFiles []string, outputFile string) error {
204204
return fmt.Errorf("failed to read SARIF file %s: %w", file, err)
205205
}
206206

207-
// Filter out rule definitions from each input file
208-
filteredData, err := FilterRuleDefinitions(data)
209-
if err != nil {
210-
return fmt.Errorf("failed to filter rules from SARIF file %s: %w", file, err)
211-
}
212-
213207
var sarif SimpleSarifReport
214-
if err := json.Unmarshal(filteredData, &sarif); err != nil {
208+
if err := json.Unmarshal(data, &sarif); err != nil {
215209
return fmt.Errorf("failed to parse SARIF file %s: %w", file, err)
216210
}
217211

@@ -234,18 +228,34 @@ func MergeSarifOutputs(inputFiles []string, outputFile string) error {
234228
return nil
235229
}
236230

237-
// FilterRuleDefinitions removes rule definitions from SARIF output
238-
func FilterRuleDefinitions(sarifData []byte) ([]byte, error) {
239-
var report SarifReport
231+
// FilterRulesFromSarif removes rule definitions from SARIF output if needed
232+
// This should be called separately after MergeSarifOutputs if rule filtering is required
233+
func FilterRulesFromSarif(sarifData []byte) ([]byte, error) {
234+
// Use a map to preserve all fields during unmarshaling
235+
var report map[string]interface{}
240236
if err := json.Unmarshal(sarifData, &report); err != nil {
241237
return nil, fmt.Errorf("failed to parse SARIF data: %w", err)
242238
}
243239

244-
// Remove rules from each run
245-
for i := range report.Runs {
246-
report.Runs[i].Tool.Driver.Rules = nil
240+
// Navigate to the runs array and remove rules from each run
241+
if runs, ok := report["runs"].([]interface{}); ok {
242+
for _, run := range runs {
243+
if runMap, ok := run.(map[string]interface{}); ok {
244+
if tool, ok := runMap["tool"].(map[string]interface{}); ok {
245+
if driver, ok := tool["driver"].(map[string]interface{}); ok {
246+
// Always set rules to null to maintain consistent output format
247+
driver["rules"] = nil
248+
}
249+
}
250+
}
251+
}
247252
}
248253

249254
// Marshal back to JSON with indentation
250-
return json.MarshalIndent(report, "", " ")
255+
filteredData, err := json.MarshalIndent(report, "", " ")
256+
if err != nil {
257+
return nil, fmt.Errorf("failed to marshal filtered SARIF: %w", err)
258+
}
259+
260+
return filteredData, nil
251261
}

0 commit comments

Comments
 (0)