https://github.com/vbvictor updated https://github.com/llvm/llvm-project/pull/154416
>From 3d87ccf38a518def2bd44dbddb661360a64158a2 Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Tue, 19 Aug 2025 22:39:19 +0300 Subject: [PATCH 1/4] [clang-tidy] Improve "-quiet" option in tidy-scripts by suppressing progress information --- .../clang-tidy/tool/clang-tidy-diff.py | 6 +++-- .../clang-tidy/tool/run-clang-tidy.py | 27 +++++++++++-------- clang-tools-extra/docs/ReleaseNotes.rst | 4 +++ .../infrastructure/quiet-flag-scripts.cpp | 24 +++++++++++++++++ 4 files changed, 48 insertions(+), 13 deletions(-) create mode 100644 clang-tools-extra/test/clang-tidy/infrastructure/quiet-flag-scripts.cpp diff --git a/clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py b/clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py index d7899e0a18d0c..bb012ceff442b 100755 --- a/clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py +++ b/clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py @@ -312,7 +312,8 @@ def main(): if max_task_count == 0: max_task_count = multiprocessing.cpu_count() max_task_count = min(len(lines_by_file), max_task_count) - print(f"Running clang-tidy in {max_task_count} threads...") + if not args.quiet: + print(f"Running clang-tidy in {max_task_count} threads...") combine_fixes = False export_fixes_dir = None @@ -408,7 +409,8 @@ def main(): return_code = 1 if combine_fixes: - print("Writing fixes to " + args.export_fixes + " ...") + if not args.quiet: + print("Writing fixes to " + args.export_fixes + " ...") try: merge_replacement_files(export_fixes_dir, args.export_fixes) except: diff --git a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py index 670e0a2c7678a..69788b5b15b48 100755 --- a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py +++ b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py @@ -681,13 +681,14 @@ async def main() -> None: file_name_re = re.compile("|".join(args.files)) files = {f for f in files if file_name_re.search(f)} - print( - f"Running clang-tidy in {max_task} threads for", - len(files), - "files out of", - number_files_in_database, - "in compilation database ...", - ) + if not args.quiet: + print( + f"Running clang-tidy in {max_task} threads for", + len(files), + "files out of", + number_files_in_database, + "in compilation database ...", + ) returncode = 0 semaphore = asyncio.Semaphore(max_task) @@ -716,13 +717,15 @@ async def main() -> None: result.stderr += f"{result.filename}: terminated by signal {-result.returncode}\n" progress = f"[{i + 1: >{len(f'{len(files)}')}}/{len(files)}]" runtime = f"[{result.elapsed:.1f}s]" - print(f"{progress}{runtime} {' '.join(result.invocation)}") + if not args.quiet: + print(f"{progress}{runtime} {' '.join(result.invocation)}") if result.stdout: print(result.stdout, end=("" if result.stderr else "\n")) if result.stderr: print(result.stderr) except asyncio.CancelledError: - print("\nCtrl-C detected, goodbye.") + if not args.quiet: + print("\nCtrl-C detected, goodbye.") for task in tasks: task.cancel() if delete_fixes_dir: @@ -742,7 +745,8 @@ async def main() -> None: print("No profiling data found.") if combine_fixes: - print(f"Writing fixes to {args.export_fixes} ...") + if not args.quiet: + print(f"Writing fixes to {args.export_fixes} ...") try: assert export_fixes_dir merge_replacement_files(export_fixes_dir, args.export_fixes) @@ -752,7 +756,8 @@ async def main() -> None: returncode = 1 if args.fix: - print("Applying fixes ...") + if not args.quiet: + print("Applying fixes ...") try: assert export_fixes_dir apply_fixes(args, clang_apply_replacements_binary, export_fixes_dir) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 388979d9577ba..4473584e9fb26 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -122,6 +122,10 @@ Improvements to clang-tidy - Improved :program:`clang-tidy` option `-quiet` by suppressing diagnostic count messages. +- Improved :program:`run-clang-tidy.py` and :program:`clang-tidy-diff.py` + scripts to respect the `-quiet` option by suppressing progress and + informational messages. + New checks ^^^^^^^^^^ diff --git a/clang-tools-extra/test/clang-tidy/infrastructure/quiet-flag-scripts.cpp b/clang-tools-extra/test/clang-tidy/infrastructure/quiet-flag-scripts.cpp new file mode 100644 index 0000000000000..aec9356f3ad1f --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/infrastructure/quiet-flag-scripts.cpp @@ -0,0 +1,24 @@ +// RUN: rm -rf %t +// RUN: mkdir %t +// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %/t/test.cpp\",\"file\":\"%/t/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json +// RUN: echo "Checks: '-*,readability-magic-numbers'" > %t/.clang-tidy +// RUN: cp "%s" "%t/test.cpp" +// RUN: cd "%t" + +// RUN: %run_clang_tidy -quiet "test.cpp" 2>&1 | FileCheck %s --check-prefix=CHECK-RUN-QUIET +// CHECK-RUN-QUIET-NOT: Running clang-tidy in {{[1-9][0-9]*}} threads for +// CHECK-RUN-QUIET-NOT: {{[0-9]+}} warning{{s?}} generated +// CHECK-RUN-QUIET-NOT: [1/1] +// CHECK-RUN-QUIET: 42 is a magic number; + +// REQUIRES: shell +// RUN: sed 's/42/99/' %s > %t-diff.cpp + +// RUN: not diff -U0 %s %t-diff.cpp | %clang_tidy_diff -checks=-*,readability-magic-numbers -quiet -- -std=c++11 2>&1 | FileCheck %s --check-prefix=CHECK-DIFF-QUIET +// CHECK-DIFF-QUIET-NOT: Running clang-tidy in {{[1-9][0-9]*}} threads... +// CHECK-DIFF-QUIET-NOT: {{[0-9]+}} warning{{s?}} generated +// CHECK-DIFF-QUIET: 99 is a magic number; + +int main() { + int x = 42; +} >From 277f72995a4ea2fcb089dea660d9c8453489b704 Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Wed, 20 Aug 2025 18:04:37 +0300 Subject: [PATCH 2/4] use f-string for formatting --- clang-tools-extra/clang-tidy/tool/run-clang-tidy.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py index 69788b5b15b48..9b7bf617b6eb9 100755 --- a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py +++ b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py @@ -683,11 +683,8 @@ async def main() -> None: if not args.quiet: print( - f"Running clang-tidy in {max_task} threads for", - len(files), - "files out of", - number_files_in_database, - "in compilation database ...", + f"Running clang-tidy in {max_task} threads for {len(files)} files" + "out of {number_files_in_database} in compilation database ..." ) returncode = 0 >From af2bde1581c2a919b4fd295c61e03bc9425e28fe Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Wed, 20 Aug 2025 18:22:07 +0300 Subject: [PATCH 3/4] fix incorrect python fstring --- clang-tools-extra/clang-tidy/tool/run-clang-tidy.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py index 9b7bf617b6eb9..7d96c88867469 100755 --- a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py +++ b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py @@ -683,8 +683,8 @@ async def main() -> None: if not args.quiet: print( - f"Running clang-tidy in {max_task} threads for {len(files)} files" - "out of {number_files_in_database} in compilation database ..." + f"Running clang-tidy in {max_task} threads for {len(files)} files " + f"out of {number_files_in_database} in compilation database ..." ) returncode = 0 >From 9c92891283dbd4408b3879671e74a8ac39c68265 Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Wed, 20 Aug 2025 18:23:51 +0300 Subject: [PATCH 4/4] use fstring --- clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py b/clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py index bb012ceff442b..2ee235b331e76 100755 --- a/clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py +++ b/clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py @@ -410,7 +410,7 @@ def main(): if combine_fixes: if not args.quiet: - print("Writing fixes to " + args.export_fixes + " ...") + print(f"Writing fixes to {args.export_fixes} ...") try: merge_replacement_files(export_fixes_dir, args.export_fixes) except: _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits