러스트 앤 히든 카고 클리피

3407 단어 devopscirustgithub
Clippy는 «일반적인 실수를 포착하고 Rust 코드를 개선하기 위한 린트 모음»입니다. 💪
그러나 어떤 이유로 Clippy는 cargo 명령 안에 숨겨진 보물처럼 보입니다. 우연히 도구의 코드를 확인하면서 이것을 찾았습니다.

어떻게 하면 클리피를 얻을 수 있습니까?



이제 Clippy가 cargo 안에 있지만 cargo --help 명령을 실행할 때 나열되지 않습니다. 코드 형식을 지정하기 위해 cargo fmt 에서도 동일한 일이 발생합니다. 아마도 cargo 내부에 더 많은 부활절 달걀이 있을 것입니다.

또한 CLI에 없는 경우 화물에 추가clippy하는 방법에 대한 guide이 있습니다.

그리고 클리피는 무엇을 합니까?



모든 린터와 마찬가지로 clippy에는 manual_memcpy 과 같은 경고 목록이 있습니다.

What it does
Checks for for-loops that manually copy items between slices that could be optimized by having a memcpy.

Why is this bad
It is not as fast as a memcpy.

Example
for i in 0..src.len() {
    dst[i + 64] = src[i];
}

Could be written as:
dst[64..(src.len() + 64)].clone_from_slice(&src[..]);

그리고 긴 린트 오류 목록here .

이 명령을 실행하는 방법?



Clippy는 코드를 빌드한 다음 린터를 실행하므로 Clippy는 cargo check 하위 명령과 동일한 인수를 받습니다.

cargo clippy # Run in the default package(s).
cargo clippy --release # Run in release mode
cargo clippy --workspace # Checks the packages in the monorepo
cargo build --package myPkgName # An specific page

그런 다음 -- 뒤에 clippy 자체에 대한 인수를 추가할 수 있습니다.

RUSTFLAGS="-Dwarnings" cargo clippy -- -D warnings

이 인수를 사용하면 경고가 발생하면 빌드 작업이 실패합니다. 이 효과를 얻으려면 RUSTFLAGS="-Dwarnings" 환경 변수가 필요하지만 README에서는 이를 언급하지 않습니다.

사용자 정의 구성


clippy.toml 라는 파일에서 린트 규칙을 구성할 수 있습니다. pedantic 규칙을 바꿀 수 있습니다.

#![deny(clippy::pedantic)]

이러한 규칙에는 가양성 경향이 있는 매우 공격적인 린트가 포함되어 있습니다. 🤭

더 많은 예제를 확인할 수 있습니다here.

CI 구성



CI에 대한 최상의 구성은 코드 형식을 확인한 다음 코드 동작을 린트하고 마지막으로 작성한 테스트를 실행하는 것입니다.

# set env RUSTFLAGS="-Dwarnings"
cargo fmt --workspace -- --check
cargo clippy --workspace -- -D warnings
cargo test --workspace

그게 다야! 그리고... 굉장하지 않습니까?



내 생각에 1분을 보내고 린트 도구를 사용하는 것은 차이를 표시하고 코드를 전문적이고 깨끗하며 성능 있게 만드는 것 중 하나입니다.

사용하지 않는다면 지금 시작하는 것이 좋습니다! 기본 가이드가 많이 있습니다.

사용하는 것을 좋아한다면 이제 숨겨진 새로운 트릭을 알 것입니다(기분 좋죠?)

네가 생각하는 것을 말해줘!



Rust에서 유용한 도구를 찾거나 구현한 적이 있습니까? 🦀 Clippy로 코드를 개선하셨나요?

댓글로 알려주세요!

좋은 웹페이지 즐겨찾기