sonarqube

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2019 License: MIT Imports: 13 Imported by: 0

README

Alauda SonarQube Go Client

This is a simple sonarqube client for go, it just supports SonarQube 6.0 and SonarQube 6.4. bellow APIs are supported:

  • SystemStatus: get api/system/status
  • CreateProject: post api/projects/create
  • GetSettings: get api/settings/values
  • SetSettings: post api/settings/set
  • ListQualityGates: get api/qualitygates/list
  • SelectQualityGates: post api/qualitygates/select

Requirements

  • golang 1.8+
  • make

Example

  • get system status info
package main

import(
    "fmt"
    "log"

    "github.com/bergamot/alauda/sonarqube"
)

func main() {
    endpoint := "your sonar endpoit" // like http://sonar.alauda.cn
    token := "your sonar token"
    sonar := sonarqube.NewSonarQubeArgs(endpoint, token)

    status, err := sonar.SystemStatus()
    if err != nil {
        log.Fatalf("method SystemStatus error: %v", err)
    }
    fmt.Println("system status is ", status)
}
  • create project
package main

import(
    "fmt"
    "log"

    "github.com/bergamot/alauda/sonarqube"
)

func main() {
    endpoint := "your sonar endpoit" // like http://sonar.alauda.cn
    token := "your sonar token"
    sonar := sonarqube.NewSonarQubeArgs(endpoint, token)
    name := "sonar-test"
	projectKey := "sonar-test-key"

    err := sonar.CreateProject(name, projectKey)
    
    if err != nil {
        log.Fatalf("method CreateProject error: %v", err)
    }
}
  • list quality gates
package main

import(
    "fmt"
    "log"

    "github.com/bergamot/alauda/sonarqube"
)

func main() {
    endpoint := "your sonar endpoit" // like http://sonar.alauda.cn
    token := "your sonar token"
    sonar := sonarqube.NewSonarQubeArgs(endpoint, token)

    ret, err := sonar.ListQualityGates(name, projectKey)
    
    if err != nil {
        log.Fatalf("method ListQualityGates error: %v", err)
    }
    fmt.Println("quality gates of sonar are: ", ret)
}

Contribute

  1. clone code
git clone https://github.com/alauda/bergamot.git $GOPATH/src/github.com/alauda/bergamot
  1. write code
  2. test, remember provide SONAR_ENDPOINT and SONAR_TOKEN when test:
SONAR_ENDPOINT=sonar_url SONAR_TOKEN=sonar_token make test
  1. pr on GitHub

Documentation

Index

Constants

View Source
const (
	SONAR_VERSION_60 = "6.0.0"
	SONAR_VERSION_64 = "6.4.0"
)

Variables

This section is empty.

Functions

func GetDefaultLogger

func GetDefaultLogger(prefix string) log.BasicLogger

GetDefaultLogger get default logger for sonar

Types

type AnalysisTaskDetails

type AnalysisTaskDetails struct {
	AnalysisId    string `json:"analysisId"`
	ComponentKey  string `json:"componentKey"`
	ComponentName string `json:"componentName"`
	// branch is available after SonarQube 6.6
	Branch       string `json:"branch,omitempty"`
	Status       string `json:"status"`
	ErrorMessage string `json:"errorMessage,omitempty"`
}

type SonarQube

type SonarQube struct {
	Endpoint string
	Version  string
	Token    string
	Logger   log.BasicLogger
	// contains filtered or unexported fields
}

SonarQube client of Sonarqube

func NewSonarQube

func NewSonarQube() (*SonarQube, error)

NewSonarQube return sonarqube, retrive endpoint and token from env

func NewSonarQubeArgs

func NewSonarQubeArgs(endpoint, token string) (*SonarQube, error)

NewSonarQubeArgs return sonarqube with args init

func (*SonarQube) CreateProject

func (sonar *SonarQube) CreateProject(name, projectKey string) error

CreateProject create sonar project

func (*SonarQube) GetAnalysisTask

func (sonar *SonarQube) GetAnalysisTask(ceTaskID string) (interface{}, error)

GetAnalysisTask

func (*SonarQube) GetAnalysisTaskDetails

func (sonar *SonarQube) GetAnalysisTaskDetails(ceTaskID string) (details AnalysisTaskDetails, err error)

GetAnalysisTaskDetails get status of task

func (*SonarQube) GetProjectID

func (sonar *SonarQube) GetProjectID(projectKey string) (string, error)

GetProjectID get project id by key, only for sonar 6.0.0

func (*SonarQube) GetQualityGatesProjectStatus

func (sonar *SonarQube) GetQualityGatesProjectStatus(analysisId, projectId, projectKey string) (string, error)

GetQualityGatesProjectStatus

func (*SonarQube) GetQualityGatesProjectStatusData

func (sonar *SonarQube) GetQualityGatesProjectStatusData(analysisId, projectId, projectKey string) (interface{}, error)

GetQualityGatesProjectStatusData

func (*SonarQube) GetSettings

func (sonar *SonarQube) GetSettings(component string, keys []string) (interface{}, error)

GetSettings get sonar project settings since 6.3 和alauda-sonar-scanner中的sonarClient兼容,200 ~ 400 返回json 数据,nil;>=400, 返回字符串,error

func (*SonarQube) GetVersion

func (sonar *SonarQube) GetVersion() (string, error)

GetVersion get sonarqube server version like 6.0.0

func (*SonarQube) IsVersion60

func (sonar *SonarQube) IsVersion60() bool

IsVersion60 true version 6.0.0

func (*SonarQube) IsVersion64

func (sonar *SonarQube) IsVersion64() bool

IsVersion64 true version 6.4.0

func (*SonarQube) ListLanguages

func (sonar *SonarQube) ListLanguages() (interface{}, error)

ListLanguages list sonar languages

func (*SonarQube) ListQualityGates

func (sonar *SonarQube) ListQualityGates() (interface{}, error)

ListQualityGates list sonar quality gates

func (*SonarQube) SelectQualityGates

func (sonar *SonarQube) SelectQualityGates(gateID int, projectID, projectKey string) (interface{}, error)

SelectQualityGates select sonar quality gates

func (*SonarQube) SetLogger

func (sonar *SonarQube) SetLogger(logger log.BasicLogger)

SetLogger set logger to sonar default logger

func (*SonarQube) SetSettings

func (sonar *SonarQube) SetSettings(
	component string, fieldValues map[string]string,
	key string, value string, values []string,
) (interface{}, error)

SetSettings set sonar project settings

func (*SonarQube) SystemStatus

func (sonar *SonarQube) SystemStatus() (map[string]string, error)

SystemStatus get sonarqube system status

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL