1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
import sys
import codecs
import cpplint
import utils
class CheckForConfigH:
def __init__(self):
self.found_configh = False
def __call__(self, filename, clean_lines, line_num, error):
if self.found_configh:
return
cur_line = clean_lines.elided[line_num]
self.found_configh = cur_line.startswith('#include "mongo/config.h"')
if not self.found_configh and "MONGO_CONFIG_" in cur_line:
error(filename, line_num, 'build/config_h_include', 5,
'MONGO_CONFIG define used without prior inclusion of config.h.')
def run_lint( paths, nudgeOn=False ):
# errors are as of 10/14
# idea is not to let it any new type of error
# as we knock one out, we should remove line
# note: not all of these are things we want, so please check first
nudge = [] # things we'd like to turn on sson, so don't make worse
later = [] # things that are unlikely anytime soon, so meh
never = [] # things we totally disagree with
nudge.append( '-build/c++11' ) # errors found: 6
never.append( '-build/header_guard' ) # errors found: 345
nudge.append( '-build/include' ) # errors found: 924
nudge.append( '-build/include_order' ) # errors found: 511
nudge.append( '-build/include_what_you_use' ) # errors found: 986
nudge.append( '-build/namespaces' ) # errors found: 131
never.append( '-readability/braces' ) # errors found: 880
later.append( '-readability/casting' ) # errors found: 748
nudge.append( '-readability/check' ) # errors found: 7
nudge.append( '-readability/fn_size' ) # errors found: 1
nudge.append( '-readability/function' ) # errors found: 49
nudge.append( '-readability/inheritance' ) # errors found: 7
nudge.append( '-readability/multiline_comment' ) # errors found: 1
later.append( '-readability/namespace' ) # errors found: 876
later.append( '-readability/streams' ) # errors found: 72
later.append( '-readability/todo' ) # errors found: 309
nudge.append( '-runtime/arrays' ) # errors found: 5
later.append( '-runtime/explicit' ) # errors found: 322
never.append( '-runtime/indentation_namespace') # errors found: 4601
later.append( '-runtime/int' ) # errors found: 1420
later.append( '-runtime/printf' ) # errors found: 29
nudge.append( '-runtime/references' ) # errors found: 1338
nudge.append( '-runtime/string' ) # errors found: 6
nudge.append( '-runtime/threadsafe_fn' ) # errors found: 46
never.append( '-whitespace/blank_line' ) # errors found: 2080
never.append( '-whitespace/braces' ) # errors found: 962
later.append( '-whitespace/comma' ) # errors found: 621
later.append( '-whitespace/comments' ) # errors found: 2189
nudge.append( '-whitespace/empty_loop_body' ) # errors found: 19
later.append( '-whitespace/end_of_line' ) # errors found: 4340
later.append( '-whitespace/line_length' ) # errors found: 14500
never.append( '-whitespace/indent' ) # errors found: 4108
later.append( '-whitespace/newline' ) # errors found: 1520
nudge.append( '-whitespace/operators' ) # errors found: 2297
never.append( '-whitespace/parens' ) # errors found: 49058
nudge.append( '-whitespace/semicolon' ) # errors found: 121
nudge.append( '-whitespace/tab' ) # errors found: 233
filters = later + never
if not nudgeOn:
filters = filters + nudge
sourceFiles = []
for x in paths:
utils.getAllSourceFiles( sourceFiles, x )
args = ["--linelength=100",
"--filter=" + ",".join( filters ),
"--counting=detailed" ] + sourceFiles
filenames = cpplint.ParseArguments( args )
def _ourIsTestFilename(fn):
if fn.find( "dbtests" ) >= 0:
return True
if fn.endswith( "_test.cpp" ):
return True
return False
cpplint._IsTestFilename = _ourIsTestFilename
# Change stderr to write with replacement characters so we don't die
# if we try to print something containing non-ASCII characters.
sys.stderr = codecs.StreamReaderWriter(sys.stderr,
codecs.getreader('utf8'),
codecs.getwriter('utf8'),
'replace')
cpplint._cpplint_state.ResetErrorCounts()
for filename in filenames:
config_h_check_obj = CheckForConfigH()
cpplint.ProcessFile(filename,
cpplint._cpplint_state.verbose_level,
extra_check_functions=[config_h_check_obj])
cpplint._cpplint_state.PrintErrorCounts()
return cpplint._cpplint_state.error_count == 0
if __name__ == "__main__":
paths = []
nudge = False
for arg in sys.argv[1:]:
if arg.startswith( "--" ):
arg = arg[2:]
if arg == "nudge":
nudge = True
continue
else:
print( "unknown arg [%s]" % arg )
sys.exit(-1)
paths.append( arg )
if len(paths) == 0:
paths.append( "src/mongo/" )
if not run_lint( paths, nudge ):
sys.exit(-1)
|