Mercurial > malikania
comparison vera/rules/T019.tcl @ 54:0edaba9986ba
CMake: add vera++, closes 602
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 16 Dec 2016 13:59:55 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
53:fe7e3524e571 | 54:0edaba9986ba |
---|---|
1 #!/usr/bin/tclsh | |
2 # control structures should have complete curly-braced block of code | |
3 | |
4 foreach fileName [getSourceFileNames] { | |
5 | |
6 set state "start" | |
7 set prev "" | |
8 set pp_pragma_line -1 | |
9 foreach token [getTokens $fileName 1 0 -1 -1 {for if while do else leftparen rightparen leftbrace rightbrace semicolon pp_pragma}] { | |
10 set type [lindex $token 3] | |
11 set line [lindex $token 1] | |
12 | |
13 if {$state == "control"} { | |
14 if {$type == "leftparen"} { | |
15 incr parenCount | |
16 } elseif {$type == "rightparen"} { | |
17 incr parenCount -1 | |
18 if {$parenCount == 0} { | |
19 set state "expectedblock" | |
20 } | |
21 } | |
22 | |
23 } elseif {$state == "expectedblock"} { | |
24 if {$prev == "else" && $type == "if" } { | |
25 # skip | |
26 } elseif {$type != "leftbrace"} { | |
27 set line [lindex $token 1] | |
28 report $fileName $line "full block {} expected in the control structure" | |
29 } | |
30 set state "block" | |
31 } | |
32 | |
33 if {$type == "pp_pragma"} { | |
34 set pp_pragma_line $line | |
35 } elseif {$pp_pragma_line != $line} { | |
36 if {$type == "for" || $type == "if"} { | |
37 set parenCount 0 | |
38 set state "control" | |
39 } elseif {$type == "do" || $type == "else"} { | |
40 set state "expectedblock" | |
41 } elseif {$type == "while" && $prev != "rightbrace"} { | |
42 set parenCount 0 | |
43 set state "control" | |
44 } | |
45 } | |
46 set prev $type | |
47 } | |
48 } |