Skip to content

Commit 94529fb

Browse files
committed
chore: add clippy lints
1 parent 3c243ec commit 94529fb

12 files changed

Lines changed: 117 additions & 158 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ jobs:
1919
run: cargo build --verbose
2020
- name: Run tests
2121
run: cargo test --verbose
22+
- name: Run clippy
23+
run: cargo clippy
2224

2325
rustfmt:
2426
runs-on: ubuntu-latest

Cargo.toml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,23 @@ bincode = "1.3.3"
2525
sha2 = "0.10.8"
2626
sqlite = "0.36.0"
2727
serde = { version = "1.0.197", features = ["derive"] }
28+
29+
[lints.clippy]
30+
# The default set of lints in Clippy is viewed as "too noisy" right now so
31+
# they're all turned off by default. Selective lints are then enabled below as
32+
# necessary.
33+
all = { level = 'allow', priority = -1 }
34+
clone_on_copy = 'warn'
35+
map_clone = 'warn'
36+
uninlined_format_args = 'warn'
37+
unnecessary_to_owned = 'warn'
38+
manual_strip = 'warn'
39+
useless_conversion = 'warn'
40+
unnecessary_mut_passed = 'warn'
41+
unnecessary_fallible_conversions = 'warn'
42+
unnecessary_cast = 'warn'
43+
allow_attributes_without_reason = 'warn'
44+
from_over_into = 'warn'
45+
redundant_field_names = 'warn'
46+
multiple_bound_locations = 'warn'
47+
extra_unused_type_parameters = 'warn'

src/constant_offsets.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ pub fn run(func: &mut FunctionBody, cfg: &CFGInfo) {
5959
}
6060

6161
while let Some(block) = workqueue.pop_front() {
62-
log::trace!("processing {}", block);
62+
log::trace!("processing {block}");
6363
workqueue_set.remove(&block);
6464

6565
for &inst in &func.blocks[block].insts {
@@ -75,7 +75,7 @@ pub fn run(func: &mut FunctionBody, cfg: &CFGInfo) {
7575

7676
ValueDef::Operator(op, args, tys) if tys.len() == 1 => {
7777
let args = &func.arg_pool[*args];
78-
log::trace!(" -> args = {:?}", args);
78+
log::trace!(" -> args = {args:?}");
7979

8080
match op {
8181
Operator::I32Const { value } => {
@@ -231,10 +231,7 @@ pub fn run(func: &mut FunctionBody, cfg: &CFGInfo) {
231231
offset_base_const.insert(value, k);
232232
offset_base.insert(value, add);
233233
log::trace!(
234-
"created common base {} (and const {}) associated with offset-from value {}",
235-
k,
236-
add,
237-
value
234+
"created common base {k} (and const {add}) associated with offset-from value {value}"
238235
);
239236
} else {
240237
offset_base.insert(value, value);
@@ -244,7 +241,7 @@ pub fn run(func: &mut FunctionBody, cfg: &CFGInfo) {
244241
// Now, for each value that's an Offset, rewrite it to an add
245242
// instruction.
246243
for (block, block_def) in func.blocks.entries_mut() {
247-
log::trace!("rewriting in block {}", block);
244+
log::trace!("rewriting in block {block}");
248245
let mut computed_offsets: FxHashMap<AbsValue, Value> = FxHashMap::default();
249246
let mut new_insts = vec![];
250247

@@ -265,13 +262,13 @@ pub fn run(func: &mut FunctionBody, cfg: &CFGInfo) {
265262
let args = &func.arg_pool[*args];
266263
let tys = *tys;
267264
let addr = args[0];
268-
log::trace!("load/store with addr {}", addr);
265+
log::trace!("load/store with addr {addr}");
269266
if let AbsValue::Offset(base, this_offset) = values[addr] {
270-
log::trace!("inst {} is a load/store with addr that is offset from base {}; pushing offset into instruction", inst, base);
267+
log::trace!("inst {inst} is a load/store with addr that is offset from base {base}; pushing offset into instruction");
271268
// Update the offset embedded in the Operator
272269
// and use the `base` value instead as the
273270
// address arg.
274-
let mut op = op.clone();
271+
let mut op = *op;
275272
let mut args = args.iter().cloned().collect::<Vec<_>>();
276273
let common_base = *offset_base.get(&base).unwrap();
277274
let offset = *min_offset_from.get(&base).unwrap();
@@ -326,12 +323,12 @@ pub fn run(func: &mut FunctionBody, cfg: &CFGInfo) {
326323
let add = func.values.push(ValueDef::Operator(op, args, i32_ty));
327324
func.source_locs[k] = func.source_locs[inst];
328325
func.source_locs[add] = func.source_locs[inst];
329-
log::trace!(" -> recomputed as {}", add);
326+
log::trace!(" -> recomputed as {add}");
330327
new_insts.push(add);
331328
add
332329
}
333330
});
334-
log::trace!(" -> rewrite to {}", computed_offset);
331+
log::trace!(" -> rewrite to {computed_offset}");
335332
func.values[inst] = ValueDef::Alias(computed_offset);
336333
} else {
337334
new_insts.push(inst);

src/dce.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ fn scan_block(func: &FunctionBody, block: Block, used: &mut FxHashSet<Value>) ->
4848
changed
4949
};
5050

51-
log::trace!("DCE: scanning {}", block);
51+
log::trace!("DCE: scanning {block}");
5252
let mut changed = false;
5353

5454
func.blocks[block].terminator.visit_targets(|target| {
@@ -57,23 +57,20 @@ fn scan_block(func: &FunctionBody, block: Block, used: &mut FxHashSet<Value>) ->
5757
for (&arg, &(_, param)) in target.args.iter().zip(succ_params.iter()) {
5858
if used.contains(&param) {
5959
log::trace!(
60-
" -> succ blockparam {} is used; marking arg {} used from term on {}",
61-
param,
62-
arg,
63-
block,
60+
" -> succ blockparam {param} is used; marking arg {arg} used from term on {block}",
6461
);
6562
changed |= mark_used(used, arg);
6663
}
6764
}
6865
});
6966
match &func.blocks[block].terminator {
7067
Terminator::CondBr { cond: value, .. } | Terminator::Select { value, .. } => {
71-
log::trace!(" -> marking branch input {} used", value);
68+
log::trace!(" -> marking branch input {value} used");
7269
changed |= mark_used(used, *value);
7370
}
7471
Terminator::Return { values } => {
7572
for &value in values {
76-
log::trace!(" -> marking return value {} used", value);
73+
log::trace!(" -> marking return value {value} used");
7774
changed |= mark_used(used, value);
7875
}
7976
}
@@ -87,7 +84,7 @@ fn scan_block(func: &FunctionBody, block: Block, used: &mut FxHashSet<Value>) ->
8784
}
8885
ValueDef::PickOutput(value, ..) => {
8986
if used.contains(&inst) {
90-
log::trace!(" -> marking pick-output src {} used", value);
87+
log::trace!(" -> marking pick-output src {value} used");
9188
changed |= mark_used(used, *value);
9289
}
9390
}
@@ -97,7 +94,7 @@ fn scan_block(func: &FunctionBody, block: Block, used: &mut FxHashSet<Value>) ->
9794
}
9895
if used.contains(&inst) {
9996
for &arg in &func.arg_pool[*args] {
100-
log::trace!(" -> marking arg {} used from {}", arg, inst);
97+
log::trace!(" -> marking arg {arg} used from {inst}");
10198
changed |= mark_used(used, arg);
10299
}
103100
}
@@ -118,7 +115,7 @@ pub(crate) fn run(func: &mut FunctionBody, cfg: &CFGInfo) {
118115
// unreachable block can branch to an unreachable block).
119116
for (block, block_def) in func.blocks.entries_mut() {
120117
if cfg.rpo_pos[block].is_none() {
121-
log::trace!("removing unreachable block {}", block);
118+
log::trace!("removing unreachable block {block}");
122119
block_def.insts.clear();
123120
block_def.params.clear();
124121
block_def.terminator = Terminator::Unreachable;
@@ -135,7 +132,7 @@ pub(crate) fn run(func: &mut FunctionBody, cfg: &CFGInfo) {
135132
for &block in cfg.rpo.values().rev() {
136133
changed |= scan_block(func, block, &mut used);
137134
}
138-
log::trace!("done with all blocks; changed = {}", changed);
135+
log::trace!("done with all blocks; changed = {changed}");
139136
if !changed {
140137
break;
141138
}

src/directive.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ pub(crate) fn collect(module: &Module, im: &mut Image) -> anyhow::Result<Vec<Dir
7474
}
7575
};
7676

77-
log::info!("weval request list head at {:#x}", pending_head_addr);
77+
log::info!("weval request list head at {pending_head_addr:#x}");
7878

7979
let heap = match im.main_heap {
8080
Some(heap) => heap,
@@ -115,7 +115,7 @@ fn decode_weval_req(im: &Image, heap: Memory, head: u32) -> anyhow::Result<Direc
115115
let func_index_out_addr = im.read_u32(heap, head + 28)?;
116116
let args = im.read_slice(heap, arg_ptr, arg_len)?.to_vec();
117117

118-
log::trace!("directive: args {:#x} len {:#x}", arg_ptr, arg_len);
118+
log::trace!("directive: args {arg_ptr:#x} len {arg_len:#x}");
119119

120120
Ok(Directive {
121121
user_id,
@@ -195,7 +195,7 @@ impl DirectiveArgs {
195195
16 + padded_len,
196196
)
197197
}
198-
_ => anyhow::bail!("Invalid type: {}", ty),
198+
_ => anyhow::bail!("Invalid type: {ty}"),
199199
}
200200
} else {
201201
(AbstractValue::Runtime(None), None, 16)

src/escape.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,29 @@ fn shadow_stack_escapes(func: &FunctionBody, cfg: &CFGInfo) -> EscapeAnalysisRes
2828
| &ValueDef::Operator(Operator::GlobalSet { global_index }, _, _)
2929
if global_index.index() == 0 =>
3030
{
31-
log::trace!("tainted because global.get/set: {}", inst);
31+
log::trace!("tainted because global.get/set: {inst}");
3232
tainted.insert(inst);
3333
}
3434
&ValueDef::Operator(Operator::I32Add, args, _)
3535
| &ValueDef::Operator(Operator::I32Sub, args, _) => {
3636
let args = &func.arg_pool[args];
3737
if args.iter().any(|arg| tainted.contains(arg)) {
38-
log::trace!("tainted because of arg: {}", inst);
38+
log::trace!("tainted because of arg: {inst}");
3939
tainted.insert(inst);
4040
}
4141
}
4242
&ValueDef::Operator(_, args, _) => {
4343
let args = &func.arg_pool[args];
4444
if args.iter().any(|arg| tainted.contains(arg)) {
45-
log::trace!("shadow stack escape due to inst {}", inst);
45+
log::trace!("shadow stack escape due to inst {inst}");
4646
return EscapeAnalysisResult::Escapes;
4747
}
4848
}
4949
&ValueDef::PickOutput(val, _, _) | &ValueDef::Alias(val)
5050
if tainted.contains(&val) =>
5151
{
5252
log::trace!(
53-
"taint on {} propagates to {} because of alias or pick",
54-
val,
55-
inst
53+
"taint on {val} propagates to {inst} because of alias or pick"
5654
);
5755
tainted.insert(inst);
5856
}
@@ -64,8 +62,7 @@ fn shadow_stack_escapes(func: &FunctionBody, cfg: &CFGInfo) -> EscapeAnalysisRes
6462
&Terminator::CondBr { cond, .. } | &Terminator::Select { value: cond, .. } => {
6563
if tainted.contains(&cond) {
6664
log::trace!(
67-
"taint on input to conditional branch causes escape: {}",
68-
cond
65+
"taint on input to conditional branch causes escape: {cond}"
6966
);
7067
return EscapeAnalysisResult::Escapes;
7168
}
@@ -111,7 +108,7 @@ fn shadow_stack_escapes(func: &FunctionBody, cfg: &CFGInfo) -> EscapeAnalysisRes
111108

112109
pub(crate) fn remove_shadow_stack_if_non_escaping(func: &mut FunctionBody, cfg: &CFGInfo) {
113110
if let EscapeAnalysisResult::NonEscaping(values_to_remove) = shadow_stack_escapes(func, &cfg) {
114-
log::trace!("removing shadow stack operations: {:?}", values_to_remove);
111+
log::trace!("removing shadow stack operations: {values_to_remove:?}");
115112
let ty_u32 = func.type_pool.single(Type::I32);
116113
let const_zero = func.values.push(ValueDef::Operator(
117114
Operator::I32Const { value: 0 },

0 commit comments

Comments
 (0)