drone-sonar-plugin/plugin.go

72 lines
1.5 KiB
Go
Raw Permalink Normal View History

2018-08-28 16:39:09 +00:00
package main
import (
"fmt"
"os"
2018-08-28 16:39:09 +00:00
"os/exec"
2019-11-20 20:06:19 +00:00
"strings"
2018-08-28 16:39:09 +00:00
)
type (
Config struct {
2019-11-20 20:06:19 +00:00
Key string
Name string
Host string
Token string
2018-08-28 16:39:09 +00:00
2019-11-20 21:36:35 +00:00
Version string
Branch string
Sources string
Timeout string
Inclusions string
Exclusions string
Level string
2020-02-07 18:04:04 +00:00
ShowProfiling string
BranchAnalysis bool
UsingProperties bool
2018-08-28 16:39:09 +00:00
}
Plugin struct {
Config Config
}
)
func (p Plugin) Exec() error {
args := []string{
"-Dsonar.host.url=" + p.Config.Host,
"-Dsonar.login=" + p.Config.Token,
2020-02-07 18:04:04 +00:00
}
2018-08-28 16:39:09 +00:00
2020-02-07 18:04:04 +00:00
if !p.Config.UsingProperties {
argsParameter := []string{
"-Dsonar.projectKey=" + strings.Replace(p.Config.Key, "/", ":", -1),
"-Dsonar.projectName=" + p.Config.Name,
"-Dsonar.projectVersion=" + p.Config.Version,
"-Dsonar.sources=" + p.Config.Sources,
"-Dsonar.ws.timeout=" + p.Config.Timeout,
"-Dsonar.inclusions=" + p.Config.Inclusions,
"-Dsonar.exclusions=" + p.Config.Exclusions,
"-Dsonar.log.level=" + p.Config.Level,
"-Dsonar.showProfiling=" + p.Config.ShowProfiling,
"-Dsonar.scm.provider=git",
}
2020-02-07 18:16:50 +00:00
args = append(args, argsParameter...)
2018-08-28 16:39:09 +00:00
}
2019-11-20 21:36:35 +00:00
2020-02-07 18:04:04 +00:00
if p.Config.BranchAnalysis {
args = append(args, "-Dsonar.branch.name=" + p.Config.Branch)
2019-11-20 21:36:35 +00:00
}
2018-08-28 16:39:09 +00:00
cmd := exec.Command("sonar-scanner", args...)
// fmt.Printf("==> Executing: %s\n", strings.Join(cmd.Args, " "))
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
fmt.Printf("==> Code Analysis Result:\n")
err := cmd.Run()
2018-08-28 16:39:09 +00:00
if err != nil {
return err
}
return nil
}