#!/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)