Chore: Enable Go linter gocritic (#26224)
* Chore: Enable gocritic linter Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
This commit is contained in:
@@ -36,7 +36,7 @@ func (s *queryReducer) Reduce(series *tsdb.TimeSeries) null.Float {
|
||||
}
|
||||
}
|
||||
if validPointsCount > 0 {
|
||||
value = value / float64(validPointsCount)
|
||||
value /= float64(validPointsCount)
|
||||
}
|
||||
case "sum":
|
||||
for _, point := range series.Points {
|
||||
|
||||
@@ -214,11 +214,12 @@ func (e *AlertEngine) processJob(attemptID int, attemptChan chan int, cancelChan
|
||||
evalContext.Ctx = resultHandleCtx
|
||||
evalContext.Rule.State = evalContext.GetNewState()
|
||||
if err := e.resultHandler.handle(evalContext); err != nil {
|
||||
if xerrors.Is(err, context.Canceled) {
|
||||
switch {
|
||||
case xerrors.Is(err, context.Canceled):
|
||||
e.log.Debug("Result handler returned context.Canceled")
|
||||
} else if xerrors.Is(err, context.DeadlineExceeded) {
|
||||
case xerrors.Is(err, context.DeadlineExceeded):
|
||||
e.log.Debug("Result handler returned context.DeadlineExceeded")
|
||||
} else {
|
||||
default:
|
||||
e.log.Error("Failed to handle result", "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import (
|
||||
)
|
||||
|
||||
// for stubbing in tests
|
||||
//nolint: gocritic
|
||||
var newImageUploaderProvider = func() (imguploader.ImageUploader, error) {
|
||||
return imguploader.NewImageUploader()
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ func (kn *KafkaNotifier) Notify(evalContext *alerting.EvalContext) error {
|
||||
|
||||
customData := triggMetrString
|
||||
for _, evt := range evalContext.EvalMatches {
|
||||
customData = customData + fmt.Sprintf("%s: %v\n", evt.Metric, evt.Value)
|
||||
customData += fmt.Sprintf("%s: %v\n", evt.Metric, evt.Value)
|
||||
}
|
||||
|
||||
kn.log.Info("Notifying Kafka", "alert_state", state)
|
||||
|
||||
@@ -67,13 +67,11 @@ type LineNotifier struct {
|
||||
// Notify send an alert notification to LINE
|
||||
func (ln *LineNotifier) Notify(evalContext *alerting.EvalContext) error {
|
||||
ln.log.Info("Executing line notification", "ruleId", evalContext.Rule.ID, "notification", ln.Name)
|
||||
|
||||
var err error
|
||||
switch evalContext.Rule.State {
|
||||
case models.AlertStateAlerting:
|
||||
err = ln.createAlert(evalContext)
|
||||
if evalContext.Rule.State == models.AlertStateAlerting {
|
||||
return ln.createAlert(evalContext)
|
||||
}
|
||||
return err
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ln *LineNotifier) createAlert(evalContext *alerting.EvalContext) error {
|
||||
|
||||
@@ -142,7 +142,7 @@ func (on *OpsGenieNotifier) createAlert(evalContext *alerting.EvalContext) error
|
||||
|
||||
customData := triggMetrString
|
||||
for _, evt := range evalContext.EvalMatches {
|
||||
customData = customData + fmt.Sprintf("%s: %v\n", evt.Metric, evt.Value)
|
||||
customData += fmt.Sprintf("%s: %v\n", evt.Metric, evt.Value)
|
||||
}
|
||||
|
||||
bodyJSON := simplejson.New()
|
||||
|
||||
@@ -130,11 +130,12 @@ func (sn *SensuNotifier) Notify(evalContext *alerting.EvalContext) error {
|
||||
bodyJSON.Set("output", "Grafana Metric Condition Met")
|
||||
bodyJSON.Set("evalMatches", evalContext.EvalMatches)
|
||||
|
||||
if evalContext.Rule.State == "alerting" {
|
||||
switch evalContext.Rule.State {
|
||||
case "alerting":
|
||||
bodyJSON.Set("status", 2)
|
||||
} else if evalContext.Rule.State == "no_data" {
|
||||
case "no_data":
|
||||
bodyJSON.Set("status", 1)
|
||||
} else {
|
||||
default:
|
||||
bodyJSON.Set("status", 0)
|
||||
}
|
||||
|
||||
|
||||
@@ -125,16 +125,16 @@ func (tn *TelegramNotifier) buildMessageLinkedImage(evalContext *alerting.EvalCo
|
||||
|
||||
ruleURL, err := evalContext.GetRuleURL()
|
||||
if err == nil {
|
||||
message = message + fmt.Sprintf("URL: %s\n", ruleURL)
|
||||
message += fmt.Sprintf("URL: %s\n", ruleURL)
|
||||
}
|
||||
|
||||
if evalContext.ImagePublicURL != "" {
|
||||
message = message + fmt.Sprintf("Image: %s\n", evalContext.ImagePublicURL)
|
||||
message += fmt.Sprintf("Image: %s\n", evalContext.ImagePublicURL)
|
||||
}
|
||||
|
||||
metrics := generateMetricsMessage(evalContext)
|
||||
if metrics != "" {
|
||||
message = message + fmt.Sprintf("\n<i>Metrics:</i>%s", metrics)
|
||||
message += fmt.Sprintf("\n<i>Metrics:</i>%s", metrics)
|
||||
}
|
||||
|
||||
return tn.generateTelegramCmd(message, "text", "sendMessage", func(w *multipart.Writer) {
|
||||
|
||||
@@ -177,10 +177,10 @@ func (notifier *ThreemaNotifier) Notify(evalContext *alerting.EvalContext) error
|
||||
evalContext.Rule.Name, evalContext.Rule.Message)
|
||||
ruleURL, err := evalContext.GetRuleURL()
|
||||
if err == nil {
|
||||
message = message + fmt.Sprintf("*URL:* %s\n", ruleURL)
|
||||
message += fmt.Sprintf("*URL:* %s\n", ruleURL)
|
||||
}
|
||||
if notifier.NeedsImage() && evalContext.ImagePublicURL != "" {
|
||||
message = message + fmt.Sprintf("*Image:* %s\n", evalContext.ImagePublicURL)
|
||||
message += fmt.Sprintf("*Image:* %s\n", evalContext.ImagePublicURL)
|
||||
}
|
||||
data.Set("text", message)
|
||||
|
||||
|
||||
@@ -100,11 +100,12 @@ func (handler *defaultResultHandler) handle(evalContext *EvalContext) error {
|
||||
}
|
||||
|
||||
if err := handler.notifier.SendIfNeeded(evalContext); err != nil {
|
||||
if xerrors.Is(err, context.Canceled) {
|
||||
switch {
|
||||
case xerrors.Is(err, context.Canceled):
|
||||
handler.log.Debug("handler.notifier.SendIfNeeded returned context.Canceled")
|
||||
} else if xerrors.Is(err, context.DeadlineExceeded) {
|
||||
case xerrors.Is(err, context.DeadlineExceeded):
|
||||
handler.log.Debug("handler.notifier.SendIfNeeded returned context.DeadlineExceeded")
|
||||
} else {
|
||||
default:
|
||||
handler.log.Error("handler.notifier.SendIfNeeded failed", "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ func getTimeDurationStringToSeconds(str string) (int64, error) {
|
||||
|
||||
matches := valueFormatRegex.FindAllString(str, 1)
|
||||
|
||||
if len(matches) <= 0 {
|
||||
if len(matches) == 0 {
|
||||
return 0, ErrFrequencyCouldNotBeParsed
|
||||
}
|
||||
|
||||
|
||||
@@ -190,7 +190,7 @@ func (f permissionFlags) String() string {
|
||||
r = append(r, "<no access>")
|
||||
}
|
||||
|
||||
return strings.Join(r[:], ", ")
|
||||
return strings.Join(r, ", ")
|
||||
}
|
||||
|
||||
func (sc *scenarioContext) reportSuccess() {
|
||||
|
||||
@@ -173,11 +173,12 @@ func (server *Server) Login(query *models.LoginUserQuery) (
|
||||
var authAndBind bool
|
||||
|
||||
// Check if we can use a search user
|
||||
if server.shouldAdminBind() {
|
||||
switch {
|
||||
case server.shouldAdminBind():
|
||||
if err := server.AdminBind(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else if server.shouldSingleBind() {
|
||||
case server.shouldSingleBind():
|
||||
authAndBind = true
|
||||
err = server.UserBind(
|
||||
server.singleBindDN(query.Username),
|
||||
@@ -186,7 +187,7 @@ func (server *Server) Login(query *models.LoginUserQuery) (
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
default:
|
||||
err := server.Connection.UnauthenticatedBind(server.Config.BindDN)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -368,7 +369,7 @@ func (server *Server) getSearchRequest(
|
||||
-1,
|
||||
)
|
||||
|
||||
search = search + query
|
||||
search += query
|
||||
}
|
||||
|
||||
filter := fmt.Sprintf("(|%s)", search)
|
||||
|
||||
@@ -54,13 +54,14 @@ func TestLDAPHelpers(t *testing.T) {
|
||||
|
||||
result := getUsersIteration(logins, func(previous, current int) error {
|
||||
i++
|
||||
if i == 1 {
|
||||
switch i {
|
||||
case 1:
|
||||
So(previous, ShouldEqual, 0)
|
||||
So(current, ShouldEqual, 500)
|
||||
} else if i == 2 {
|
||||
case 2:
|
||||
So(previous, ShouldEqual, 500)
|
||||
So(current, ShouldEqual, 1000)
|
||||
} else {
|
||||
default:
|
||||
So(previous, ShouldEqual, 1000)
|
||||
So(current, ShouldEqual, 1500)
|
||||
}
|
||||
|
||||
@@ -469,13 +469,13 @@ type mockLDAP struct {
|
||||
|
||||
// Login test fn
|
||||
func (mock *mockLDAP) Login(*models.LoginUserQuery) (*models.ExternalUserInfo, error) {
|
||||
mock.loginCalledTimes = mock.loginCalledTimes + 1
|
||||
mock.loginCalledTimes++
|
||||
return mock.loginReturn, mock.loginErrReturn
|
||||
}
|
||||
|
||||
// Users test fn
|
||||
func (mock *mockLDAP) Users([]string) ([]*models.ExternalUserInfo, error) {
|
||||
mock.usersCalledTimes = mock.usersCalledTimes + 1
|
||||
mock.usersCalledTimes++
|
||||
|
||||
if mock.usersCalledTimes == 1 {
|
||||
return mock.usersFirstReturn, mock.usersErrReturn
|
||||
@@ -491,13 +491,13 @@ func (mock *mockLDAP) UserBind(string, string) error {
|
||||
|
||||
// Dial test fn
|
||||
func (mock *mockLDAP) Dial() error {
|
||||
mock.dialCalledTimes = mock.dialCalledTimes + 1
|
||||
mock.dialCalledTimes++
|
||||
return mock.dialErrReturn
|
||||
}
|
||||
|
||||
// Close test fn
|
||||
func (mock *mockLDAP) Close() {
|
||||
mock.closeCalledTimes = mock.closeCalledTimes + 1
|
||||
mock.closeCalledTimes++
|
||||
}
|
||||
|
||||
func (mock *mockLDAP) Bind() error {
|
||||
|
||||
@@ -99,7 +99,7 @@ func validateDefaultUniqueness(datasources []*configs) error {
|
||||
}
|
||||
|
||||
if ds.IsDefault {
|
||||
defaultCount[ds.OrgID] = defaultCount[ds.OrgID] + 1
|
||||
defaultCount[ds.OrgID]++
|
||||
if defaultCount[ds.OrgID] > 1 {
|
||||
return ErrInvalidConfigToManyDefault
|
||||
}
|
||||
|
||||
@@ -59,13 +59,14 @@ func (rs *RenderingService) Init() error {
|
||||
}
|
||||
|
||||
// set value used for domain attribute of renderKey cookie
|
||||
if rs.Cfg.RendererUrl != "" {
|
||||
switch {
|
||||
case rs.Cfg.RendererUrl != "":
|
||||
// RendererCallbackUrl has already been passed, it won't generate an error.
|
||||
u, _ := url.Parse(rs.Cfg.RendererCallbackUrl)
|
||||
rs.domain = u.Hostname()
|
||||
} else if setting.HttpAddr != setting.DEFAULT_HTTP_ADDR {
|
||||
case setting.HttpAddr != setting.DEFAULT_HTTP_ADDR:
|
||||
rs.domain = setting.HttpAddr
|
||||
} else {
|
||||
default:
|
||||
rs.domain = "localhost"
|
||||
}
|
||||
|
||||
@@ -132,19 +133,23 @@ func (rs *RenderingService) renderUnavailableImage() *RenderResult {
|
||||
|
||||
func (rs *RenderingService) Render(ctx context.Context, opts Opts) (*RenderResult, error) {
|
||||
startTime := time.Now()
|
||||
result, err := rs.render(ctx, opts)
|
||||
elapsedTime := time.Since(startTime).Milliseconds()
|
||||
if err == ErrTimeout {
|
||||
metrics.MRenderingRequestTotal.WithLabelValues("timeout").Inc()
|
||||
metrics.MRenderingSummary.WithLabelValues("timeout").Observe(float64(elapsedTime))
|
||||
} else if err != nil {
|
||||
metrics.MRenderingRequestTotal.WithLabelValues("failure").Inc()
|
||||
metrics.MRenderingSummary.WithLabelValues("failure").Observe(float64(elapsedTime))
|
||||
} else {
|
||||
metrics.MRenderingRequestTotal.WithLabelValues("success").Inc()
|
||||
metrics.MRenderingSummary.WithLabelValues("success").Observe(float64(elapsedTime))
|
||||
result, err := rs.render(ctx, opts)
|
||||
if err != nil {
|
||||
if err == ErrTimeout {
|
||||
metrics.MRenderingRequestTotal.WithLabelValues("timeout").Inc()
|
||||
metrics.MRenderingSummary.WithLabelValues("timeout").Observe(float64(elapsedTime))
|
||||
} else {
|
||||
metrics.MRenderingRequestTotal.WithLabelValues("failure").Inc()
|
||||
metrics.MRenderingSummary.WithLabelValues("failure").Observe(float64(elapsedTime))
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
return result, err
|
||||
|
||||
metrics.MRenderingRequestTotal.WithLabelValues("success").Inc()
|
||||
metrics.MRenderingSummary.WithLabelValues("success").Observe(float64(elapsedTime))
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (rs *RenderingService) render(ctx context.Context, opts Opts) (*RenderResult, error) {
|
||||
|
||||
@@ -102,11 +102,12 @@ func SearchDashboardSnapshots(query *models.GetDashboardSnapshotsQuery) error {
|
||||
}
|
||||
|
||||
// admins can see all snapshots, everyone else can only see their own snapshots
|
||||
if query.SignedInUser.OrgRole == models.ROLE_ADMIN {
|
||||
switch {
|
||||
case query.SignedInUser.OrgRole == models.ROLE_ADMIN:
|
||||
sess.Where("org_id = ?", query.OrgId)
|
||||
} else if !query.SignedInUser.IsAnonymous {
|
||||
case !query.SignedInUser.IsAnonymous:
|
||||
sess.Where("org_id = ? AND user_id = ?", query.OrgId, query.SignedInUser.UserId)
|
||||
} else {
|
||||
default:
|
||||
query.Result = snapshots
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -116,7 +116,8 @@ func UpdateOrgQuota(cmd *models.UpdateOrgQuotaCmd) error {
|
||||
}
|
||||
} else {
|
||||
//update existing quota entry in the DB.
|
||||
if _, err := sess.ID(quota.Id).Update("a); err != nil {
|
||||
_, err := sess.ID(quota.Id).Update("a)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -218,7 +219,8 @@ func UpdateUserQuota(cmd *models.UpdateUserQuotaCmd) error {
|
||||
}
|
||||
} else {
|
||||
//update existing quota entry in the DB.
|
||||
if _, err := sess.ID(quota.Id).Update("a); err != nil {
|
||||
_, err := sess.ID(quota.Id).Update("a)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,12 +8,15 @@ func EnsureTagsExist(sess *DBSession, tags []*models.Tag) ([]*models.Tag, error)
|
||||
var existingTag models.Tag
|
||||
|
||||
// check if it exists
|
||||
if exists, err := sess.Table("tag").Where("`key`=? AND `value`=?", tag.Key, tag.Value).Get(&existingTag); err != nil {
|
||||
exists, err := sess.Table("tag").Where("`key`=? AND `value`=?", tag.Key, tag.Value).Get(&existingTag)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if exists {
|
||||
}
|
||||
if exists {
|
||||
tag.Id = existingTag.Id
|
||||
} else {
|
||||
if _, err := sess.Table("tag").Insert(tag); err != nil {
|
||||
_, err := sess.Table("tag").Insert(tag)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,11 +395,12 @@ func GetSignedInUser(query *models.GetSignedInUserQuery) error {
|
||||
LEFT OUTER JOIN org on org.id = org_user.org_id `
|
||||
|
||||
sess := x.Table("user")
|
||||
if query.UserId > 0 {
|
||||
switch {
|
||||
case query.UserId > 0:
|
||||
sess.SQL(rawSql+"WHERE u.id=?", query.UserId)
|
||||
} else if query.Login != "" {
|
||||
case query.Login != "":
|
||||
sess.SQL(rawSql+"WHERE u.login=?", query.Login)
|
||||
} else if query.Email != "" {
|
||||
case query.Email != "":
|
||||
sess.SQL(rawSql+"WHERE u.email=?", query.Email)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user