Code Duplication    Length = 66-66 lines in 2 locations

sdk/build-support/cpplint.py 1 location

@@ 3157-3222 (lines=66) @@
3154
                                    line, error)
3155
3156
3157
def CheckForFunctionLengths(filename, clean_lines, linenum,
3158
                            function_state, error):
3159
  """Reports for long function bodies.
3160
3161
  For an overview why this is done, see:
3162
  https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Write_Short_Functions
3163
3164
  Uses a simplistic algorithm assuming other style guidelines
3165
  (especially spacing) are followed.
3166
  Only checks unindented functions, so class members are unchecked.
3167
  Trivial bodies are unchecked, so constructors with huge initializer lists
3168
  may be missed.
3169
  Blank/comment lines are not counted so as to avoid encouraging the removal
3170
  of vertical space and comments just to get through a lint check.
3171
  NOLINT *on the last line of a function* disables this check.
3172
3173
  Args:
3174
    filename: The name of the current file.
3175
    clean_lines: A CleansedLines instance containing the file.
3176
    linenum: The number of the line to check.
3177
    function_state: Current function name and lines in body so far.
3178
    error: The function to call with any errors found.
3179
  """
3180
  lines = clean_lines.lines
3181
  line = lines[linenum]
3182
  joined_line = ''
3183
3184
  starting_func = False
3185
  regexp = r'(\w(\w|::|\*|\&|\s)*)\('  # decls * & space::name( ...
3186
  match_result = Match(regexp, line)
3187
  if match_result:
3188
    # If the name is all caps and underscores, figure it's a macro and
3189
    # ignore it, unless it's TEST or TEST_F.
3190
    function_name = match_result.group(1).split()[-1]
3191
    if function_name == 'TEST' or function_name == 'TEST_F' or (
3192
        not Match(r'[A-Z_]+$', function_name)):
3193
      starting_func = True
3194
3195
  if starting_func:
3196
    body_found = False
3197
    for start_linenum in range(linenum, clean_lines.NumLines()):
3198
      start_line = lines[start_linenum]
3199
      joined_line += ' ' + start_line.lstrip()
3200
      if Search(r'(;|})', start_line):  # Declarations and trivial functions
3201
        body_found = True
3202
        break                              # ... ignore
3203
      elif Search(r'{', start_line):
3204
        body_found = True
3205
        function = Search(r'((\w|:)*)\(', line).group(1)
3206
        if Match(r'TEST', function):    # Handle TEST... macros
3207
          parameter_regexp = Search(r'(\(.*\))', joined_line)
3208
          if parameter_regexp:             # Ignore bad syntax
3209
            function += parameter_regexp.group(1)
3210
        else:
3211
          function += '()'
3212
        function_state.Begin(function)
3213
        break
3214
    if not body_found:
3215
      # No body for the function (or evidence of a non-function) was found.
3216
      error(filename, linenum, 'readability/fn_size', 5,
3217
            'Lint failed to find start of function body.')
3218
  elif Match(r'^\}\s*$', line):  # function end
3219
    function_state.Check(error, filename, linenum)
3220
    function_state.End()
3221
  elif not Match(r'^\s*$', line):
3222
    function_state.Count()  # Count non-blank/non-comment lines.
3223
3224
3225
_RE_PATTERN_TODO = re.compile(r'^//(\s*)TODO(\(.+?\))?:?(\s|$)?')

core/build-support/cpplint.py 1 location

@@ 3157-3222 (lines=66) @@
3154
                                    line, error)
3155
3156
3157
def CheckForFunctionLengths(filename, clean_lines, linenum,
3158
                            function_state, error):
3159
  """Reports for long function bodies.
3160
3161
  For an overview why this is done, see:
3162
  https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Write_Short_Functions
3163
3164
  Uses a simplistic algorithm assuming other style guidelines
3165
  (especially spacing) are followed.
3166
  Only checks unindented functions, so class members are unchecked.
3167
  Trivial bodies are unchecked, so constructors with huge initializer lists
3168
  may be missed.
3169
  Blank/comment lines are not counted so as to avoid encouraging the removal
3170
  of vertical space and comments just to get through a lint check.
3171
  NOLINT *on the last line of a function* disables this check.
3172
3173
  Args:
3174
    filename: The name of the current file.
3175
    clean_lines: A CleansedLines instance containing the file.
3176
    linenum: The number of the line to check.
3177
    function_state: Current function name and lines in body so far.
3178
    error: The function to call with any errors found.
3179
  """
3180
  lines = clean_lines.lines
3181
  line = lines[linenum]
3182
  joined_line = ''
3183
3184
  starting_func = False
3185
  regexp = r'(\w(\w|::|\*|\&|\s)*)\('  # decls * & space::name( ...
3186
  match_result = Match(regexp, line)
3187
  if match_result:
3188
    # If the name is all caps and underscores, figure it's a macro and
3189
    # ignore it, unless it's TEST or TEST_F.
3190
    function_name = match_result.group(1).split()[-1]
3191
    if function_name == 'TEST' or function_name == 'TEST_F' or (
3192
        not Match(r'[A-Z_]+$', function_name)):
3193
      starting_func = True
3194
3195
  if starting_func:
3196
    body_found = False
3197
    for start_linenum in range(linenum, clean_lines.NumLines()):
3198
      start_line = lines[start_linenum]
3199
      joined_line += ' ' + start_line.lstrip()
3200
      if Search(r'(;|})', start_line):  # Declarations and trivial functions
3201
        body_found = True
3202
        break                              # ... ignore
3203
      elif Search(r'{', start_line):
3204
        body_found = True
3205
        function = Search(r'((\w|:)*)\(', line).group(1)
3206
        if Match(r'TEST', function):    # Handle TEST... macros
3207
          parameter_regexp = Search(r'(\(.*\))', joined_line)
3208
          if parameter_regexp:             # Ignore bad syntax
3209
            function += parameter_regexp.group(1)
3210
        else:
3211
          function += '()'
3212
        function_state.Begin(function)
3213
        break
3214
    if not body_found:
3215
      # No body for the function (or evidence of a non-function) was found.
3216
      error(filename, linenum, 'readability/fn_size', 5,
3217
            'Lint failed to find start of function body.')
3218
  elif Match(r'^\}\s*$', line):  # function end
3219
    function_state.Check(error, filename, linenum)
3220
    function_state.End()
3221
  elif not Match(r'^\s*$', line):
3222
    function_state.Count()  # Count non-blank/non-comment lines.
3223
3224
3225
_RE_PATTERN_TODO = re.compile(r'^//(\s*)TODO(\(.+?\))?:?(\s|$)?')