Unexport junit xml structs and some further refactoring.

This commit is contained in:
Wong Her Laang 2018-01-27 14:45:04 +08:00
parent fdc78c0c47
commit 5b91afec36

View file

@ -7,30 +7,37 @@ import (
"github.com/GoASTScanner/gas" "github.com/GoASTScanner/gas"
) )
type JUnitXMLReport struct { type junitXMLReport struct {
XMLName xml.Name `xml:"testsuites"` XMLName xml.Name `xml:"testsuites"`
Testsuites []Testsuite `xml:"testsuite"` Testsuites []testsuite `xml:"testsuite"`
} }
type Testsuite struct { type testsuite struct {
XMLName xml.Name `xml:"testsuite"` XMLName xml.Name `xml:"testsuite"`
Name string `xml:"name,attr"` Name string `xml:"name,attr"`
Tests int `xml:"tests,attr"` Tests int `xml:"tests,attr"`
Testcases []Testcase `xml:"testcase"` Testcases []testcase `xml:"testcase"`
} }
type Testcase struct { type testcase struct {
XMLName xml.Name `xml:"testcase"` XMLName xml.Name `xml:"testcase"`
Name string `xml:"name,attr"` Name string `xml:"name,attr"`
Failure Failure `xml:"failure"` Failure failure `xml:"failure"`
} }
type Failure struct { type failure struct {
XMLName xml.Name `xml:"failure"` XMLName xml.Name `xml:"failure"`
Message string `xml:"message,attr"` Message string `xml:"message,attr"`
Text string `xml:",innerxml"` Text string `xml:",innerxml"`
} }
func genereratePlaintext(issue *gas.Issue) string {
return "Results:\n" +
"[" + issue.File + ":" + issue.Line + "] - " +
issue.What + " (Confidence: " + strconv.Itoa(int(issue.Confidence)) +
", Severity: " + strconv.Itoa(int(issue.Severity)) + ")\n" + "> " + issue.Code
}
func groupDataByRules(data *reportInfo) map[string][]*gas.Issue { func groupDataByRules(data *reportInfo) map[string][]*gas.Issue {
groupedData := make(map[string][]*gas.Issue) groupedData := make(map[string][]*gas.Issue)
for _, issue := range data.Issues { for _, issue := range data.Issues {
@ -43,25 +50,19 @@ func groupDataByRules(data *reportInfo) map[string][]*gas.Issue {
return groupedData return groupedData
} }
func createJUnitXMLStruct(groupedData map[string][]*gas.Issue) JUnitXMLReport { func createJUnitXMLStruct(groupedData map[string][]*gas.Issue) junitXMLReport {
var xmlReport JUnitXMLReport var xmlReport junitXMLReport
for what, issues := range groupedData { for what, issues := range groupedData {
testsuite := Testsuite{ testsuite := testsuite{
Name: what, Name: what,
Tests: len(issues), Tests: len(issues),
} }
for _, issue := range issues { for _, issue := range issues {
text := "Results:\n" testcase := testcase{
text += "[" + issue.File + ":" + issue.Line + "] - " +
issue.What + " (Confidence: " + strconv.Itoa(int(issue.Confidence)) +
", Severity: " + strconv.Itoa(int(issue.Severity)) + ")\n"
text += "> " + issue.Code
testcase := Testcase{
Name: issue.File, Name: issue.File,
Failure: Failure{ Failure: failure{
Message: "Found 1 vulnerability. See stacktrace for details.", Message: "Found 1 vulnerability. See stacktrace for details.",
Text: text, Text: genereratePlaintext(issue),
}, },
} }
testsuite.Testcases = append(testsuite.Testcases, testcase) testsuite.Testcases = append(testsuite.Testcases, testcase)