1*9bb1b549SSpandan Das// Copyright 2023 The Bazel Authors. All rights reserved. 2*9bb1b549SSpandan Das// 3*9bb1b549SSpandan Das// Licensed under the Apache License, Version 2.0 (the "License"); 4*9bb1b549SSpandan Das// you may not use this file except in compliance with the License. 5*9bb1b549SSpandan Das// You may obtain a copy of the License at 6*9bb1b549SSpandan Das// 7*9bb1b549SSpandan Das// http://www.apache.org/licenses/LICENSE-2.0 8*9bb1b549SSpandan Das// 9*9bb1b549SSpandan Das// Unless required by applicable law or agreed to in writing, software 10*9bb1b549SSpandan Das// distributed under the License is distributed on an "AS IS" BASIS, 11*9bb1b549SSpandan Das// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*9bb1b549SSpandan Das// See the License for the specific language governing permissions and 13*9bb1b549SSpandan Das// limitations under the License. 14*9bb1b549SSpandan Das 15*9bb1b549SSpandan Daspackage main 16*9bb1b549SSpandan Das 17*9bb1b549SSpandan Dasimport "strings" 18*9bb1b549SSpandan Das 19*9bb1b549SSpandan Das// Parse nolint directives and return the applicable linters. If all linters 20*9bb1b549SSpandan Das// apply, returns (nil, true). 21*9bb1b549SSpandan Dasfunc parseNolint(text string) (map[string]bool, bool) { 22*9bb1b549SSpandan Das text = strings.TrimLeft(text, "/ ") 23*9bb1b549SSpandan Das if !strings.HasPrefix(text, "nolint") { 24*9bb1b549SSpandan Das return nil, false 25*9bb1b549SSpandan Das } 26*9bb1b549SSpandan Das parts := strings.Split(text, ":") 27*9bb1b549SSpandan Das if len(parts) == 1 { 28*9bb1b549SSpandan Das return nil, true 29*9bb1b549SSpandan Das } 30*9bb1b549SSpandan Das linters := strings.Split(parts[1], ",") 31*9bb1b549SSpandan Das result := map[string]bool{} 32*9bb1b549SSpandan Das for _, linter := range linters { 33*9bb1b549SSpandan Das if strings.EqualFold(linter, "all") { 34*9bb1b549SSpandan Das return nil, true 35*9bb1b549SSpandan Das } 36*9bb1b549SSpandan Das result[linter] = true 37*9bb1b549SSpandan Das } 38*9bb1b549SSpandan Das return result, true 39*9bb1b549SSpandan Das} 40