1*bb4ee6a4SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2019 The ChromiumOS Authors 3*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file. 5*bb4ee6a4SAndroid Build Coastguard Worker 6*bb4ee6a4SAndroid Build Coastguard Worker# To check for violations: 7*bb4ee6a4SAndroid Build Coastguard Worker# $ ./tools/clippy 8*bb4ee6a4SAndroid Build Coastguard Worker# 9*bb4ee6a4SAndroid Build Coastguard Worker# To fix violations where possible: 10*bb4ee6a4SAndroid Build Coastguard Worker# $ ./tools/clippy --fix 11*bb4ee6a4SAndroid Build Coastguard Worker 12*bb4ee6a4SAndroid Build Coastguard Workerfrom typing import Optional 13*bb4ee6a4SAndroid Build Coastguard Workerfrom impl.common import CROSVM_ROOT, run_main, cmd, chdir, Triple, SHORTHANDS 14*bb4ee6a4SAndroid Build Coastguard Workerfrom impl.test_config import DO_NOT_BUILD_RISCV64 15*bb4ee6a4SAndroid Build Coastguard Worker 16*bb4ee6a4SAndroid Build Coastguard Workerclippy = cmd("cargo clippy").with_color_flag() 17*bb4ee6a4SAndroid Build Coastguard Worker 18*bb4ee6a4SAndroid Build Coastguard Worker 19*bb4ee6a4SAndroid Build Coastguard Workerdef main( 20*bb4ee6a4SAndroid Build Coastguard Worker fix: bool = False, 21*bb4ee6a4SAndroid Build Coastguard Worker json: bool = False, 22*bb4ee6a4SAndroid Build Coastguard Worker locked: bool = False, 23*bb4ee6a4SAndroid Build Coastguard Worker platform: Optional[str] = None, 24*bb4ee6a4SAndroid Build Coastguard Worker): 25*bb4ee6a4SAndroid Build Coastguard Worker try: 26*bb4ee6a4SAndroid Build Coastguard Worker triple: Triple = Triple.from_shorthand(platform) if platform else Triple.host_default() 27*bb4ee6a4SAndroid Build Coastguard Worker except Exception as e: 28*bb4ee6a4SAndroid Build Coastguard Worker raise type(e)(str(e) + f"\nValid platforms are {', '.join(SHORTHANDS.keys())}") 29*bb4ee6a4SAndroid Build Coastguard Worker 30*bb4ee6a4SAndroid Build Coastguard Worker chdir(CROSVM_ROOT) 31*bb4ee6a4SAndroid Build Coastguard Worker 32*bb4ee6a4SAndroid Build Coastguard Worker # Note: Clippy checks are configured in .cargo/config.toml 33*bb4ee6a4SAndroid Build Coastguard Worker args = [ 34*bb4ee6a4SAndroid Build Coastguard Worker "--message-format=json" if json else None, 35*bb4ee6a4SAndroid Build Coastguard Worker "--locked" if locked else None, 36*bb4ee6a4SAndroid Build Coastguard Worker "--all-targets", 37*bb4ee6a4SAndroid Build Coastguard Worker "--", 38*bb4ee6a4SAndroid Build Coastguard Worker "-Dwarnings", 39*bb4ee6a4SAndroid Build Coastguard Worker ] 40*bb4ee6a4SAndroid Build Coastguard Worker if fix: 41*bb4ee6a4SAndroid Build Coastguard Worker args = [ 42*bb4ee6a4SAndroid Build Coastguard Worker "--fix", 43*bb4ee6a4SAndroid Build Coastguard Worker "--allow-no-vcs", 44*bb4ee6a4SAndroid Build Coastguard Worker "--allow-dirty", 45*bb4ee6a4SAndroid Build Coastguard Worker "--allow-staged", 46*bb4ee6a4SAndroid Build Coastguard Worker *args, 47*bb4ee6a4SAndroid Build Coastguard Worker ] 48*bb4ee6a4SAndroid Build Coastguard Worker # For experimental builds, don't clippy the whole workspace, just what's enabled by features. 49*bb4ee6a4SAndroid Build Coastguard Worker if triple in (Triple.from_shorthand("riscv64"), Triple.from_shorthand("android")): 50*bb4ee6a4SAndroid Build Coastguard Worker args = ["--no-default-features", *args] 51*bb4ee6a4SAndroid Build Coastguard Worker else: 52*bb4ee6a4SAndroid Build Coastguard Worker args = ["--workspace", *args] 53*bb4ee6a4SAndroid Build Coastguard Worker 54*bb4ee6a4SAndroid Build Coastguard Worker print("Clippy crosvm workspace") 55*bb4ee6a4SAndroid Build Coastguard Worker clippy( 56*bb4ee6a4SAndroid Build Coastguard Worker f"--features={triple.feature_flag}", 57*bb4ee6a4SAndroid Build Coastguard Worker *args, 58*bb4ee6a4SAndroid Build Coastguard Worker ).with_envs(triple.get_cargo_env()).fg() 59*bb4ee6a4SAndroid Build Coastguard Worker 60*bb4ee6a4SAndroid Build Coastguard Worker 61*bb4ee6a4SAndroid Build Coastguard Workerif __name__ == "__main__": 62*bb4ee6a4SAndroid Build Coastguard Worker run_main(main) 63