88 "os"
99 "regexp"
1010 "strings"
11+ "sort"
1112)
1213
1314//uses stdin and stdout
@@ -27,10 +28,10 @@ func countMessages(log []string) (warns, errs map[string][]string) {
2728 warns = make (map [string ][]string )
2829 errs = make (map [string ][]string )
2930 tstamp := `\[\d\d:\d\d:\d\d\] `
30- fname := " *(.*)"
31- fline := `\((\d+)\): `
32- msgNr := `([A-Z]\d+): `
33- msgTxt := `([^\[]*) `
31+ fname := " *(.*)" // $1
32+ fline := `(?: \((\d+)\)| ) : ` // $2 - either line number in parenthesis or a space, followed by a colon
33+ msgNr := `([A-Z]+ \d+): ` // $3 - C4251, LNK2005, etc
34+ msgTxt := `([^\[]*) ` // $4
3435 tail := `\[[^\[\]]*\]`
3536 warnRe := regexp .MustCompile (tstamp + fname + fline + `warning ` + msgNr + msgTxt + tail )
3637 errRe := regexp .MustCompile (tstamp + fname + fline + `(?:fatal )?error ` + msgNr + msgTxt + tail )
@@ -84,8 +85,15 @@ func countMessages(log []string) (warns, errs map[string][]string) {
8485}
8586
8687func printMessages (typ string , m map [string ][]string ) {
87- for k , v := range m {
88- for i , l := range v {
88+ //sort keys
89+ keys := make ([]string , 0 , len (m ))
90+ for key := range m {
91+ keys = append (keys , key )
92+ }
93+ sort .Strings (keys )
94+ //fmt.Println(keys)
95+ for _ , k := range keys {
96+ for i , l := range m [k ] {
8997 //first string is an example, not a location
9098 if i == 0 {
9199 fmt .Printf ("%s %s (i.e. \" %s\" )\n " , typ , k , l )
0 commit comments