xb tidy command.
This commit is contained in:
parent
2f012fb56d
commit
b4094e58eb
|
@ -1 +1 @@
|
||||||
Subproject commit 846aedb0c4c6fe38b50be7a8be06990232892812
|
Subproject commit 59e3e55df8dd87eea70556f50d172a17f1c4b6d0
|
65
xenia-build
65
xenia-build
|
@ -404,6 +404,7 @@ def discover_commands(subparsers):
|
||||||
'lint': LintCommand(subparsers),
|
'lint': LintCommand(subparsers),
|
||||||
'format': FormatCommand(subparsers),
|
'format': FormatCommand(subparsers),
|
||||||
'style': StyleCommand(subparsers),
|
'style': StyleCommand(subparsers),
|
||||||
|
'tidy': TidyCommand(subparsers),
|
||||||
}
|
}
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
commands['devenv'] = DevenvCommand(subparsers)
|
commands['devenv'] = DevenvCommand(subparsers)
|
||||||
|
@ -1136,6 +1137,70 @@ class StyleCommand(Command):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
# TODO(benvanik): merge into linter, or as lint --anal?
|
||||||
|
class TidyCommand(Command):
|
||||||
|
"""'tidy' command."""
|
||||||
|
|
||||||
|
def __init__(self, subparsers, *args, **kwargs):
|
||||||
|
super(TidyCommand, self).__init__(
|
||||||
|
subparsers,
|
||||||
|
name='tidy',
|
||||||
|
help_short='Runs the clang-tiday checker on all code.',
|
||||||
|
*args, **kwargs)
|
||||||
|
self.parser.add_argument(
|
||||||
|
'--fix', action='store_true',
|
||||||
|
help='Applies suggested fixes, where possible.')
|
||||||
|
|
||||||
|
def execute(self, args, pass_args, cwd):
|
||||||
|
# Run premake to generate our compile_commands.json file for clang to use.
|
||||||
|
run_premake_export_commands()
|
||||||
|
|
||||||
|
platform_name = ''
|
||||||
|
if sys.platform == 'darwin':
|
||||||
|
platform_name = 'darwin'
|
||||||
|
elif sys.platform == 'win32':
|
||||||
|
platform_name = 'windows'
|
||||||
|
else:
|
||||||
|
platform_name = 'linux'
|
||||||
|
tool_root = 'build/llvm_tools/debug_%s' % (platform_name)
|
||||||
|
|
||||||
|
all_files = [file_path for file_path in find_all_source_files()
|
||||||
|
if not file_path.endswith('_test.cc')]
|
||||||
|
# Tidy only likes .cc files.
|
||||||
|
all_files = [file_path for file_path in all_files
|
||||||
|
if file_path.endswith('.cc')]
|
||||||
|
|
||||||
|
any_errors = False
|
||||||
|
for file in all_files:
|
||||||
|
print('- clang-tidy %s' % (file))
|
||||||
|
ret = shell_call([
|
||||||
|
'clang-tidy',
|
||||||
|
'-p', tool_root,
|
||||||
|
'-checks=' + ','.join([
|
||||||
|
'clang-analyzer-*',
|
||||||
|
'google-*',
|
||||||
|
'misc-*',
|
||||||
|
'modernize-*'
|
||||||
|
# TODO(benvanik): pick the ones we want - some are silly.
|
||||||
|
# 'readability-*',
|
||||||
|
]),
|
||||||
|
] + (['-fix'] if args['fix'] else []) + [
|
||||||
|
file,
|
||||||
|
], throw_on_error=False)
|
||||||
|
if ret:
|
||||||
|
any_errors = True
|
||||||
|
|
||||||
|
print('')
|
||||||
|
if any_errors:
|
||||||
|
print('ERROR: 1+ clang-tidy calls failed.')
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
print('Tidy completed successfully.')
|
||||||
|
return 0
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
class DevenvCommand(Command):
|
class DevenvCommand(Command):
|
||||||
"""'devenv' command."""
|
"""'devenv' command."""
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue