P.CGN.02 build.rs
生成的代码要保证没有任何警告
【描述】
build.rs
生成的代码(codegen),要通过或忽略 clippy 检查,不要让库的使用者或应用用户自行忽略
codegen 库要保证生成的代码应该非常干净没有任何警告,不应该让库的使用者去处理生成代码中的警告。
【反例】
lalrpop v0.19.6 生成的代码有几百个 clippy 警告,"淹没"了用户自己代码的 clippy 警告
warning: using `clone` on type `usize` which implements the `Copy` trait
--> /home/w/temp/my_parser/target/debug/build/my_parser-dd96f436ee76c58d/out/my_parser.rs:182148:21
|
182148 | let __end = __start.clone();
| ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `__start`
使得 lalrpop 库的使用者必须手动给生成的模块代码加上 allow clippy,给使用者带来不便
#![allow(unused)] fn main() { lalrpop_mod!( #[allow(clippy::all)] my_parser ); }
【正例】
tonic-build 生成的 rs 会通过 allow 忽略掉 clippy 警告
#![allow(unused)] fn main() { pub mod peer_communication_client { #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] use tonic::codegen::*; }