Skip to main content
Glama

protolint-mcp

by yoheimuta
sonarReporter.go1.93 kB
package reporters import ( "encoding/json" "io" "github.com/yoheimuta/protolint/linter/report" ) const ( protolintSonarEngineId string = "protolint" protolintSonarIssueType string = "CODE_SMELL" severityError string = "MAJOR" severityWarn string = "MINOR" severityNote string = "INFO" ) type SonarReporter struct { } // for details refer to https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/importing-external-issues/generic-issue-import-format/ type sonarTextRange struct { StartLine int `json:"startLine"` StartColumn int `json:"startColumn"` } type sonarLocation struct { Message string `json:"message"` FilePath string `json:"filePath"` TextRange sonarTextRange `json:"textRange"` } type sonarIssue struct { EngineId string `json:"engineId"` RuleId string `json:"ruleId"` PrimaryLocation sonarLocation `json:"primaryLocation"` Severity string `json:"severity"` IssueType string `json:"issueType"` } func (s SonarReporter) Report(w io.Writer, fs []report.Failure) error { var issues []sonarIssue for _, f := range fs { issue := sonarIssue{ EngineId: protolintSonarEngineId, RuleId: f.RuleID(), IssueType: protolintSonarIssueType, Severity: getSonarSeverity(f.Severity()), PrimaryLocation: sonarLocation{ Message: f.Message(), FilePath: f.Pos().Filename, TextRange: sonarTextRange{ StartLine: f.Pos().Line, StartColumn: f.Pos().Column, }, }, } issues = append(issues, issue) } bs, err := json.MarshalIndent(issues, "", " ") if err != nil { return err } _, err = w.Write(bs) if err != nil { return err } return nil } func getSonarSeverity(severity string) string { if severity == "warn" { return severityWarn } if severity == "note" { return severityNote } return severityError }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yoheimuta/protolint'

If you have feedback or need assistance with the MCP directory API, please join our Discord server