Changeset 53382 in webkit
- Timestamp:
- Jan 17, 2010 6:22:42 PM (14 years ago)
- Location:
- trunk/WebKitTools
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKitTools/ChangeLog
r53381 r53382 1 2010-01-17 Chris Jerdonek <cjerdonek@webkit.org> 2 3 Reviewed by Shinichiro Hamaji. 4 5 Finished eliminating _cpp_style_state global state variable from 6 check-webkit-style code and eliminating _CppStyleState class. 7 8 https://bugs.webkit.org/show_bug.cgi?id=33764 9 10 * Scripts/webkitpy/style/checker.py: 11 - Minor updates caused by changes to cpp_style.py. 12 13 * Scripts/webkitpy/style/cpp_style.py: 14 - Removed _CppStyleState class. 15 - Removed verbose_level functions. 16 - Added verbosity as a parameter to _FunctionState constructor. 17 - Added verbosity as a parameter to process_file(). 18 - Added verbosity as a parameter to process_file_data(). 19 20 * Scripts/webkitpy/style/cpp_style_unittest.py: 21 - Added helper functions to set verbosity while running tests. 22 1 23 2010-01-17 Adam Barth <abarth@webkit.org> 2 24 -
trunk/WebKitTools/Scripts/webkitpy/style/checker.py
r53374 r53382 646 646 self.error_count = 0 647 647 648 # FIXME: Eliminate the need to set global state here.649 cpp_style._set_verbose_level(options.verbosity)650 651 648 def _handle_error(self, filename, line_number, category, confidence, message): 652 649 """Handle the occurrence of a style error while checking. … … 689 686 """ 690 687 if cpp_style.can_handle(filename) or filename == '-': 691 cpp_style.process_file(filename, self._handle_error )688 cpp_style.process_file(filename, self._handle_error, self.options.verbosity) 692 689 elif text_style.can_handle(filename): 693 690 text_style.process_file(filename, self._handle_error) … … 721 718 self._handle_error(filename, line_number, category, confidence, message) 722 719 720 # FIXME: Share this code with self.process_file(). 723 721 if cpp_style.can_handle(filename): 724 cpp_style.process_file(filename, error_for_patch )722 cpp_style.process_file(filename, error_for_patch, self.options.verbosity) 725 723 elif text_style.can_handle(filename): 726 724 text_style.process_file(filename, error_for_patch) -
trunk/WebKitTools/Scripts/webkitpy/style/cpp_style.py
r53381 r53382 243 243 244 244 245 class _CppStyleState(object):246 """Maintains module-wide state.."""247 248 def __init__(self):249 self.verbose_level = 1 # global setting.250 251 def set_verbose_level(self, level):252 """Sets the module's verbosity, and returns the previous setting."""253 last_verbose_level = self.verbose_level254 self.verbose_level = level255 return last_verbose_level256 257 258 _cpp_style_state = _CppStyleState()259 260 261 def _verbose_level():262 """Returns the module's verbosity setting."""263 return _cpp_style_state.verbose_level264 265 266 def _set_verbose_level(level):267 """Sets the module's verbosity, and returns the previous setting."""268 return _cpp_style_state.set_verbose_level(level)269 270 271 245 class _FunctionState(object): 272 """Tracks current function name and the number of lines in its body.""" 246 """Tracks current function name and the number of lines in its body. 247 248 Attributes: 249 verbosity: The verbosity level to use while checking style. 250 251 """ 273 252 274 253 _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc. 275 254 _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER. 276 255 277 def __init__(self): 256 def __init__(self, verbosity): 257 self.verbosity = verbosity 278 258 self.in_a_function = False 279 259 self.lines_in_function = 0 … … 307 287 else: 308 288 base_trigger = self._NORMAL_TRIGGER 309 trigger = base_trigger * 2 ** _verbose_level()289 trigger = base_trigger * 2 ** self.verbosity 310 290 311 291 if self.lines_in_function > trigger: … … 2832 2812 2833 2813 2834 def process_file_data(filename, file_extension, lines, error ):2814 def process_file_data(filename, file_extension, lines, error, verbosity): 2835 2815 """Performs lint checks and reports any errors to the given error function. 2836 2816 … … 2846 2826 2847 2827 include_state = _IncludeState() 2848 function_state = _FunctionState( )2828 function_state = _FunctionState(verbosity) 2849 2829 class_state = _ClassState() 2850 2830 file_state = _FileState() … … 2871 2851 2872 2852 2873 def process_file(filename, error ):2853 def process_file(filename, error, verbosity): 2874 2854 """Performs cpp_style on a single file. 2875 2855 … … 2877 2857 filename: The name of the file to parse. 2878 2858 error: The function to call with any errors found. 2859 verbosity: An integer that is the verbosity level to use while 2860 checking style. 2879 2861 """ 2880 2862 try: … … 2917 2899 sys.stderr.write('Ignoring %s; not a .cpp, .c or .h file\n' % filename) 2918 2900 else: 2919 process_file_data(filename, file_extension, lines, error )2901 process_file_data(filename, file_extension, lines, error, verbosity) 2920 2902 if carriage_return_found and os.linesep != '\r\n': 2921 2903 # Use 0 for line_number since outputing only one error for potentially -
trunk/WebKitTools/Scripts/webkitpy/style/cpp_style_unittest.py
r53381 r53382 110 110 111 111 class CppStyleTestBase(unittest.TestCase): 112 """Provides some useful helper functions for cpp_style tests.""" 112 """Provides some useful helper functions for cpp_style tests. 113 114 Attributes: 115 verbosity: An integer that is the current verbosity level for 116 the tests. 117 118 """ 119 120 # FIXME: Refactor the unit tests so the verbosity level is passed 121 # explicitly, just like it is in the real code. 122 verbosity = 1; 123 124 # Helper function to avoid needing to explicitly pass verbosity 125 # in all the unit test calls to cpp_style.process_file_data(). 126 def process_file_data(self, filename, file_extension, lines, error): 127 """Call cpp_style.process_file_data() with the current verbosity.""" 128 return cpp_style.process_file_data(filename, file_extension, lines, error, self.verbosity) 113 129 114 130 # Perform lint on single line of input and return the error message. … … 119 135 clean_lines = cpp_style.CleansedLines(lines) 120 136 include_state = cpp_style._IncludeState() 121 function_state = cpp_style._FunctionState( )137 function_state = cpp_style._FunctionState(self.verbosity) 122 138 ext = file_name[file_name.rfind('.') + 1:] 123 139 class_state = cpp_style._ClassState() … … 179 195 file_name = 'foo.cpp' 180 196 error_collector = ErrorCollector(self.assert_) 181 function_state = cpp_style._FunctionState( )197 function_state = cpp_style._FunctionState(self.verbosity) 182 198 lines = code.split('\n') 183 199 cpp_style.remove_multi_line_comments(file_name, lines, error_collector) … … 237 253 def assert_blank_lines_check(self, lines, start_errors, end_errors): 238 254 error_collector = ErrorCollector(self.assert_) 239 cpp_style.process_file_data('foo.cpp', 'cpp', lines, error_collector)255 self.process_file_data('foo.cpp', 'cpp', lines, error_collector) 240 256 self.assertEquals( 241 257 start_errors, … … 695 711 696 712 error_collector = ErrorCollector(self.assert_) 697 cpp_style.process_file_data(file_path, 'cpp',698 699 700 713 self.process_file_data(file_path, 'cpp', 714 ['const char* str = "This is a\\', 715 ' multiline string.";'], 716 error_collector) 701 717 self.assertEquals( 702 718 2, # One per line. … … 1409 1425 def do_test(self, data, is_missing_eof): 1410 1426 error_collector = ErrorCollector(self.assert_) 1411 cpp_style.process_file_data('foo.cpp', 'cpp', data.split('\n'),1412 1427 self.process_file_data('foo.cpp', 'cpp', data.split('\n'), 1428 error_collector) 1413 1429 # The warning appears only once. 1414 1430 self.assertEquals( … … 1424 1440 def do_test(self, raw_bytes, has_invalid_utf8): 1425 1441 error_collector = ErrorCollector(self.assert_) 1426 cpp_style.process_file_data( 1427 'foo.cpp', 'cpp', 1428 unicode(raw_bytes, 'utf8', 'replace').split('\n'), 1429 error_collector) 1442 self.process_file_data('foo.cpp', 'cpp', 1443 unicode(raw_bytes, 'utf8', 'replace').split('\n'), 1444 error_collector) 1430 1445 # The warning appears only once. 1431 1446 self.assertEquals( … … 1460 1475 def test_allow_blank_line_before_closing_namespace(self): 1461 1476 error_collector = ErrorCollector(self.assert_) 1462 cpp_style.process_file_data('foo.cpp', 'cpp',1463 1464 1477 self.process_file_data('foo.cpp', 'cpp', 1478 ['namespace {', '', '} // namespace'], 1479 error_collector) 1465 1480 self.assertEquals(0, error_collector.results().count( 1466 1481 'Blank line at the end of a code block. Is this needed?' … … 1469 1484 def test_allow_blank_line_before_if_else_chain(self): 1470 1485 error_collector = ErrorCollector(self.assert_) 1471 cpp_style.process_file_data('foo.cpp', 'cpp',1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1486 self.process_file_data('foo.cpp', 'cpp', 1487 ['if (hoge) {', 1488 '', # No warning 1489 '} else if (piyo) {', 1490 '', # No warning 1491 '} else if (piyopiyo) {', 1492 ' hoge = true;', # No warning 1493 '} else {', 1494 '', # Warning on this line 1495 '}'], 1496 error_collector) 1482 1497 self.assertEquals(1, error_collector.results().count( 1483 1498 'Blank line at the end of a code block. Is this needed?' … … 1486 1501 def test_else_on_same_line_as_closing_braces(self): 1487 1502 error_collector = ErrorCollector(self.assert_) 1488 cpp_style.process_file_data('foo.cpp', 'cpp',1489 1490 1491 1492 1493 1494 1495 1503 self.process_file_data('foo.cpp', 'cpp', 1504 ['if (hoge) {', 1505 '', 1506 '}', 1507 ' else {' # Warning on this line 1508 '', 1509 '}'], 1510 error_collector) 1496 1511 self.assertEquals(1, error_collector.results().count( 1497 1512 'An else should appear on the same line as the preceding }' … … 1637 1652 # test all the other header tests. 1638 1653 error_collector = ErrorCollector(self.assert_) 1639 cpp_style.process_file_data(file_path, 'h', [], error_collector)1654 self.process_file_data(file_path, 'h', [], error_collector) 1640 1655 expected_guard = '' 1641 1656 matcher = re.compile( … … 1652 1667 # Wrong guard 1653 1668 error_collector = ErrorCollector(self.assert_) 1654 cpp_style.process_file_data(file_path, 'h',1655 1669 self.process_file_data(file_path, 'h', 1670 ['#ifndef FOO_H', '#define FOO_H'], error_collector) 1656 1671 self.assertEquals( 1657 1672 1, … … 1663 1678 # No define 1664 1679 error_collector = ErrorCollector(self.assert_) 1665 cpp_style.process_file_data(file_path, 'h',1666 1680 self.process_file_data(file_path, 'h', 1681 ['#ifndef %s' % expected_guard], error_collector) 1667 1682 self.assertEquals( 1668 1683 1, … … 1674 1689 # Mismatched define 1675 1690 error_collector = ErrorCollector(self.assert_) 1676 cpp_style.process_file_data(file_path, 'h',1677 1678 1679 1691 self.process_file_data(file_path, 'h', 1692 ['#ifndef %s' % expected_guard, 1693 '#define FOO_H'], 1694 error_collector) 1680 1695 self.assertEquals( 1681 1696 1, … … 1687 1702 # No header guard errors 1688 1703 error_collector = ErrorCollector(self.assert_) 1689 cpp_style.process_file_data(file_path, 'h',1690 1691 1692 1693 1704 self.process_file_data(file_path, 'h', 1705 ['#ifndef %s' % expected_guard, 1706 '#define %s' % expected_guard, 1707 '#endif // %s' % expected_guard], 1708 error_collector) 1694 1709 for line in error_collector.result_list(): 1695 1710 if line.find('build/header_guard') != -1: … … 1698 1713 # Completely incorrect header guard 1699 1714 error_collector = ErrorCollector(self.assert_) 1700 cpp_style.process_file_data(file_path, 'h',1701 1702 1703 1704 1715 self.process_file_data(file_path, 'h', 1716 ['#ifndef FOO', 1717 '#define FOO', 1718 '#endif // FOO'], 1719 error_collector) 1705 1720 self.assertEquals( 1706 1721 1, … … 1844 1859 # There should be a copyright message in the first 10 lines 1845 1860 error_collector = ErrorCollector(self.assert_) 1846 cpp_style.process_file_data(file_path, 'cpp', [], error_collector)1861 self.process_file_data(file_path, 'cpp', [], error_collector) 1847 1862 self.assertEquals( 1848 1863 1, … … 1850 1865 1851 1866 error_collector = ErrorCollector(self.assert_) 1852 cpp_style.process_file_data(1867 self.process_file_data( 1853 1868 file_path, 'cpp', 1854 1869 ['' for unused_i in range(10)] + [copyright_line], … … 1860 1875 # Test that warning isn't issued if Copyright line appears early enough. 1861 1876 error_collector = ErrorCollector(self.assert_) 1862 cpp_style.process_file_data(file_path, 'cpp', [copyright_line], error_collector)1877 self.process_file_data(file_path, 'cpp', [copyright_line], error_collector) 1863 1878 for message in error_collector.result_list(): 1864 1879 if message.find('legal/copyright') != -1: … … 1866 1881 1867 1882 error_collector = ErrorCollector(self.assert_) 1868 cpp_style.process_file_data(1883 self.process_file_data( 1869 1884 file_path, 'cpp', 1870 1885 ['' for unused_i in range(9)] + [copyright_line], … … 2201 2216 cpp_style._FunctionState._TEST_TRIGGER = self.old_test_trigger 2202 2217 2218 # FIXME: Eliminate the need for this function. 2219 def set_verbosity(self, verbosity): 2220 """Set new test verbosity and return old test verbosity.""" 2221 old_verbosity = self.verbosity 2222 self.verbosity = verbosity 2223 return old_verbosity 2224 2203 2225 def assert_function_lengths_check(self, code, expected_message): 2204 2226 """Check warnings for long function bodies are as expected. … … 2240 2262 error_level: --v setting for cpp_style. 2241 2263 """ 2242 trigger_level = self.trigger_lines( cpp_style._verbose_level())2264 trigger_level = self.trigger_lines(self.verbosity) 2243 2265 self.assert_function_lengths_check( 2244 2266 'void test(int x)' + self.function_body(lines), … … 2323 2345 2324 2346 def test_function_length_check_definition_below_severity0(self): 2325 old_verbosity = cpp_style._set_verbose_level(0)2347 old_verbosity = self.set_verbosity(0) 2326 2348 self.assert_function_length_check_definition_ok(self.trigger_lines(0) - 1) 2327 cpp_style._set_verbose_level(old_verbosity)2349 self.set_verbosity(old_verbosity) 2328 2350 2329 2351 def test_function_length_check_definition_at_severity0(self): 2330 old_verbosity = cpp_style._set_verbose_level(0)2352 old_verbosity = self.set_verbosity(0) 2331 2353 self.assert_function_length_check_definition_ok(self.trigger_lines(0)) 2332 cpp_style._set_verbose_level(old_verbosity)2354 self.set_verbosity(old_verbosity) 2333 2355 2334 2356 def test_function_length_check_definition_above_severity0(self): 2335 old_verbosity = cpp_style._set_verbose_level(0)2357 old_verbosity = self.set_verbosity(0) 2336 2358 self.assert_function_length_check_above_error_level(0) 2337 cpp_style._set_verbose_level(old_verbosity)2359 self.set_verbosity(old_verbosity) 2338 2360 2339 2361 def test_function_length_check_definition_below_severity1v0(self): 2340 old_verbosity = cpp_style._set_verbose_level(0)2362 old_verbosity = self.set_verbosity(0) 2341 2363 self.assert_function_length_check_below_error_level(1) 2342 cpp_style._set_verbose_level(old_verbosity)2364 self.set_verbosity(old_verbosity) 2343 2365 2344 2366 def test_function_length_check_definition_at_severity1v0(self): 2345 old_verbosity = cpp_style._set_verbose_level(0)2367 old_verbosity = self.set_verbosity(0) 2346 2368 self.assert_function_length_check_at_error_level(1) 2347 cpp_style._set_verbose_level(old_verbosity)2369 self.set_verbosity(old_verbosity) 2348 2370 2349 2371 def test_function_length_check_definition_below_severity1(self): … … 2359 2381 error_level = 1 2360 2382 error_lines = self.trigger_lines(error_level) + 1 2361 trigger_level = self.trigger_lines( cpp_style._verbose_level())2383 trigger_level = self.trigger_lines(self.verbosity) 2362 2384 self.assert_function_lengths_check( 2363 2385 'void test_blanks(int x)' + self.function_body(error_lines), … … 2371 2393 error_level = 1 2372 2394 error_lines = self.trigger_lines(error_level) + 1 2373 trigger_level = self.trigger_lines( cpp_style._verbose_level())2395 trigger_level = self.trigger_lines(self.verbosity) 2374 2396 self.assert_function_lengths_check( 2375 2397 ('my_namespace::my_other_namespace::MyVeryLongTypeName*\n' … … 2386 2408 error_level = 1 2387 2409 error_lines = self.trigger_test_lines(error_level) + 1 2388 trigger_level = self.trigger_test_lines( cpp_style._verbose_level())2410 trigger_level = self.trigger_test_lines(self.verbosity) 2389 2411 self.assert_function_lengths_check( 2390 2412 'TEST_F(Test, Mutator)' + self.function_body(error_lines), … … 2398 2420 error_level = 1 2399 2421 error_lines = self.trigger_test_lines(error_level) + 1 2400 trigger_level = self.trigger_test_lines( cpp_style._verbose_level())2422 trigger_level = self.trigger_test_lines(self.verbosity) 2401 2423 self.assert_function_lengths_check( 2402 2424 ('TEST_F(GoogleUpdateRecoveryRegistryProtectedTest,\n' … … 2413 2435 error_level = 1 2414 2436 error_lines = self.trigger_test_lines(error_level) + 1 2415 trigger_level = self.trigger_test_lines( cpp_style._verbose_level())2437 trigger_level = self.trigger_test_lines(self.verbosity) 2416 2438 self.assert_function_lengths_check( 2417 2439 ('TEST_F(' … … 2426 2448 error_level = 1 2427 2449 error_lines = self.trigger_lines(error_level) + 1 2428 trigger_level = self.trigger_lines( cpp_style._verbose_level())2450 trigger_level = self.trigger_lines(self.verbosity) 2429 2451 self.assert_function_lengths_check( 2430 2452 'void test(int x)' + self.function_body_with_no_lints(error_lines),
Note: See TracChangeset
for help on using the changeset viewer.