You've already forked postgres_exporter
mirror of
https://github.com/prometheus-community/postgres_exporter.git
synced 2025-08-08 04:42:07 +03:00
This commit implements a massive refactor of the repository, and moves the build system over to use Mage (magefile.org) which should allow seamless building across multiple platforms.
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"fmt"
|
|
|
|
kingpin "gopkg.in/alecthomas/kingpin.v3-unstable"
|
|
)
|
|
|
|
type checkstyleOutput struct {
|
|
XMLName xml.Name `xml:"checkstyle"`
|
|
Version string `xml:"version,attr"`
|
|
Files []*checkstyleFile `xml:"file"`
|
|
}
|
|
|
|
type checkstyleFile struct {
|
|
Name string `xml:"name,attr"`
|
|
Errors []*checkstyleError `xml:"error"`
|
|
}
|
|
|
|
type checkstyleError struct {
|
|
Column int `xml:"column,attr"`
|
|
Line int `xml:"line,attr"`
|
|
Message string `xml:"message,attr"`
|
|
Severity string `xml:"severity,attr"`
|
|
Source string `xml:"source,attr"`
|
|
}
|
|
|
|
func outputToCheckstyle(issues chan *Issue) int {
|
|
var lastFile *checkstyleFile
|
|
out := checkstyleOutput{
|
|
Version: "5.0",
|
|
}
|
|
status := 0
|
|
for issue := range issues {
|
|
path := issue.Path.Relative()
|
|
if lastFile != nil && lastFile.Name != path {
|
|
out.Files = append(out.Files, lastFile)
|
|
lastFile = nil
|
|
}
|
|
if lastFile == nil {
|
|
lastFile = &checkstyleFile{Name: path}
|
|
}
|
|
|
|
if config.Errors && issue.Severity != Error {
|
|
continue
|
|
}
|
|
|
|
lastFile.Errors = append(lastFile.Errors, &checkstyleError{
|
|
Column: issue.Col,
|
|
Line: issue.Line,
|
|
Message: issue.Message,
|
|
Severity: string(issue.Severity),
|
|
Source: issue.Linter,
|
|
})
|
|
status = 1
|
|
}
|
|
if lastFile != nil {
|
|
out.Files = append(out.Files, lastFile)
|
|
}
|
|
d, err := xml.Marshal(&out)
|
|
kingpin.FatalIfError(err, "")
|
|
fmt.Printf("%s%s\n", xml.Header, d)
|
|
return status
|
|
}
|