1
0
mirror of https://github.com/systemd/systemd synced 2025-10-06 00:13:24 +02:00

meson: Implement duplicate includes check with clang-tidy

Instead of doing this with our own script, let's use clang-tidy
instead.
This commit is contained in:
Daan De Meyer
2025-04-24 12:06:49 +02:00
parent 5008a92469
commit d06abcf68e
3 changed files with 2 additions and 43 deletions

View File

@@ -2,7 +2,8 @@
---
Checks: '
-*,
misc-header-include-cycle
misc-header-include-cycle,
readability-duplicate-include
'
WarningsAsErrors: '*'
HeaderFileExtensions:

View File

@@ -2824,16 +2824,6 @@ if git.found()
run_target(
'ctags',
command : [env, 'ctags', '--tag-relative=never', '-o', '@0@/tags'.format(meson.project_source_root())] + all_files)
############################################
if want_tests != 'false' and conf.get('BUILD_MODE_DEVELOPER') == 1
test('check-includes',
files('tools/check-includes.py'),
args: all_files,
env : ['PROJECT_SOURCE_ROOT=@0@'.format(meson.project_source_root())],
suite : 'headers')
endif
endif
####################################################

View File

@@ -1,32 +0,0 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: LGPL-2.1-or-later
# pylint: disable=consider-using-with
import os
import pathlib
import re
import sys
PROJECT_ROOT = pathlib.Path(os.getenv('PROJECT_SOURCE_ROOT', '.'))
def check_file(filename):
seen = set()
good = True
for n, line in enumerate(open(filename)):
m = re.match(r'^\s*#\s*include\s*[<"](\S*)[>"]', line)
if m:
include = m.group(1)
if include in seen:
try:
filename = pathlib.Path(filename).resolve().relative_to(PROJECT_ROOT)
except ValueError:
pass
print(f'{filename}:{n}: {line.strip()}')
good = False
seen.add(include)
return good
if __name__ == '__main__':
all_good = all(check_file(name) for name in sys.argv[1:])
sys.exit(0 if all_good else 1)