Skip to content

Commit

Permalink
[clang-tidy] support --load in clang-tidy-diff.py/run-clang-tidy.py
Browse files Browse the repository at this point in the history
Support for loading shared objects as plugins into clang-tidy was added
in http://reviews.llvm.org/D111100. Unfortunately, the utility scripts
`clang-tidy-diff.py` and `run-clang-tidy.py` did not receive
corresponding arguments to forward such plugins to clang-tidy.
This diff adds a `-load=plugin` option to both scripts.

Differential Revision: http://reviews.llvm.org/D12306

Reviewed By: aaron.ballman
  • Loading branch information
bernhardmgruber authored and whisperity committed Apr 28, 2022
1 parent ed8dffe commit b1f1688
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 6 additions & 0 deletions clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,10 @@ def main():
'command line.')
parser.add_argument('-quiet', action='store_true', default=False,
help='Run clang-tidy in quiet mode')
parser.add_argument('-load', dest='plugins',
action='append', default=[],
help='Load the specified plugin in clang-tidy.')

clang_tidy_args = []
argv = sys.argv[1:]
if '--' in argv:
Expand Down Expand Up @@ -233,6 +237,8 @@ def main():
common_clang_tidy_args.append('-extra-arg=%s' % arg)
for arg in args.extra_arg_before:
common_clang_tidy_args.append('-extra-arg-before=%s' % arg)
for plugin in args.plugins:
common_clang_tidy_args.append('-load=%s' % plugin)

for name in lines_by_file:
line_filter_json = json.dumps(
Expand Down
13 changes: 10 additions & 3 deletions clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def make_absolute(f, directory):
def get_tidy_invocation(f, clang_tidy_binary, checks, tmpdir, build_path,
header_filter, allow_enabling_alpha_checkers,
extra_arg, extra_arg_before, quiet, config_file_path,
config, line_filter, use_color):
config, line_filter, use_color, plugins):
"""Gets a command line for clang-tidy."""
start = [clang_tidy_binary]
if allow_enabling_alpha_checkers:
Expand Down Expand Up @@ -126,6 +126,8 @@ def get_tidy_invocation(f, clang_tidy_binary, checks, tmpdir, build_path,
start.append('--config-file=' + config_file_path)
elif config:
start.append('-config=' + config)
for plugin in plugins:
start.append('-load=' + plugin)
start.append(f)
return start

Expand Down Expand Up @@ -196,7 +198,8 @@ def run_tidy(args, clang_tidy_binary, tmpdir, build_path, queue, lock,
args.allow_enabling_alpha_checkers,
args.extra_arg, args.extra_arg_before,
args.quiet, args.config_file, args.config,
args.line_filter, args.use_color)
args.line_filter, args.use_color,
args.plugins)

proc = subprocess.Popen(invocation, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = proc.communicate()
Expand Down Expand Up @@ -280,6 +283,9 @@ def main():
'command line.')
parser.add_argument('-quiet', action='store_true',
help='Run clang-tidy in quiet mode')
parser.add_argument('-load', dest='plugins',
action='append', default=[],
help='Load the specified plugin in clang-tidy.')
args = parser.parse_args()

db_path = 'compile_commands.json'
Expand All @@ -306,7 +312,8 @@ def main():
args.allow_enabling_alpha_checkers,
args.extra_arg, args.extra_arg_before,
args.quiet, args.config_file, args.config,
args.line_filter, args.use_color)
args.line_filter, args.use_color,
args.plugins)
invocation.append('-list-checks')
invocation.append('-')
if args.quiet:
Expand Down

0 comments on commit b1f1688

Please sign in to comment.