clang-tidy parser and executor #26
| 
						 | 
					@ -67,22 +67,22 @@ func levelFromString(levelString string) Level {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func isIgnored(line string) bool {
 | 
					func isIgnored(line string) bool {
 | 
				
			||||||
	IGNORE_REGEX := regexp.MustCompile("^error:.*$")
 | 
						ignore_Regex := regexp.MustCompile("^error:.*$")
 | 
				
			||||||
	return IGNORE_REGEX.MatchString(line)
 | 
						return ignore_Regex.MatchString(line)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func parseMessage(line string) ClangMessage {
 | 
					func parseMessage(line string) ClangMessage {
 | 
				
			||||||
	MESSAGE_REGEX := regexp.MustCompile(`^(?P<filepath>.+):(?P<line>\d+):(?P<column>\d+): (?P<level>\S+): (?P<message>.*?)(?: \[(?P<diagnostic_name>.*)\])?\n$`)
 | 
						messageRegex := regexp.MustCompile(`^(?P<filepath>.+):(?P<line>\d+):(?P<column>\d+): (?P<level>\S+): (?P<message>.*?)(?: \[(?P<diagnostic_name>.*)\])?\n$`)
 | 
				
			||||||
	regex_res := MESSAGE_REGEX.FindStringSubmatch(line)
 | 
						regexRes := messageRegex.FindStringSubmatch(line)
 | 
				
			||||||
	if len(regex_res) == 0 {
 | 
						if len(regexRes) == 0 {
 | 
				
			||||||
		return *newClangMessage("", 0, 0, UNKNOWN, "", "", nil, nil)
 | 
							return *newClangMessage("", 0, 0, UNKNOWN, "", "", nil, nil)
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		filepath := regex_res[1]
 | 
							filepath := regexRes[1]
 | 
				
			||||||
		line, _ := strconv.Atoi(regex_res[2])
 | 
							line, _ := strconv.Atoi(regexRes[2])
 | 
				
			||||||
		column, _ := strconv.Atoi(regex_res[3])
 | 
							column, _ := strconv.Atoi(regexRes[3])
 | 
				
			||||||
		level := levelFromString(regex_res[4])
 | 
							level := levelFromString(regexRes[4])
 | 
				
			||||||
		message := regex_res[5]
 | 
							message := regexRes[5]
 | 
				
			||||||
		diagnostic_name := regex_res[6]
 | 
							diagnosticName := regexRes[6]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return ClangMessage{
 | 
							return ClangMessage{
 | 
				
			||||||
			filepath:       filepath,
 | 
								filepath:       filepath,
 | 
				
			||||||
| 
						 | 
					@ -90,7 +90,7 @@ func parseMessage(line string) ClangMessage {
 | 
				
			||||||
			column:         column,
 | 
								column:         column,
 | 
				
			||||||
			level:          level,
 | 
								level:          level,
 | 
				
			||||||
			message:        message,
 | 
								message:        message,
 | 
				
			||||||
			diagnosticName: diagnostic_name,
 | 
								diagnosticName: diagnosticName,
 | 
				
			||||||
			detailsLines:   make([]string, 0),
 | 
								detailsLines:   make([]string, 0),
 | 
				
			||||||
			children:       make([]ClangMessage, 0),
 | 
								children:       make([]ClangMessage, 0),
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -98,15 +98,15 @@ func parseMessage(line string) ClangMessage {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func groupMessages(messages []ClangMessage) []ClangMessage {
 | 
					func groupMessages(messages []ClangMessage) []ClangMessage {
 | 
				
			||||||
	grouped_messages := make([]ClangMessage, 0)
 | 
						groupedMessages := make([]ClangMessage, 0)
 | 
				
			||||||
	for _, message := range messages {
 | 
						for _, message := range messages {
 | 
				
			||||||
		if message.level == NOTE {
 | 
							if message.level == NOTE {
 | 
				
			||||||
			grouped_messages[len(grouped_messages)-1].children = append(grouped_messages[len(grouped_messages)-1].children, message)
 | 
								groupedMessages[len(groupedMessages)-1].children = append(groupedMessages[len(groupedMessages)-1].children, message)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			grouped_messages = append(grouped_messages, message)
 | 
								groupedMessages = append(groupedMessages, message)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return grouped_messages
 | 
						return groupedMessages
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func convertPathsToRelative(messages *[]ClangMessage, conf Conf) {
 | 
					func convertPathsToRelative(messages *[]ClangMessage, conf Conf) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type JsonMessage struct {
 | 
					type JsonMessage struct {
 | 
				
			||||||
	Type        string                 `json:"type"`
 | 
						Type        string                 `json:"type"`
 | 
				
			||||||
	CheckName   string                 `json:"check_name"`
 | 
						CheckName   string                 `json:"checkname"`
 | 
				
			||||||
	Description string                 `json:"description"`
 | 
						Description string                 `json:"description"`
 | 
				
			||||||
	Content     map[string]interface{} `json:"content"`
 | 
						Content     map[string]interface{} `json:"content"`
 | 
				
			||||||
	Categories  []string               `json:"categories"`
 | 
						Categories  []string               `json:"categories"`
 | 
				
			||||||
| 
						 | 
					@ -151,12 +151,12 @@ func extractLocation(message ClangMessage) map[string]interface{} {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func extractOtherLocations(message ClangMessage) []map[string]interface{} {
 | 
					func extractOtherLocations(message ClangMessage) []map[string]interface{} {
 | 
				
			||||||
	location_list := []map[string]interface{}{}
 | 
						locationList := []map[string]interface{}{}
 | 
				
			||||||
	for _, child := range message.children {
 | 
						for _, child := range message.children {
 | 
				
			||||||
		location_list = append(location_list, extractLocation(child))
 | 
							locationList = append(locationList, extractLocation(child))
 | 
				
			||||||
		location_list = append(location_list, extractOtherLocations(child)...)
 | 
							locationList = append(locationList, extractOtherLocations(child)...)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return location_list
 | 
						return locationList
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func extractTrace(message ClangMessage) map[string]interface{} {
 | 
					func extractTrace(message ClangMessage) map[string]interface{} {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,10 +15,10 @@ func contains(arr []string, element string) bool {
 | 
				
			||||||
	return false
 | 
						return false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func GetScore(json_messages []JsonMessage, conf Conf) int {
 | 
					func GetScore(jsonMessages []JsonMessage, conf Conf) int {
 | 
				
			||||||
	fullmark := conf.Score
 | 
						fullmark := conf.Score
 | 
				
			||||||
	for _, json_message := range json_messages {
 | 
						for _, jsonMessage := range jsonMessages {
 | 
				
			||||||
		keyword := json_message.CheckName
 | 
							keyword := jsonMessage.CheckName
 | 
				
			||||||
		for _, match := range conf.Matches {
 | 
							for _, match := range conf.Matches {
 | 
				
			||||||
			if contains(match.Keyword, keyword) {
 | 
								if contains(match.Keyword, keyword) {
 | 
				
			||||||
				fullmark -= match.Score
 | 
									fullmark -= match.Score
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user