mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-27 10:17:45 +08:00
Tools/run-clang-tidy: add -exclude argument for file filtering
Add regex-based file exclusion to the clang-tidy runner script. This allows excluding paths (submodules, vendored code, tests) from static analysis without modifying .clang-tidy files in each directory. The -exclude argument accepts a regex pattern that is matched against file paths from the compilation database. Matching files are skipped. Example: -exclude="src/lib/foo|src/modules/bar" This prepares for the clang-tidy v6 to v18 migration where we need to exclude external code that we consume but don't maintain. Signed-off-by: Ramon Roche <mrpollo@gmail.com>
This commit is contained in:
@@ -144,6 +144,8 @@ def main():
|
|||||||
help='number of tidy instances to be run in parallel.')
|
help='number of tidy instances to be run in parallel.')
|
||||||
parser.add_argument('files', nargs='*', default=['.*'],
|
parser.add_argument('files', nargs='*', default=['.*'],
|
||||||
help='files to be processed (regex on path)')
|
help='files to be processed (regex on path)')
|
||||||
|
parser.add_argument('-exclude', dest='exclude', default=None,
|
||||||
|
help='regular expression matching files to exclude')
|
||||||
parser.add_argument('-fix', action='store_true', help='apply fix-its')
|
parser.add_argument('-fix', action='store_true', help='apply fix-its')
|
||||||
parser.add_argument('-format', action='store_true', help='Reformat code '
|
parser.add_argument('-format', action='store_true', help='Reformat code '
|
||||||
'after applying fixes')
|
'after applying fixes')
|
||||||
@@ -192,6 +194,7 @@ def main():
|
|||||||
|
|
||||||
# Build up a big regexy filter from all command line arguments.
|
# Build up a big regexy filter from all command line arguments.
|
||||||
file_name_re = re.compile('(' + ')|('.join(args.files) + ')')
|
file_name_re = re.compile('(' + ')|('.join(args.files) + ')')
|
||||||
|
exclude_re = re.compile(args.exclude) if args.exclude else None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Spin up a bunch of tidy-launching threads.
|
# Spin up a bunch of tidy-launching threads.
|
||||||
@@ -205,6 +208,8 @@ def main():
|
|||||||
# Fill the queue with files.
|
# Fill the queue with files.
|
||||||
for name in files:
|
for name in files:
|
||||||
if file_name_re.search(name):
|
if file_name_re.search(name):
|
||||||
|
if exclude_re and exclude_re.search(name):
|
||||||
|
continue
|
||||||
queue.put(name)
|
queue.put(name)
|
||||||
|
|
||||||
# Wait for all threads to be done.
|
# Wait for all threads to be done.
|
||||||
|
|||||||
Reference in New Issue
Block a user