diff options
-rwxr-xr-x | tools/process_iwyu.py | 7 | ||||
-rwxr-xr-x | tools/run_iwyu.sh | 80 |
2 files changed, 61 insertions, 26 deletions
diff --git a/tools/process_iwyu.py b/tools/process_iwyu.py index f91778a2..dd6656b2 100755 --- a/tools/process_iwyu.py +++ b/tools/process_iwyu.py @@ -22,6 +22,7 @@ file = None add = {} remove = {} all_includes = {} +there_were_errors = False # When encountering one of these lines, move to a different state MATCHERS = { @@ -69,7 +70,7 @@ FALSE_POSITIVES = ( def output(): - global file, state, add_fwd_header + global file, state, add_fwd_header, there_were_errors if add_fwd_header: if FWD_HEADER not in all_includes: @@ -88,6 +89,7 @@ def output(): if why: why = ' // ' + why print(f'{Colors.RED}-{line}{Colors.NORMAL}{why}') + there_were_errors = True state = None file = None @@ -143,3 +145,6 @@ for line in sys.stdin: remove[line] = why elif state == FULL: all_includes[line] = why + +if there_were_errors: + sys.exit(1) diff --git a/tools/run_iwyu.sh b/tools/run_iwyu.sh index 0ff6a5e1..f46d807c 100755 --- a/tools/run_iwyu.sh +++ b/tools/run_iwyu.sh @@ -44,6 +44,7 @@ IWYU="python3 $(which iwyu_tool) -p ." PRIVATE_MAPPING="-Xiwyu --mapping_file=$SRCDIR/tools/gjs-private-iwyu.imp -Xiwyu --keep=config.h" PUBLIC_MAPPING="-Xiwyu --mapping_file=$SRCDIR/tools/gjs-public-iwyu.imp" POSTPROCESS="python3 $SRCDIR/tools/process_iwyu.py" +EXIT=0 for FILE in $SRCDIR/gi/*.cpp $SRCDIR/gjs/atoms.cpp $SRCDIR/gjs/byteArray.cpp \ $SRCDIR/gjs/coverage.cpp $SRCDIR/gjs/debugger.cpp \ @@ -55,40 +56,69 @@ for FILE in $SRCDIR/gi/*.cpp $SRCDIR/gjs/atoms.cpp $SRCDIR/gjs/byteArray.cpp \ $SRCDIR/modules/system.cpp $SRCDIR/test/*.cpp $SRCDIR/util/*.cpp \ $SRCDIR/libgjs-private/*.c do - should_analyze $FILE && $IWYU $FILE -- $PRIVATE_MAPPING | $POSTPROCESS + if should_analyze $FILE; then + if ! $IWYU $FILE -- $PRIVATE_MAPPING | $POSTPROCESS; then + EXIT=1 + fi + fi done -should_analyze $SRCDIR/gjs/context.cpp && \ -$IWYU $SRCDIR/gjs/context.cpp -- $PRIVATE_MAPPING \ - -Xiwyu --check_also=*/gjs/context-private.h | $POSTPROCESS +if should_analyze $SRCDIR/gjs/context.cpp; then + if ! $IWYU $SRCDIR/gjs/context.cpp -- $PRIVATE_MAPPING \ + -Xiwyu --check_also=*/gjs/context-private.h | $POSTPROCESS; then + EXIT=1 + fi +fi -( should_analyze $SRCDIR/gjs/jsapi-dynamic-class.cpp || \ - should_analyze $SRCDIR/gjs/jsapi-class.h ) && \ -$IWYU $SRCDIR/gjs/jsapi-dynamic-class.cpp -- $PRIVATE_MAPPING \ - -Xiwyu --check_also=*/gjs/jsapi-class.h | $POSTPROCESS +if ( should_analyze $SRCDIR/gjs/jsapi-dynamic-class.cpp || \ + should_analyze $SRCDIR/gjs/jsapi-class.h ); then + if ! $IWYU $SRCDIR/gjs/jsapi-dynamic-class.cpp -- $PRIVATE_MAPPING \ + -Xiwyu --check_also=*/gjs/jsapi-class.h | $POSTPROCESS; then + EXIT=1 + fi +fi -( should_analyze $SRCDIR/gjs/jsapi-util.cpp || +if ( should_analyze $SRCDIR/gjs/jsapi-util.cpp || should_analyze $SRCDIR/gjs/jsapi-util-args.h || \ - should_analyze $SRCDIR/gjs/jsapi-util-root.h ) && \ -$IWYU $SRCDIR/gjs/jsapi-util.cpp -- $PRIVATE_MAPPING \ - -Xiwyu --check_also=*/gjs/jsapi-util-args.h \ - -Xiwyu --check_also=*/gjs/jsapi-util-root.h | $POSTPROCESS + should_analyze $SRCDIR/gjs/jsapi-util-root.h ); then + if ! $IWYU $SRCDIR/gjs/jsapi-util.cpp -- $PRIVATE_MAPPING \ + -Xiwyu --check_also=*/gjs/jsapi-util-args.h \ + -Xiwyu --check_also=*/gjs/jsapi-util-root.h | $POSTPROCESS; then + EXIT=1 + fi +fi -should_analyze $SRCDIR/gjs/mem.cpp && \ -$IWYU $SRCDIR/gjs/mem.cpp -- $PRIVATE_MAPPING \ - -Xiwyu --check_also=*/gjs/mem-private.h | $POSTPROCESS +if should_analyze $SRCDIR/gjs/mem.cpp; then + if ! $IWYU $SRCDIR/gjs/mem.cpp -- $PRIVATE_MAPPING \ + -Xiwyu --check_also=*/gjs/mem-private.h | $POSTPROCESS; then + EXIT=1 + fi +fi -should_analyze $SRCDIR/gjs/profiler.cpp && \ -$IWYU $SRCDIR/gjs/profiler.cpp -- $PRIVATE_MAPPING \ - -Xiwyu --check_also=*/gjs/profiler-private.h | $POSTPROCESS +if should_analyze $SRCDIR/gjs/profiler.cpp; then + if ! $IWYU $SRCDIR/gjs/profiler.cpp -- $PRIVATE_MAPPING \ + -Xiwyu --check_also=*/gjs/profiler-private.h | $POSTPROCESS; then + EXIT=1 + fi +fi -( should_analyze $SRCDIR/modules/cairo.cpp || - should_analyze $SRCDIR/modules/cairo-module.h ) && \ -$IWYU $SRCDIR/modules/cairo.cpp -- $PRIVATE_MAPPING \ - -Xiwyu --check_also=*/modules/cairo-module.h \ - -Xiwyu --check_also=*/modules/cairo-private.h | $POSTPROCESS +if ( should_analyze $SRCDIR/modules/cairo.cpp || + should_analyze $SRCDIR/modules/cairo-module.h ); then + if ! $IWYU $SRCDIR/modules/cairo.cpp -- $PRIVATE_MAPPING \ + -Xiwyu --check_also=*/modules/cairo-module.h \ + -Xiwyu --check_also=*/modules/cairo-private.h | $POSTPROCESS; then + EXIT=1 + fi +fi for FILE in $SRCDIR/gjs/console.cpp $SRCDIR/installed-tests/minijasmine.cpp do - should_analyze $FILE && $IWYU $FILE -- $PUBLIC_MAPPING | $POSTPROCESS + if should_analyze $FILE; then + if ! $IWYU $FILE -- $PUBLIC_MAPPING | $POSTPROCESS; then + EXIT=1 + fi + fi done + +if test $EXIT -eq 0; then echo "No changes needed."; fi +exit $EXIT |