일반적인 실수, 의심스러운 code, style, complexity, performance 문제를 검사하는 official Rust lint component.
rustup의 default profile에는 보통 포함된다. 빠져 있다면 현재 toolchain에 component를 추가한다.
rustup component add clippy
cargo clippy --version
cargo clippy [cargo-options] [-- lint-options]
cargo clippy [cargo-options…] [– lint-options…]cargo clippy cargo clippy --all-targets --all-features cargo clippy --workspace --all-targets --all-features -- -D warnings cargo clippy --fix --allow-dirty --allow-staged cargo clippy -- -W clippy::pedantic
clippy::correctness: 명백히 잘못되거나 쓸모없는 code. 기본 deny.clippy::suspicious, clippy::style, clippy::complexity, clippy::perf: 기본 lint set의 주요 그룹.clippy::pedantic: 더 엄격하며 false positive 가능성이 있어 선택적으로 적용.clippy::nursery: 개발 중인 lint이므로 version 변화 가능성을 고려.clippy::cargo: Cargo.toml 관련 lint.clippy::restriction: 서로 충돌하거나 일반 code를 과도하게 제한할 수 있어 전체 그룹 활성화를 피하고 개별 lint를 선택한다.cargo clippy --workspace --all-targets --all-features -- -D warnings
-D warnings는 compiler version이 올라가 새 lint가 추가될 때 기존 code의 CI를 깨뜨릴 수 있다. toolchain pinning과 update 정책을 함께 운영한다.
cargo clippy –fix는 source를 수정할 수 있다. clean working tree에서 diff를 검토하며 실행하고, staged 또는 dirty file 허용 flag는 의도를 확인한 경우에만 사용한다.
#[allow(…)]와 근거 comment를 검토한다.–all-features 결과를 모두 확인한다.