| #!/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 |
| |
| from typing import Optional |
| from impl.common import CROSVM_ROOT, run_main, cmd, chdir, Triple, SHORTHANDS |
| from impl.test_config import DO_NOT_BUILD_RISCV64 |
| |
| clippy = cmd("cargo clippy").with_color_flag() |
| |
| |
| def main( |
| fix: bool = False, |
| json: bool = False, |
| locked: bool = False, |
| platform: Optional[str] = None, |
| ): |
| try: |
| triple: Triple = Triple.from_shorthand(platform) if platform else Triple.host_default() |
| except Exception as e: |
| raise type(e)(str(e) + f"\nValid platforms are {', '.join(SHORTHANDS.keys())}") |
| |
| chdir(CROSVM_ROOT) |
| |
| # Note: Clippy checks are configured in .cargo/config.toml |
| args = [ |
| "--message-format=json" if json else None, |
| "--locked" if locked else None, |
| "--all-targets", |
| "--", |
| "-Dwarnings", |
| ] |
| if fix: |
| args = [ |
| "--fix", |
| "--allow-no-vcs", |
| "--allow-dirty", |
| "--allow-staged", |
| *args, |
| ] |
| # For experimental builds, don't clippy the whole workspace, just what's enabled by features. |
| if triple in (Triple.from_shorthand("riscv64"), Triple.from_shorthand("android")): |
| args = ["--no-default-features", *args] |
| else: |
| args = ["--workspace", *args] |
| |
| print("Clippy crosvm workspace") |
| clippy( |
| f"--features={triple.feature_flag}", |
| *args, |
| ).with_envs(triple.get_cargo_env()).fg() |
| |
| |
| if __name__ == "__main__": |
| run_main(main) |