in cmd/checker/checker.go [141:195]
func (c *gerritChecker) checkChange(changeID string, psID int, language string) ([]string, error) {
ch, err := c.server.GetChange(changeID, strconv.Itoa(psID))
if err != nil {
return nil, err
}
req := linter.FormatRequest{}
for n, f := range ch.Files {
cfg, ok := linter.GetFormatter(language)
if !ok {
return nil, fmt.Errorf("language %q not configured", language)
}
if !cfg.Regex.MatchString(n) {
continue
}
req.Files = append(req.Files,
linter.File{
Language: language,
Name: n,
Content: f.Content,
})
}
if len(req.Files) == 0 {
return nil, errIrrelevant
}
rep := linter.FormatReply{}
if err := linter.Format(&req, &rep); err != nil {
_, ok := err.(rpc.ServerError)
if ok {
return nil, fmt.Errorf("server returned: %s", err)
}
return nil, err
}
var msgs []string
for _, f := range rep.Files {
orig := ch.Files[f.Name]
if orig == nil {
return nil, fmt.Errorf("result had unknown file %q", f.Name)
}
if !bytes.Equal(f.Content, orig.Content) {
msg := f.Message
if msg == "" {
msg = "found a difference"
}
msgs = append(msgs, fmt.Sprintf("%s: %s", f.Name, msg))
log.Printf("%s/%d: file %s: %s", changeID, psID, f.Name, f.Message)
} else {
log.Printf("%s/%d: file %s: OK", changeID, psID, f.Name)
}
}
return msgs, nil
}