Skip to content

feat: clang-tidy by file instead of by target#586

Draft
jared-rodgers-figure wants to merge 6 commits intoaspect-build:mainfrom
jared-rodgers-figure:user/jared/clang-tidy-by-file
Draft

feat: clang-tidy by file instead of by target#586
jared-rodgers-figure wants to merge 6 commits intoaspect-build:mainfrom
jared-rodgers-figure:user/jared/clang-tidy-by-file

Conversation

@jared-rodgers-figure
Copy link

@jared-rodgers-figure jared-rodgers-figure commented Jul 25, 2025

feat: clang-tidy by file instead of by target

Currently clang-tidy creates an action per target for linting, this change aims to swap to an action per file to help speed up lint time through parallelization.
Note: #512 addresses the same issue, but it seems the comments were not addressed so I took a stab at it here.


Changes are visible to end-users: no

Users will get their cache invalidated, but do not have to change anything.

Test plan

  • Manual testing
    Patched this change into my local repo and ran the linter.

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@aspect-workflows
Copy link

aspect-workflows bot commented Jul 25, 2025

Test

All tests were cache hits

3 tests (100.0%) were fully cached saving 421ms.


Test

docs

1 test target passed

Targets
//:update_14_test [k8-fastbuild]25ms

Total test execution time was 25ms. 14 tests (93.3%) were fully cached saving 1s.


Test

example

7 test targets passed

Targets
//tools/format:format_test_JavaScript_with_prettier [k8-fastbuild]10s
//tools/format:format_test_Markdown_with_prettier [k8-fastbuild]3s
//tools/format:format_test_Protocol_Buffer_with_buf [k8-fastbuild]569ms
//tools/format:format_test_Python_with_ruff [k8-fastbuild]322ms
//tools/format:format_test_SQL_with_prettier [k8-fastbuild]2s
//tools/format:format_test_Scala_with_scalafmt [k8-fastbuild]4s
//tools/format:format_test_Starlark_with_buildifier [k8-fastbuild]320ms

Total test execution time was 20s. 27 tests (79.4%) were fully cached saving 7s.


Test (WORKSPACE) (Test)

example

7 test targets passed

Targets
//tools/format:format_test_JavaScript_with_prettier [k8-fastbuild]7s
//tools/format:format_test_Markdown_with_prettier [k8-fastbuild]2s
//tools/format:format_test_Protocol_Buffer_with_buf [k8-fastbuild]475ms
//tools/format:format_test_Python_with_ruff [k8-fastbuild]241ms
//tools/format:format_test_SQL_with_prettier [k8-fastbuild]2s
//tools/format:format_test_Scala_with_scalafmt [k8-fastbuild]2s
//tools/format:format_test_Starlark_with_buildifier [k8-fastbuild]183ms

Total test execution time was 14s. 11 tests (61.1%) were fully cached saving 8s.


Lint

example

0 issues require fixes
0 issues can be fixed automatically


Lint [.]      Lint [docs]

@Synss
Copy link
Contributor

Synss commented Feb 3, 2026

Hi @jared-rodgers-figure, are you still interested in this feature?

#734 was accepted recently. Since I also suffer from long lint-time in our C++ code, I would be very interested in seeing a patch like this one go through.

Thank you for your work!

@Synss
Copy link
Contributor

Synss commented Feb 3, 2026

Oh! sorry for the ping. I somewhat thought that #734 was about rust clippy. It's about clang-tidy, so this takes care of that.

You can ignore my previous comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants