On 16 May 2022, at 12:19, Peng He wrote:
> Eelco Chaudron <[email protected]> 于2022年5月16日周一 17:12写道: > >> >> >> On 14 May 2022, at 10:40, Peng He wrote: >> >>> Signed-off-by: Peng He <[email protected]> >>> --- >>> utilities/checkpatch.py | 32 +++++++++++++++++++++++++++++--- >>> 1 file changed, 29 insertions(+), 3 deletions(-) >>> >>> diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py >>> index 8c7faa419..67c517b69 100755 >>> --- a/utilities/checkpatch.py >>> +++ b/utilities/checkpatch.py >>> @@ -619,6 +619,8 @@ def regex_function_factory(func_name): >>> def regex_error_factory(description): >>> return lambda: print_error(description) >>> >> >> Need extra newline, install flake8 and you will get the error at compile >> time. >> >>> +def regex_warn_factory(description): >>> + return lambda: print_warning(description) >> >> Need extra newline, install flake8 and you will get the error at compile >> time. >> >>> >>> std_functions = [ >>> ('malloc', 'Use xmalloc() in place of malloc()'), >>> @@ -636,6 +638,7 @@ std_functions = [ >>> ('assert', 'Use ovs_assert() in place of assert()'), >>> ('error', 'Use ovs_error() in place of error()'), >>> ] >>> + >>> checks += [ >>> {'regex': r'(\.c|\.h)(\.in)?$', >>> 'match_name': None, >>> @@ -644,6 +647,21 @@ checks += [ >>> 'print': regex_error_factory(description)} >>> for (function_name, description) in std_functions] >>> >>> +experimental_api = [ >> >> I do not think this is an experimental API, I would call it something like >> a suspicious API maybe? >> > > or change to easy_to_misused_api? This is fine by me to. >> >>> + ('ovsrcu_barrier', >>> + 'lib/ovs-rcu.c', >>> + 'Are you sure you need to use ovsrcu_barrier(),' >> >> Here you need to add a space at the end, as the error message now looks >> like: >> >> WARNING: Are you sure you need to use ovsrcu_barrier(),in most cases >> ovsrcu_synchronize() will be fine? >> >>> + 'in most cases ovsrcu_synchronize() will be fine?'), >>> + ] >>> + >>> +checks += [ >>> + {'regex': r'(\.c)(\.in)?$', >>> + 'match_name': lambda x: x != location, >>> + 'prereq': lambda x: not is_comment_line(x), >>> + 'check': regex_function_factory(function_name), >>> + 'print': regex_warn_factory(description)} >>> + for (function_name, location, description) in experimental_api] >>> + >>> >>> def regex_operator_factory(operator): >>> regex = re.compile(r'^[^#][^"\']*[^ "]%s[^ "\'][^"]*' % operator) >>> @@ -676,12 +694,20 @@ def get_file_type_checks(filename): >>> global checks >>> checkList = [] >>> for check in checks: >>> + regex_check = True >>> + match_check = True >>> + >>> if check['regex'] is None and check['match_name'] is None: >>> checkList.append(check) >>> + continue >>> + >>> if check['regex'] is not None and \ >>> - re.compile(check['regex']).search(filename) is not None: >>> - checkList.append(check) >>> - elif check['match_name'] is not None and >> check['match_name'](filename): >>> + re.compile(check['regex']).search(filename) is None: >>> + regex_check = False >>> + elif check['match_name'] is not None and not >> check['match_name'](filename): >> >> Line is too long so you need to break it up: >> >> utilities/checkpatch.py:709:80: E501 line too long (83 > 79 characters) >> >> >>> + match_check = False >>> + >>> + if regex_check and match_check: >>> checkList.append(check) >> >> Would it not make more sense to re-write the above elif cases to a single >> case? >> >>> return checkList >>> >>> -- >>> 2.25.1 >> >> > will send a new version, thanks for the detailed review. You can also add my Signed-off-by: if you make the suggested changes to keep the robot happy. //Eelco _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
