Skip to content

Commit

Permalink
Fix some bugs relating to flaw counting and with module instance acco…
Browse files Browse the repository at this point in the history
…unting
  • Loading branch information
antfie committed Aug 23, 2023
1 parent d29add0 commit 3a03690
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 26 deletions.
64 changes: 44 additions & 20 deletions data/detailed_report.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ type detailedReportFlaw struct {
RemediationStatus string `xml:"remediation_status,attr"` // Fixed, New, Reopened, Mitigated, Potential False Positive
MitigationStatus string `xml:"mitigation_status,attr"` // none, accepted, rejected
Mitigation string `xml:"mitigation_status_desc,attr"` // Mitigation Accepted, Not Mitigated, Mitigation Proposed
ModulePath string
}

func (api API) populateDetailedReport(r *report.Report) {
Expand Down Expand Up @@ -126,6 +127,10 @@ func populateDetailedReportModules(r *report.Report, staticAnalysis detailedRepo

func populateModulesFromFlaws(r *report.Report, detailedReport detailedReport) {
for index, flaw := range detailedReport.Flaws {

// Set the module path e.g. /a.war/b.jar/c
detailedReport.Flaws[index].ModulePath = flaw.Module

isDependentModule := false

if strings.Contains(flaw.Module, "/") {
Expand Down Expand Up @@ -168,30 +173,49 @@ func (report detailedReport) getTriageFlawsUrl(region string) string {

func populateFlawSummaries(r *report.Report, detailedReport detailedReport) {
for _, flaw := range detailedReport.Flaws {
for moduleIndex, module := range r.Modules {
if strings.EqualFold(flaw.Module, module.Name) {
r.Modules[moduleIndex].Flaws.Total++
r.Flaws.Total++
// Update report totals
r.Flaws.Total++

if flaw.AffectsPolicyCompliance {
r.Modules[moduleIndex].Flaws.TotalAffectingPolicy++
r.Flaws.TotalAffectingPolicy++
}
if flaw.AffectsPolicyCompliance {
r.Flaws.TotalAffectingPolicy++
}

if flaw.isOpen() {
if flaw.AffectsPolicyCompliance {
r.Flaws.OpenAffectingPolicy++
} else {
r.Flaws.OpenButNotAffectingPolicy++
}
} else if flaw.isMitigated() {
r.Flaws.Mitigated++
} else if flaw.isFixed() {
r.Flaws.Fixed++
}

// Update totals per-module affected
for moduleIndex, module := range r.Modules {
// For each module in the module path
modulePathParts := strings.Split(flaw.ModulePath, "/")
for _, modulePath := range modulePathParts {
if strings.EqualFold(modulePath, module.Name) {
flawSummary := &r.Modules[moduleIndex].Flaws
flawSummary.Total++

if flaw.isOpen() {
if flaw.AffectsPolicyCompliance {
r.Modules[moduleIndex].Flaws.OpenAffectingPolicy++
r.Flaws.OpenAffectingPolicy++
} else {
r.Modules[moduleIndex].Flaws.OpenButNotAffectingPolicy++
r.Flaws.OpenButNotAffectingPolicy++
flawSummary.TotalAffectingPolicy++
}

if flaw.isOpen() {
if flaw.AffectsPolicyCompliance {
flawSummary.OpenAffectingPolicy++
} else {
flawSummary.OpenButNotAffectingPolicy++
}
} else if flaw.isMitigated() {
flawSummary.Mitigated++
} else if flaw.isFixed() {
flawSummary.Fixed++
}
} else if flaw.isMitigated() {
r.Modules[moduleIndex].Flaws.Mitigated++
r.Flaws.Mitigated++
} else if flaw.isFixed() {
r.Modules[moduleIndex].Flaws.Fixed++
r.Flaws.Fixed++
}
}
}
Expand Down
22 changes: 17 additions & 5 deletions report/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,31 @@ package report

import "strings"

func (r *Report) AddModuleInstance(moduleName string, moduleInstance ModuleInstance) {
for _, reportModule := range r.Modules {
func getReportModule(r *Report, moduleName string) *Module {
for index, reportModule := range r.Modules {
if strings.EqualFold(moduleName, reportModule.Name) {
return
return &r.Modules[index]
}
}

// Module has not been found so add it

module := Module{
Name: moduleName,
}

module.Instances = append(module.Instances, moduleInstance)

r.Modules = append(r.Modules, module)

for index, reportModule := range r.Modules {
if strings.EqualFold(moduleName, reportModule.Name) {
return &r.Modules[index]
}
}

return nil
}

func (r *Report) AddModuleInstance(moduleName string, moduleInstance ModuleInstance) {
module := getReportModule(r, moduleName)
module.Instances = append(module.Instances, moduleInstance)
}
2 changes: 1 addition & 1 deletion scripts/release.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env sh

ESCAPE=$'\e'
export VERSION="2.18"
export VERSION="2.19"

./scripts/build.sh && \

Expand Down

0 comments on commit 3a03690

Please sign in to comment.