diff options
Diffstat (limited to 'go/tools/builders/nolint.go')
-rw-r--r-- | go/tools/builders/nolint.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/go/tools/builders/nolint.go b/go/tools/builders/nolint.go new file mode 100644 index 00000000..e6e3c043 --- /dev/null +++ b/go/tools/builders/nolint.go @@ -0,0 +1,39 @@ +// Copyright 2023 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import "strings" + +// Parse nolint directives and return the applicable linters. If all linters +// apply, returns (nil, true). +func parseNolint(text string) (map[string]bool, bool) { + text = strings.TrimLeft(text, "/ ") + if !strings.HasPrefix(text, "nolint") { + return nil, false + } + parts := strings.Split(text, ":") + if len(parts) == 1 { + return nil, true + } + linters := strings.Split(parts[1], ",") + result := map[string]bool{} + for _, linter := range linters { + if strings.EqualFold(linter, "all") { + return nil, true + } + result[linter] = true + } + return result, true +} |