OLD | NEW |
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 1704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1715 | 1715 |
1716 # Used to detect cases like ec for ExceptionCode. | 1716 # Used to detect cases like ec for ExceptionCode. |
1717 acronym = _create_acronym(text).lower() | 1717 acronym = _create_acronym(text).lower() |
1718 if canonical_text.find(canonical_parameter_name) != -1 or acronym.find(canon
ical_parameter_name) != -1: | 1718 if canonical_text.find(canonical_parameter_name) != -1 or acronym.find(canon
ical_parameter_name) != -1: |
1719 error(parameter.row, 'readability/parameter_name', 5, | 1719 error(parameter.row, 'readability/parameter_name', 5, |
1720 'The parameter name "%s" adds no information, so it should be remo
ved.' % parameter.name) | 1720 'The parameter name "%s" adds no information, so it should be remo
ved.' % parameter.name) |
1721 return False | 1721 return False |
1722 return True | 1722 return True |
1723 | 1723 |
1724 | 1724 |
1725 def check_function_definition_and_pass_ptr(type_text, row, location_description,
error): | |
1726 """Check that function definitions for use Pass*Ptr instead of *Ptr. | |
1727 | |
1728 Args: | |
1729 type_text: A string containing the type. (For return values, it may conta
in more than the type.) | |
1730 row: The row number of the type. | |
1731 location_description: Used to indicate where the type is. This is either
'parameter' or 'return'. | |
1732 error: The function to call with any errors found. | |
1733 """ | |
1734 match_ref_or_own_ptr = '(?=\W|^)(Ref|Own)Ptr(WillBeRawPtr)?(?=\W)' | |
1735 exceptions = '(?:&|\*|\*\s*=\s*(0|nullptr))$' | |
1736 bad_type_usage = search(match_ref_or_own_ptr, type_text) | |
1737 exception_usage = search(exceptions, type_text) | |
1738 if not bad_type_usage or exception_usage: | |
1739 return | |
1740 type_name = bad_type_usage.group(0) | |
1741 error(row, 'readability/pass_ptr', 5, | |
1742 'The %s type should use Pass%s instead of %s.' % (location_description
, type_name, type_name)) | |
1743 | |
1744 | |
1745 def check_function_definition(filename, file_extension, clean_lines, line_number
, function_state, error): | 1725 def check_function_definition(filename, file_extension, clean_lines, line_number
, function_state, error): |
1746 """Check that function definitions for style issues. | 1726 """Check that function definitions for style issues. |
1747 | 1727 |
1748 Specifically, check that parameter names in declarations add information. | 1728 Specifically, check that parameter names in declarations add information. |
1749 | 1729 |
1750 Args: | 1730 Args: |
1751 filename: Filename of the file that is being processed. | 1731 filename: Filename of the file that is being processed. |
1752 file_extension: The current file extension, without the leading dot. | 1732 file_extension: The current file extension, without the leading dot. |
1753 clean_lines: A CleansedLines instance containing the file. | 1733 clean_lines: A CleansedLines instance containing the file. |
1754 line_number: The number of the line to check. | 1734 line_number: The number of the line to check. |
(...skipping 12 matching lines...) Expand all Loading... |
1767 elif not file_extension == "h": | 1747 elif not file_extension == "h": |
1768 error(function_state.function_name_start_position.row, 'readability/
webkit_export', 5, | 1748 error(function_state.function_name_start_position.row, 'readability/
webkit_export', 5, |
1769 'WEBKIT_EXPORT should only be used in header files.') | 1749 'WEBKIT_EXPORT should only be used in header files.') |
1770 elif not function_state.is_declaration or search(r'\binline\b', modifier
s_and_return_type): | 1750 elif not function_state.is_declaration or search(r'\binline\b', modifier
s_and_return_type): |
1771 error(function_state.function_name_start_position.row, 'readability/
webkit_export', 5, | 1751 error(function_state.function_name_start_position.row, 'readability/
webkit_export', 5, |
1772 'WEBKIT_EXPORT should not be used on a function with a body.') | 1752 'WEBKIT_EXPORT should not be used on a function with a body.') |
1773 elif function_state.is_pure: | 1753 elif function_state.is_pure: |
1774 error(function_state.function_name_start_position.row, 'readability/
webkit_export', 5, | 1754 error(function_state.function_name_start_position.row, 'readability/
webkit_export', 5, |
1775 'WEBKIT_EXPORT should not be used with a pure virtual function
.') | 1755 'WEBKIT_EXPORT should not be used with a pure virtual function
.') |
1776 | 1756 |
1777 check_function_definition_and_pass_ptr( | |
1778 modifiers_and_return_type, function_state.function_name_start_position.r
ow, 'return', error) | |
1779 | |
1780 parameter_list = function_state.parameter_list() | 1757 parameter_list = function_state.parameter_list() |
1781 for parameter in parameter_list: | 1758 for parameter in parameter_list: |
1782 check_function_definition_and_pass_ptr(parameter.type, parameter.row, 'p
arameter', error) | |
1783 | |
1784 # Do checks specific to function declarations and parameter names. | 1759 # Do checks specific to function declarations and parameter names. |
1785 if not function_state.is_declaration or not parameter.name: | 1760 if not function_state.is_declaration or not parameter.name: |
1786 continue | 1761 continue |
1787 | 1762 |
1788 # Check the parameter name against the function name for single paramete
r set functions. | 1763 # Check the parameter name against the function name for single paramete
r set functions. |
1789 if len(parameter_list) == 1 and match('set[A-Z]', function_state.current
_function): | 1764 if len(parameter_list) == 1 and match('set[A-Z]', function_state.current
_function): |
1790 trimmed_function_name = function_state.current_function[len('set'):] | 1765 trimmed_function_name = function_state.current_function[len('set'):] |
1791 if not _check_parameter_name_against_text(parameter, trimmed_functio
n_name, error): | 1766 if not _check_parameter_name_against_text(parameter, trimmed_functio
n_name, error): |
1792 continue # Since an error was noted for this name, move to the
next parameter. | 1767 continue # Since an error was noted for this name, move to the
next parameter. |
1793 | 1768 |
(...skipping 2414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4208 | 4183 |
4209 def check(self, lines): | 4184 def check(self, lines): |
4210 _process_lines(self.file_path, self.file_extension, lines, | 4185 _process_lines(self.file_path, self.file_extension, lines, |
4211 self.handle_style_error, self.min_confidence) | 4186 self.handle_style_error, self.min_confidence) |
4212 | 4187 |
4213 | 4188 |
4214 # FIXME: Remove this function (requires refactoring unit tests). | 4189 # FIXME: Remove this function (requires refactoring unit tests). |
4215 def process_file_data(filename, file_extension, lines, error, min_confidence, fs
=None): | 4190 def process_file_data(filename, file_extension, lines, error, min_confidence, fs
=None): |
4216 checker = CppChecker(filename, file_extension, error, min_confidence, fs) | 4191 checker = CppChecker(filename, file_extension, error, min_confidence, fs) |
4217 checker.check(lines) | 4192 checker.check(lines) |
OLD | NEW |