Add JSONWriter, Fix CVE sort order of report

This commit is contained in:
kota kanbe
2016-05-28 11:22:45 +09:00
parent 150b1c2406
commit 54d6217b93
12 changed files with 135 additions and 57 deletions

View File

@@ -20,18 +20,43 @@ package report
import (
"encoding/json"
"fmt"
"io/ioutil"
"path/filepath"
"github.com/future-architect/vuls/models"
)
// JSONWriter writes report as JSON format
// JSONWriter writes results to file.
type JSONWriter struct{}
func (w JSONWriter) Write(scanResults []models.ScanResult) (err error) {
var j []byte
if j, err = json.MarshalIndent(scanResults, "", " "); err != nil {
return
path, err := ensureResultDir()
var jsonBytes []byte
if jsonBytes, err = json.MarshalIndent(scanResults, "", " "); err != nil {
return fmt.Errorf("Failed to Marshal to JSON: %s", err)
}
all := filepath.Join(path, "all.json")
if err := ioutil.WriteFile(all, jsonBytes, 0644); err != nil {
return fmt.Errorf("Failed to write JSON. path: %s, err: %s", all, err)
}
for _, r := range scanResults {
jsonPath := ""
if r.Container.ContainerID == "" {
jsonPath = filepath.Join(path, fmt.Sprintf("%s.json", r.ServerName))
} else {
jsonPath = filepath.Join(path,
fmt.Sprintf("%s_%s.json", r.ServerName, r.Container.Name))
}
if jsonBytes, err = json.MarshalIndent(r, "", " "); err != nil {
return fmt.Errorf("Failed to Marshal to JSON: %s", err)
}
if err := ioutil.WriteFile(jsonPath, jsonBytes, 0644); err != nil {
return fmt.Errorf("Failed to write JSON. path: %s, err: %s", all, err)
}
}
fmt.Println(string(j))
return nil
}