crosvm/tools/clippy

67 lines
1.9 KiB
Text
Raw Normal View History

#!/usr/bin/env python3
# Copyright 2019 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# To check for violations:
# $ ./tools/clippy
#
# To fix violations where possible:
# $ ./tools/clippy --fix
import os
from impl.common import CROSVM_ROOT, cwd, run_main, cmd, chdir
from impl.test_runner import get_workspace_excludes
2022-06-30 00:56:04 +00:00
from impl.test_target import Triple
clippy = cmd("cargo clippy").with_color_flag()
excluded_crates: list[str] = list(get_workspace_excludes(Triple.host_default()))
features: str = ""
if os.name == "posix":
features = "--features=all-linux"
elif os.name != "nt":
raise Exception(f"Unsupported build target: {os.name}")
def is_crate_excluded(crate: str) -> bool:
return crate in excluded_crates
def main(fix: bool = False, json: bool = False, locked: bool = False):
chdir(CROSVM_ROOT)
# Note: Clippy checks are configured in .cargo/config.toml
common_args = [
"--fix" if fix else None,
"--message-format=json" if json else None,
"--locked" if locked else None,
"--all-targets",
"--",
"-Dwarnings",
]
print("Clippy crosvm workspace")
clippy(
"--workspace",
features,
*[f"--exclude={crate}" for crate in excluded_crates],
*common_args,
).fg()
for crate in CROSVM_ROOT.glob("common/*/Cargo.toml"):
# TODO(b/213147081): remove the cros_async exclude this once
# common/cros_async is gone.
if is_crate_excluded(crate.parent.name) or (
os.name == "nt" and crate.parent.name == "cros_async"
):
print("Skipping crate", crate.parent.relative_to(CROSVM_ROOT))
else:
print("Clippy", crate.parent.relative_to(CROSVM_ROOT))
with cwd(crate.parent):
clippy("--all-features", *common_args).fg()
if __name__ == "__main__":
run_main(main)