Refactor clang_tidy.py (#61119)

Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/61119

This change spilts the clang-tidy CI job into smaller steps and uses a
refactored version of the clang_tidy.py script.

The new folder structure is as follows:
```
tools/linter/clang_tidy
|_ __main__py
|_ requirements.txt
|_ run.py
|_ setup.sh
```

`__main__.py`

This script will run `tools/linter/clang_tidy/setup.sh` if a `build`
directory doesn't exist, mimicing what used to be done as a separate
step in the CI job.

After that, it will invoke `clang-tidy` with default arguments being
declared in the script itself (as opposed to declaring them in
lint.yml).

The reasoning behind this approach is two-fold:

- Make it easier to run `clang-tidy` locally using this script
- De-duplicate the option passing

`requirements.txt`

Contains a list of additional python dependencies needed by the
`clang-tidy` script.

`setup.sh`

If a build directory doesn't exist, this command will run the necessary
codegen and build commands for running `clang-tidy`

Example usage:
```
python3 tools/linter/clang_tidy --parallel
```
Notice that we don't have to put the `.py` at the end of `clang_tidy`.

Test Plan:
Run the following command:
```
python3 tools/linter/clang_tidy --paths torch/csrc/fx --parallel
```

Reviewed By: walterddr, janeyx99

Differential Revision: D29568582

Pulled By: 1ntEgr8

fbshipit-source-id: cd6d11c5cb8ba9f1344a87c35647a1cd8dd45b04
This commit is contained in:
Elton Leander Pinto
2021-07-06 16:00:47 -07:00
committed by Facebook GitHub Bot
parent 81e36d02a6
commit a1ad28da10
17 changed files with 402 additions and 303 deletions

View File

@ -70,6 +70,7 @@ setup_lint:
--job 'shellcheck' --step 'Install ShellCheck' --no-quiet; \
fi
pip install jinja2
pip install -r tools/linter/clang_tidy/requirements.txt
quick_checks:
# TODO: This is broken when 'git config submodule.recurse' is 'true' since the
@ -116,4 +117,4 @@ toc:
lint: flake8 mypy quick_checks cmakelint shellcheck
quicklint: CHANGED_ONLY=--changed-only
quicklint: mypy flake8 mypy quick_checks cmakelint shellcheck
quicklint: mypy flake8 quick_checks cmakelint shellcheck