Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(103)

Side by Side Diff: third_party/WebKit/Tools/Scripts/webkitpy/style/checkers/cpp.py

Issue 2384943002: Trim more unneeded stuff from Blink's C++ style checker script. (Closed)
Patch Set: . Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 # 2 #
3 # Copyright (C) 2009, 2010, 2012 Google Inc. All rights reserved. 3 # Copyright (C) 2009, 2010, 2012 Google Inc. All rights reserved.
4 # Copyright (C) 2009 Torch Mobile Inc. 4 # Copyright (C) 2009 Torch Mobile Inc.
5 # Copyright (C) 2009 Apple Inc. All rights reserved. 5 # Copyright (C) 2009 Apple Inc. All rights reserved.
6 # Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org) 6 # Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
7 # 7 #
8 # Redistribution and use in source and binary forms, with or without 8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions are 9 # modification, are permitted provided that the following conditions are
10 # met: 10 # met:
(...skipping 1473 matching lines...) Expand 10 before | Expand all | Expand 10 after
1484 if not (well_typed_bitfield or classinfo.name.startswith('SameSizeAs') or 1484 if not (well_typed_bitfield or classinfo.name.startswith('SameSizeAs') or
1485 classinfo.name.startswith('Expected')): 1485 classinfo.name.startswith('Expected')):
1486 args = match(r'\s*(\S+)\s+(\S+)\s*:\s*\d+\s*;', line) 1486 args = match(r'\s*(\S+)\s+(\S+)\s*:\s*\d+\s*;', line)
1487 if args: 1487 if args:
1488 error(line_number, 'runtime/bitfields', 4, 1488 error(line_number, 'runtime/bitfields', 4,
1489 'Member %s of class %s defined as a bitfield of type %s. ' 1489 'Member %s of class %s defined as a bitfield of type %s. '
1490 'Please declare all bitfields as unsigned.' 1490 'Please declare all bitfields as unsigned.'
1491 % (args.group(2), classinfo.name, args.group(1))) 1491 % (args.group(2), classinfo.name, args.group(1)))
1492 1492
1493 1493
1494 def check_spacing_for_function_call(line, line_number, error):
1495 """Checks for the correctness of various spacing around function calls.
1496
1497 Args:
1498 line: The text of the line to check.
1499 line_number: The number of the line to check.
1500 error: The function to call with any errors found.
1501 """
1502
1503 # Since function calls often occur inside if/for/foreach/while/switch
1504 # expressions - which have their own, more liberal conventions - we
1505 # first see if we should be looking inside such an expression for a
1506 # function call, to which we can apply more strict standards.
1507 function_call = line # if there's no control flow construct, look at whol e line
1508 for pattern in (r'\bif\s*\((.*)\)\s*{',
1509 r'\bfor\s*\((.*)\)\s*{',
1510 r'\bforeach\s*\((.*)\)\s*{',
1511 r'\bwhile\s*\((.*)\)\s*[{;]',
1512 r'\bswitch\s*\((.*)\)\s*{'):
1513 matched = search(pattern, line)
1514 if matched:
1515 function_call = matched.group(1) # look inside the parens for fun ction calls
1516 break
1517
1518 # Except in if/for/foreach/while/switch, there should never be space
1519 # immediately inside parens (eg "f( 3, 4 )"). We make an exception
1520 # for nested parens ( (a+b) + c ). Likewise, there should never be
1521 # a space before a ( when it's a function argument. I assume it's a
1522 # function argument when the char before the whitespace is legal in
1523 # a function name (alnum + _) and we're not starting a macro. Also ignore
1524 # pointers and references to arrays and functions coz they're too tricky:
1525 # we use a very simple way to recognize these:
1526 # " (something)(maybe-something)" or
1527 # " (something)(maybe-something," or
1528 # " (something)[something]"
1529 # Note that we assume the contents of [] to be short enough that
1530 # they'll never need to wrap.
1531 if ( # Ignore control structures.
1532 not search(r'\b(if|for|foreach|while|switch|return|new|delete)\b', f unction_call)
1533 # Ignore pointers/references to functions.
1534 and not search(r' \([^)]+\)\([^)]*(\)|,$)', function_call)
1535 # Ignore pointers/references to arrays.
1536 and not search(r' \([^)]+\)\[[^\]]+\]', function_call)):
1537 if search(r'\w\s*\([ \t](?!\s*\\$)', function_call): # a ( used for a fn call
1538 error(line_number, 'whitespace/parens', 4,
1539 'Extra space after ( in function call')
1540 elif search(r'\([ \t]+(?!(\s*\\)|\()', function_call):
1541 error(line_number, 'whitespace/parens', 2,
1542 'Extra space after (')
1543 # If the ) is followed only by a newline or a { + newline, assume it's
1544 # part of a control statement (if/while/etc), and don't complain
1545 if search(r'[^)\s]\s+\)(?!\s*$|{\s*$)', function_call):
1546 error(line_number, 'whitespace/parens', 2,
1547 'Extra space before )')
1548
1549
1550 def is_blank_line(line): 1494 def is_blank_line(line):
1551 """Returns true if the given line is blank. 1495 """Returns true if the given line is blank.
1552 1496
1553 We consider a line to be blank if the line is empty or consists of 1497 We consider a line to be blank if the line is empty or consists of
1554 only white spaces. 1498 only white spaces.
1555 1499
1556 Args: 1500 Args:
1557 line: A line of a string. 1501 line: A line of a string.
1558 1502
1559 Returns: 1503 Returns:
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
1819 line, don't end a function with a blank line, don't have too many 1763 line, don't end a function with a blank line, don't have too many
1820 blank lines in a row. 1764 blank lines in a row.
1821 1765
1822 Args: 1766 Args:
1823 file_extension: The current file extension, without the leading dot. 1767 file_extension: The current file extension, without the leading dot.
1824 clean_lines: A CleansedLines instance containing the file. 1768 clean_lines: A CleansedLines instance containing the file.
1825 line_number: The number of the line to check. 1769 line_number: The number of the line to check.
1826 error: The function to call with any errors found. 1770 error: The function to call with any errors found.
1827 """ 1771 """
1828 1772
1829 raw = clean_lines.raw_lines
1830 line = raw[line_number]
1831
1832 # Before nixing comments, check if the line is blank for no good
1833 # reason. This includes the first line after a block is opened, and
1834 # blank lines at the end of a function (ie, right before a line like '}').
1835 if is_blank_line(line):
1836 elided = clean_lines.elided
1837 previous_line = elided[line_number - 1]
1838 previous_brace = previous_line.rfind('{')
1839 # FIXME: Don't complain if line before blank line, and line after,
1840 # both start with alnums and are indented the same amount.
1841 # This ignores whitespace at the start of a namespace block
1842 # because those are not usually indented.
1843 if (previous_brace != -1 and previous_line[previous_brace:].find('}') == -1
1844 and previous_line[:previous_brace].find('namespace') == -1):
1845 # OK, we have a blank line at the start of a code block. Before we
1846 # complain, we check if it is an exception to the rule: The previous
1847 # non-empty line has the parameters of a function header that are in dented
1848 # 4 spaces (because they did not fit in a 80 column line when placed on
1849 # the same line as the function name). We also check for the case w here
1850 # the previous line is indented 6 spaces, which may happen when the
1851 # initializers of a constructor do not fit into a 80 column line.
1852 exception = False
1853 if match(r' {6}\w', previous_line): # Initializer list?
1854 # We are looking for the opening column of initializer list, whi ch
1855 # should be indented 4 spaces to cause 6 space indentation after wards.
1856 search_position = line_number - 2
1857 while (search_position >= 0
1858 and match(r' {6}\w', elided[search_position])):
1859 search_position -= 1
1860 exception = (search_position >= 0
1861 and elided[search_position][:5] == ' :')
1862 else:
1863 # Search for the function arguments or an initializer list. We use a
1864 # simple heuristic here: If the line is indented 4 spaces; and w e have a
1865 # closing paren, without the opening paren, followed by an openi ng brace
1866 # or colon (for initializer lists) we assume that it is the last line of
1867 # a function header. If we have a colon indented 4 spaces, it i s an
1868 # initializer list.
1869 exception = (match(r' {4}\w[^\(]*\)\s*(const\s*)?(\{\s*$|:)',
1870 previous_line)
1871 or match(r' {4}:', previous_line))
1872
1873 if not exception:
1874 error(line_number, 'whitespace/blank_line', 2,
1875 'Blank line at the start of a code block. Is this needed? ')
1876 # This doesn't ignore whitespace at the end of a namespace block
1877 # because that is too hard without pairing open/close braces;
1878 # however, a special exception is made for namespace closing
1879 # brackets which have a comment containing "namespace".
1880 #
1881 # Also, ignore blank lines at the end of a block in a long if-else
1882 # chain, like this:
1883 # if (condition1) {
1884 # // Something followed by a blank line
1885 #
1886 # } else if (condition2) {
1887 # // Something else
1888 # }
1889 if line_number + 1 < clean_lines.num_lines():
1890 next_line = raw[line_number + 1]
1891 if next_line and match(r'\s*}', next_line) and 'namespace' not in ne xt_line and '} else ' not in next_line:
1892 error(line_number, 'whitespace/blank_line', 3,
1893 'Blank line at the end of a code block. Is this needed?')
1894
1895 line = clean_lines.elided[line_number] # get rid of comments and strings 1773 line = clean_lines.elided[line_number] # get rid of comments and strings
1896 1774
1897 # Don't try to do spacing checks for operator methods
1898 line = sub(r'operator(==|!=|<|<<|<=|>=|>>|>|\+=|-=|\*=|/=|%=|&=|\|=|^=|<<=|> >=|/)\(', 'operator\(', line)
1899 # Don't try to do spacing checks for #include or #import statements at
1900 # minimum because it messes up checks for spacing around /
1901 if match(r'\s*#\s*(?:include|import)', line):
1902 return
1903 if search(r'[\w.]=[\w.]', line):
1904 error(line_number, 'whitespace/operators', 4,
1905 'Missing spaces around =')
1906
1907 # There shouldn't be space around unary operators
1908 matched = search(r'(!\s|~\s|[\s]--[\s;]|[\s]\+\+[\s;])', line)
1909 if matched:
1910 error(line_number, 'whitespace/operators', 4,
1911 'Extra space for operator %s' % matched.group(1))
1912
1913 # A pet peeve of mine: no spaces after an if, while, switch, or for
1914 matched = search(r' (if\(|for\(|foreach\(|while\(|switch\()', line)
1915 if matched:
1916 error(line_number, 'whitespace/parens', 5,
1917 'Missing space before ( in %s' % matched.group(1))
1918
1919 # For if/for/foreach/while/switch, the left and right parens should be
1920 # consistent about how many spaces are inside the parens, and
1921 # there should either be zero or one spaces inside the parens.
1922 # We don't want: "if ( foo)" or "if ( foo )".
1923 # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed.
1924 matched = search(r'\b(?P<statement>if|for|foreach|while|switch)\s*\((?P<rema inder>.*)$', line)
1925 if matched:
1926 statement = matched.group('statement')
1927 condition, rest = up_to_unmatched_closing_paren(matched.group('remainder '))
1928 if condition is not None:
1929 condition_match = search(r'(?P<leading>[ ]*)(?P<separator>.).*[^ ]+( ?P<trailing>[ ]*)', condition)
1930 if condition_match:
1931 n_leading = len(condition_match.group('leading'))
1932 n_trailing = len(condition_match.group('trailing'))
1933 if n_leading != 0:
1934 for_exception = statement == 'for' and condition.startswith( ' ;')
1935 if not for_exception:
1936 error(line_number, 'whitespace/parens', 5,
1937 'Extra space after ( in %s' % statement)
1938 if n_trailing != 0:
1939 for_exception = statement == 'for' and condition.endswith('; ')
1940 if not for_exception:
1941 error(line_number, 'whitespace/parens', 5,
1942 'Extra space before ) in %s' % statement)
1943
1944 # Do not check for more than one command in macros
1945 in_preprocessor_directive = match(r'\s*#', line)
1946 if not in_preprocessor_directive and not match(r'((\s*{\s*}?)|(\s*;? ))\s*\\?$', rest):
1947 error(line_number, 'whitespace/parens', 4,
1948 'More than one command on the same line in %s' % statement )
1949
1950 # You should always have a space after a comma (either as fn arg or operator )
1951 if search(r',[^\s]', line):
1952 error(line_number, 'whitespace/comma', 3,
1953 'Missing space after ,')
1954
1955 matched = search(r'^\s*(?P<token1>[a-zA-Z0-9_\*&]+)\s\s+(?P<token2>[a-zA-Z0- 9_\*&]+)', line)
1956 if matched:
1957 error(line_number, 'whitespace/declaration', 3,
1958 'Extra space between %s and %s' % (matched.group('token1'), matche d.group('token2')))
1959
1960 if file_extension == 'cpp':
1961 # C++ should have the & or * beside the type not the variable name.
1962 matched = match(r'\s*\w+(?<!\breturn|\bdelete)\s+(?P<pointer_operator>\* |\&)\w+', line)
1963 if matched:
1964 error(line_number, 'whitespace/declaration', 3,
1965 'Declaration has space between type name and %s in %s' % (
1966 matched.group('pointer_operator'), matched.group(0).strip( )))
1967
1968 elif file_extension == 'c':
1969 # C Pointer declaration should have the * beside the variable not the ty pe name.
1970 matched = search(r'^\s*\w+\*\s+\w+', line)
1971 if matched:
1972 error(line_number, 'whitespace/declaration', 3,
1973 'Declaration has space between * and variable name in %s' % ma tched.group(0).strip())
1974
1975 # Next we will look for issues with function calls.
1976 check_spacing_for_function_call(line, line_number, error)
1977
1978 # Make sure '} else {' has spaces.
1979 if search(r'}else', line):
1980 error(line_number, 'whitespace/braces', 5,
1981 'Missing space before else')
1982
1983 # You shouldn't have spaces before your brackets, except maybe after
1984 # 'delete []' or 'new char * []'.
1985 if search(r'\w\s+\[', line) and not search(r'delete\s+\[', line):
1986 error(line_number, 'whitespace/braces', 5,
1987 'Extra space before [')
1988
1989 # There should always be zero or one space in between braces on the same lin e.
1990 if search(r'\{\s\s+\}', line):
1991 error(line_number, 'whitespace/braces', 5, 'Too many spaces inside { }.' )
1992
1993 # You shouldn't have a space before a semicolon at the end of the line. 1775 # You shouldn't have a space before a semicolon at the end of the line.
1994 # There's a special case for "for" since the style guide allows space before 1776 # There's a special case for "for" since the style guide allows space before
1995 # the semicolon there. 1777 # the semicolon there.
1996 if search(r':\s*;\s*$', line): 1778 if search(r':\s*;\s*$', line):
1997 error(line_number, 'whitespace/semicolon', 5, 1779 error(line_number, 'whitespace/semicolon', 5,
1998 'Semicolon defining empty statement. Use { } instead.') 1780 'Semicolon defining empty statement. Use { } instead.')
1999 elif search(r'^\s*;\s*$', line): 1781 elif search(r'^\s*;\s*$', line):
2000 error(line_number, 'whitespace/semicolon', 5, 1782 error(line_number, 'whitespace/semicolon', 5,
2001 'Line contains only semicolon. If this should be an empty statemen t, ' 1783 'Line contains only semicolon. If this should be an empty statemen t, '
2002 'use { } instead.') 1784 'use { } instead.')
2003 elif search(r'\s+;\s*$', line) and not search(r'\bfor\b', line):
2004 error(line_number, 'whitespace/semicolon', 5,
2005 'Extra space before last semicolon. If this should be an empty '
2006 'statement, use { } instead.')
2007 elif (search(r'\b(for|while)\s*\(.*\)\s*;\s*$', line) 1785 elif (search(r'\b(for|while)\s*\(.*\)\s*;\s*$', line)
2008 and line.count('(') == line.count(')') 1786 and line.count('(') == line.count(')')
2009 # Allow do {} while(); 1787 # Allow do {} while();
2010 and not search(r'}\s*while', line)): 1788 and not search(r'}\s*while', line)):
2011 error(line_number, 'whitespace/semicolon', 5, 1789 error(line_number, 'whitespace/semicolon', 5,
2012 'Semicolon defining empty statement for this loop. Use { } instead .') 1790 'Semicolon defining empty statement for this loop. Use { } instead .')
Nico 2016/10/01 16:39:46 I think this is caught by a compiler warning too
dcheng 2016/10/01 19:48:04 At least in a simple test, I wasn't able to get th
Nico 2016/10/03 18:11:17 It only fires when it's actively buggy: tthakis@t
2013 1791
2014 1792
2015 def get_previous_non_blank_line(clean_lines, line_number): 1793 def get_previous_non_blank_line(clean_lines, line_number):
2016 """Return the most recent non-blank line and its line number. 1794 """Return the most recent non-blank line and its line number.
2017 1795
2018 Args: 1796 Args:
2019 clean_lines: A CleansedLines instance containing the file contents. 1797 clean_lines: A CleansedLines instance containing the file contents.
2020 line_number: The number of the line to check. 1798 line_number: The number of the line to check.
2021 1799
2022 Returns: 1800 Returns:
2023 A tuple with two elements. The first element is the contents of the last 1801 A tuple with two elements. The first element is the contents of the last
2024 non-blank line before the current line, or the empty string if this is the 1802 non-blank line before the current line, or the empty string if this is the
2025 first non-blank line. The second is the line number of that line, or -1 1803 first non-blank line. The second is the line number of that line, or -1
2026 if this is the first non-blank line. 1804 if this is the first non-blank line.
2027 """ 1805 """
2028 1806
2029 previous_line_number = line_number - 1 1807 previous_line_number = line_number - 1
2030 while previous_line_number >= 0: 1808 while previous_line_number >= 0:
2031 previous_line = clean_lines.elided[previous_line_number] 1809 previous_line = clean_lines.elided[previous_line_number]
2032 if not is_blank_line(previous_line): # if not a blank line... 1810 if not is_blank_line(previous_line): # if not a blank line...
2033 return (previous_line, previous_line_number) 1811 return (previous_line, previous_line_number)
2034 previous_line_number -= 1 1812 previous_line_number -= 1
2035 return ('', -1) 1813 return ('', -1)
2036 1814
2037 1815
2038 def check_namespace_indentation(clean_lines, line_number, file_extension, file_s tate, error):
2039 """Looks for indentation errors inside of namespaces.
2040
2041 Args:
2042 clean_lines: A CleansedLines instance containing the file.
2043 line_number: The number of the line to check.
2044 file_extension: The extension (dot not included) of the file.
2045 file_state: A _FileState instance which maintains information about
2046 the state of things in the file.
2047 error: The function to call with any errors found.
2048 """
2049
2050 line = clean_lines.elided[line_number] # Get rid of comments and strings.
2051
2052 namespace_match = match(r'(?P<namespace_indentation>\s*)namespace\s+\S+\s*{\ s*$', line)
2053 if not namespace_match:
2054 return
2055
2056 current_indentation_level = len(namespace_match.group('namespace_indentation '))
2057 if current_indentation_level > 0:
2058 # Don't warn about an indented namespace if we already warned about inde nted code.
2059 if not file_state.did_inside_namespace_indent_warning():
2060 error(line_number, 'whitespace/indent', 4,
2061 'namespace should never be indented.')
2062 return
2063 looking_for_semicolon = False
2064 line_offset = 0
2065 in_preprocessor_directive = False
2066 for current_line in clean_lines.elided[line_number + 1:]:
2067 line_offset += 1
2068 if not current_line.strip():
2069 continue
2070 if not current_indentation_level:
2071 if in_preprocessor_directive or (current_line.strip()[0] == '#'): # This takes care of preprocessor directive syntax.
2072 in_preprocessor_directive = current_line[-1] == '\\'
2073 else:
2074 looking_for_semicolon = ((';' not in current_line) and (current_ line.strip()
2075 [-1] != '}')) or (current_line[-1] == '\\')
2076 else:
2077 looking_for_semicolon = False # If we have a brace we may not need a semicolon.
2078 current_indentation_level += current_line.count('{') - current_line.coun t('}')
2079 if current_indentation_level < 0:
2080 break
2081
2082
2083 def check_enum_casing(clean_lines, line_number, enum_state, error): 1816 def check_enum_casing(clean_lines, line_number, enum_state, error):
2084 """Looks for incorrectly named enum values. 1817 """Looks for incorrectly named enum values.
2085 1818
2086 Args: 1819 Args:
2087 clean_lines: A CleansedLines instance containing the file. 1820 clean_lines: A CleansedLines instance containing the file.
2088 line_number: The number of the line to check. 1821 line_number: The number of the line to check.
2089 enum_state: A _EnumState instance which maintains enum declaration state. 1822 enum_state: A _EnumState instance which maintains enum declaration state.
2090 error: The function to call with any errors found. 1823 error: The function to call with any errors found.
2091 """ 1824 """
2092 1825
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
2687 the current stack of nested class declarations being parsed. 2420 the current stack of nested class declarations being parsed.
2688 file_state: A _FileState instance which maintains information about 2421 file_state: A _FileState instance which maintains information about
2689 the state of things in the file. 2422 the state of things in the file.
2690 enum_state: A _EnumState instance which maintains the current enum state. 2423 enum_state: A _EnumState instance which maintains the current enum state.
2691 error: The function to call with any errors found. 2424 error: The function to call with any errors found.
2692 """ 2425 """
2693 2426
2694 raw_lines = clean_lines.raw_lines 2427 raw_lines = clean_lines.raw_lines
2695 line = raw_lines[line_number] 2428 line = raw_lines[line_number]
2696 2429
2697 if '\t' in line:
2698 error(line_number, 'whitespace/tab', 1,
2699 'Tab found; better to use spaces')
2700
2701 cleansed_line = clean_lines.elided[line_number]
2702 if line and line[-1].isspace():
2703 error(line_number, 'whitespace/end_of_line', 4,
2704 'Line ends in whitespace. Consider deleting these extra spaces.')
2705
2706 # Some more style checks 2430 # Some more style checks
2707 check_namespace_indentation(clean_lines, line_number, file_extension, file_s tate, error)
2708 check_using_std(clean_lines, line_number, file_state, error) 2431 check_using_std(clean_lines, line_number, file_state, error)
2709 check_max_min_macros(clean_lines, line_number, file_state, error) 2432 check_max_min_macros(clean_lines, line_number, file_state, error)
2710 check_ctype_functions(clean_lines, line_number, file_state, error) 2433 check_ctype_functions(clean_lines, line_number, file_state, error)
2711 check_braces(clean_lines, line_number, error) 2434 check_braces(clean_lines, line_number, error)
2712 check_exit_statement_simplifications(clean_lines, line_number, error) 2435 check_exit_statement_simplifications(clean_lines, line_number, error)
2713 check_spacing(file_extension, clean_lines, line_number, error) 2436 check_spacing(file_extension, clean_lines, line_number, error)
2714 check_check(clean_lines, line_number, error) 2437 check_check(clean_lines, line_number, error)
2715 check_deprecated_macros(clean_lines, line_number, error) 2438 check_deprecated_macros(clean_lines, line_number, error)
2716 check_for_comparisons_to_boolean(clean_lines, line_number, error) 2439 check_for_comparisons_to_boolean(clean_lines, line_number, error)
2717 check_for_null(clean_lines, line_number, file_state, error) 2440 check_for_null(clean_lines, line_number, file_state, error)
(...skipping 1115 matching lines...) Expand 10 before | Expand all | Expand 10 after
3833 'legal/copyright', 3556 'legal/copyright',
3834 'readability/braces', 3557 'readability/braces',
3835 'readability/casting', 3558 'readability/casting',
3836 'readability/check', 3559 'readability/check',
3837 'readability/comparison_to_boolean', 3560 'readability/comparison_to_boolean',
3838 'readability/constructors', 3561 'readability/constructors',
3839 'readability/control_flow', 3562 'readability/control_flow',
3840 'readability/enum_casing', 3563 'readability/enum_casing',
3841 'readability/fn_size', 3564 'readability/fn_size',
3842 'readability/function', 3565 'readability/function',
3566 # TODO(dcheng): Turn on the clang plugin checks and remove this.
3843 'readability/inheritance', 3567 'readability/inheritance',
3844 'readability/multiline_comment', 3568 'readability/multiline_comment',
3845 'readability/multiline_string', 3569 'readability/multiline_string',
3846 'readability/parameter_name', 3570 'readability/parameter_name',
3847 'readability/naming', 3571 'readability/naming',
3848 'readability/naming/underscores', 3572 'readability/naming/underscores',
3849 'readability/null', 3573 'readability/null',
3850 'readability/pass_ptr', 3574 'readability/pass_ptr',
3851 'readability/streams', 3575 'readability/streams',
3852 'readability/templatebrackets', 3576 'readability/templatebrackets',
(...skipping 13 matching lines...) Expand all
3866 'runtime/memset', 3590 'runtime/memset',
3867 'runtime/printf', 3591 'runtime/printf',
3868 'runtime/printf_format', 3592 'runtime/printf_format',
3869 'runtime/references', 3593 'runtime/references',
3870 'runtime/rtti', 3594 'runtime/rtti',
3871 'runtime/sizeof', 3595 'runtime/sizeof',
3872 'runtime/string', 3596 'runtime/string',
3873 'runtime/threadsafe_fn', 3597 'runtime/threadsafe_fn',
3874 'runtime/unsigned', 3598 'runtime/unsigned',
3875 'runtime/virtual', 3599 'runtime/virtual',
3876 'whitespace/blank_line',
3877 'whitespace/braces', 3600 'whitespace/braces',
3878 'whitespace/comma',
3879 'whitespace/declaration',
3880 'whitespace/end_of_line',
3881 'whitespace/ending_newline', 3601 'whitespace/ending_newline',
3882 'whitespace/indent',
3883 'whitespace/line_length',
3884 'whitespace/operators',
3885 'whitespace/parens',
3886 'whitespace/semicolon', 3602 'whitespace/semicolon',
3887 'whitespace/tab',
3888 'whitespace/todo',
3889 ]) 3603 ])
3890 3604
3891 fs = None 3605 fs = None
3892 3606
3893 def __init__(self, file_path, file_extension, handle_style_error, 3607 def __init__(self, file_path, file_extension, handle_style_error,
3894 min_confidence, fs=None): 3608 min_confidence, fs=None):
3895 """Create a CppChecker instance. 3609 """Create a CppChecker instance.
3896 3610
3897 Args: 3611 Args:
3898 file_extension: A string that is the file extension, without 3612 file_extension: A string that is the file extension, without
(...skipping 26 matching lines...) Expand all
3925 3639
3926 def check(self, lines): 3640 def check(self, lines):
3927 _process_lines(self.file_path, self.file_extension, lines, 3641 _process_lines(self.file_path, self.file_extension, lines,
3928 self.handle_style_error, self.min_confidence) 3642 self.handle_style_error, self.min_confidence)
3929 3643
3930 3644
3931 # FIXME: Remove this function (requires refactoring unit tests). 3645 # FIXME: Remove this function (requires refactoring unit tests).
3932 def process_file_data(filename, file_extension, lines, error, min_confidence, fs =None): 3646 def process_file_data(filename, file_extension, lines, error, min_confidence, fs =None):
3933 checker = CppChecker(filename, file_extension, error, min_confidence, fs) 3647 checker = CppChecker(filename, file_extension, error, min_confidence, fs)
3934 checker.check(lines) 3648 checker.check(lines)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698