fedimint
fedimint copied to clipboard
Add Git commit checks to disallow `.unwrap()`
Are there any cases where we'd prefer .unwrap() over .expect()? If not, I think adding a pre-commit hook check to ensure .unwrap() is not used could speed up PR review for newcomers.
In tests I considered unwraps good enough in the past, but I'd be ok with only allowing expects going forward.
I added the following to .config/semgrep.yaml:
- id: ban-unwrap
languages:
- rust
message: 'Using .unwrap() is banned. Consider using .expect() instead.'
patterns:
- pattern: $X.unwrap()
severity: WARNING
Here is the result of running semgrep --config=.config/semgrep.yaml:
Command Output: 355 instances of unwrap
┌─────────────┐ │ Scan Status │ └─────────────┘ Scanning 508 files tracked by git with 10 Code rules: Scanning 218 files with 10 rust rules.
┌───────────────────┐ │ 355 Code Findings │ └───────────────────┘
crypto/aead/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
126┆ let key = get_encryption_key(password, salt).unwrap();
⋮┆----------------------------------------
127┆ let mut cipher_text = encrypt(message.as_bytes().to_vec(), &key).unwrap();
⋮┆----------------------------------------
128┆ let decrypted = decrypt(&mut cipher_text, &key).unwrap();
crypto/tbs/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
197┆ let sig = blinded_sig.0 * blinding_key.0.invert().unwrap();
crypto/tbs/src/serde_impl/scalar.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
31┆ Ok(scalar.unwrap())
devimint/src/federation.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
118┆ Ok(cmd!(self, "info").out_json().await?["total_amount_msat"]
119┆ .as_u64()
120┆ .unwrap())
⋮┆----------------------------------------
247┆ let deposit_address = deposit["address"].as_str().unwrap();
⋮┆----------------------------------------
248┆ let deposit_operation_id = deposit["operation_id"].as_str().unwrap();
⋮┆----------------------------------------
273┆ let gateway_balance = cmd!(gw, "balance", "--federation-id={fed_id}")
274┆ .out_json()
275┆ .await
276┆ .map_err(ControlFlow::Continue)?
277┆ .as_u64()
278┆ .unwrap();
⋮┆----------------------------------------
286┆ self.client_config()
287┆ .await
288┆ .unwrap()
devimint/src/tests.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
55┆ let max = v.iter().last().unwrap().to_owned();
⋮┆----------------------------------------
56┆ let min = v.first().unwrap().to_owned();
⋮┆----------------------------------------
243┆ let backup_secret = cmd!(client, "print-secret").out_json().await?["secret"]
244┆ .as_str()
245┆ .map(ToOwned::to_owned)
246┆ .unwrap();
⋮┆----------------------------------------
457┆ let guardian_count = config["global"]["api_endpoints"].as_object().unwrap().len();
⋮┆----------------------------------------
458┆ let descriptor = config["modules"]["2"]["peg_in_descriptor"]
459┆ .as_str()
460┆ .unwrap()
⋮┆----------------------------------------
485┆ let operation = cmd!(client, "list-operations")
486┆ .out_json()
487┆ .await?
488┆ .get("operations")
489┆ .expect("Output didn't contain operation log")
490┆ .as_array()
491┆ .unwrap()
⋮┆----------------------------------------
485┆ let operation = cmd!(client, "list-operations")
486┆ .out_json()
487┆ .await?
488┆ .get("operations")
489┆ .expect("Output didn't contain operation log")
490┆ .as_array()
491┆ .unwrap()
492┆ .first()
493┆ .unwrap()
⋮┆----------------------------------------
507┆ let notes = cmd!(client, "spend", CLIENT_SPEND_AMOUNT)
508┆ .out_json()
509┆ .await?
510┆ .get("notes")
511┆ .expect("Output didn't contain e-cash notes")
512┆ .as_str()
513┆ .unwrap()
⋮┆----------------------------------------
532┆ let _notes = cmd!(client, "spend", CLIENT_SPEND_AMOUNT)
533┆ .out_json()
534┆ .await?
535┆ .as_object()
536┆ .unwrap()
⋮┆----------------------------------------
532┆ let _notes = cmd!(client, "spend", CLIENT_SPEND_AMOUNT)
533┆ .out_json()
534┆ .await?
535┆ .as_object()
536┆ .unwrap()
537┆ .get("notes")
538┆ .expect("Output didn't contain e-cash notes")
539┆ .as_str()
540┆ .unwrap();
⋮┆----------------------------------------
542┆ let reissue_notes = cmd!(client, "spend", reissue_amount).out_json().await?["notes"]
543┆ .as_str()
544┆ .map(|s| s.to_owned())
545┆ .unwrap();
⋮┆----------------------------------------
546┆ let client_reissue_amt = cmd!(client, "reissue", reissue_notes)
547┆ .out_json()
548┆ .await?
549┆ .as_u64()
550┆ .unwrap();
⋮┆----------------------------------------
555┆ let reissue_notes = cmd!(client, "spend", reissue_amount).out_json().await?["notes"]
556┆ .as_str()
557┆ .map(|s| s.to_owned())
558┆ .unwrap();
⋮┆----------------------------------------
559┆ let client_reissue_amt = cmd!(
560┆ client,
561┆ "module",
562┆ "--module",
563┆ "mint",
564┆ "reissue",
565┆ reissue_notes
566┆ )
567┆ .out_json()
568┆ .await?
[hid 2 additional lines, adjust with --max-lines-per-finding]
584┆ let initial_cln_gateway_balance = cmd!(gw_cln, "balance", "--federation-id={fed_id}")
585┆ .out_json()
586┆ .await?
587┆ .as_u64()
588┆ .unwrap();
⋮┆----------------------------------------
616┆ let final_cln_outgoing_gateway_balance = cmd!(gw_cln, "balance", "--federation-
id={fed_id}")
617┆ .out_json()
618┆ .await?
619┆ .as_u64()
620┆ .unwrap();
⋮┆----------------------------------------
676┆ let final_cln_incoming_gateway_balance = cmd!(gw_cln, "balance", "--federation-
id={fed_id}")
677┆ .out_json()
678┆ .await?
679┆ .as_u64()
680┆ .unwrap();
⋮┆----------------------------------------
698┆ let initial_lnd_gateway_balance = cmd!(gw_lnd, "balance", "--federation-id={fed_id}")
699┆ .out_json()
700┆ .await?
701┆ .as_u64()
702┆ .unwrap();
⋮┆----------------------------------------
734┆ let final_lnd_outgoing_gateway_balance = cmd!(gw_lnd, "balance", "--federation-
id={fed_id}")
735┆ .out_json()
736┆ .await?
737┆ .as_u64()
738┆ .unwrap();
⋮┆----------------------------------------
791┆ let final_lnd_incoming_gateway_balance = cmd!(gw_lnd, "balance", "--federation-
id={fed_id}")
792┆ .out_json()
793┆ .await?
794┆ .as_u64()
795┆ .unwrap();
⋮┆----------------------------------------
850┆ let txid: Txid = withdraw_res["txid"].as_str().unwrap().parse().unwrap();
⋮┆----------------------------------------
850┆ let txid: Txid = withdraw_res["txid"].as_str().unwrap().parse().unwrap();
⋮┆----------------------------------------
851┆ let fees_sat = withdraw_res["fees_sat"].as_u64().unwrap();
⋮┆----------------------------------------
864┆ let tx = bitcoin::Transaction::consensus_decode_hex(&tx_hex, &Default::default()).unwrap();
⋮┆----------------------------------------
865┆ let address = bitcoin::Address::from_str(&address).unwrap();
⋮┆----------------------------------------
1143┆ let secret = cmd!(reference_client, "print-secret").out_json().await?["secret"]
1144┆ .as_str()
1145┆ .map(ToOwned::to_owned)
1146┆ .unwrap();
⋮┆----------------------------------------
1150┆ let pre_balance = pre_notes["total_amount_msat"].as_u64().unwrap();
⋮┆----------------------------------------
1182┆ let post_balance = post_notes["total_amount_msat"].as_u64().unwrap();
⋮┆----------------------------------------
1199┆ let post_balance = cmd!(client, "restore", &secret,)
1200┆ .out_json()
1201┆ .await?
1202┆ .as_u64()
1203┆ .unwrap();
⋮┆----------------------------------------
1231┆ let post_balance = post_notes["total_amount_msat"].as_u64().unwrap();
⋮┆----------------------------------------
1247┆ let post_balance = post_notes["total_amount_msat"].as_u64().unwrap();
⋮┆----------------------------------------
1679┆ .map(|o| o["descriptor"].as_str().unwrap())
⋮┆----------------------------------------
1739┆ .map(|o| o["descriptor"].as_str().unwrap())
fedimint-cli/src/client.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
193┆ let mut updates = mint
194┆ .subscribe_reissue_external_notes(operation_id)
195┆ .await
196┆ .unwrap()
⋮┆----------------------------------------
207┆ Ok(serde_json::to_value(amount).unwrap())
⋮┆----------------------------------------
326┆ Ok(serde_json::to_value(LnInvoiceResponse {
327┆ operation_id,
328┆ invoice: invoice.to_string(),
329┆ })
330┆ .unwrap())
⋮┆----------------------------------------
416┆ return Ok(serde_json::to_value(Vec::<String>::new()).unwrap());
⋮┆----------------------------------------
433┆ Ok(serde_json::to_value(gateways_json).unwrap())
⋮┆----------------------------------------
441┆ Ok(serde_json::to_value(gateway_json).unwrap())
⋮┆----------------------------------------
466┆ Ok(serde_json::to_value(()).unwrap())
⋮┆----------------------------------------
475┆ Ok(serde_json::to_value(()).unwrap())
⋮┆----------------------------------------
548┆ (amount.unwrap(), fees)
⋮┆----------------------------------------
680┆ serde_json::to_value(PayInvoiceResponse {
681┆ operation_id,
682┆ contract_id,
683┆ preimage: preimage.consensus_encode_to_hex(),
684┆ })
685┆ .unwrap(),
⋮┆----------------------------------------
721┆ serde_json::to_value(PayInvoiceResponse {
722┆ operation_id,
723┆ contract_id,
724┆ preimage,
725┆ })
726┆ .unwrap(),
⋮┆----------------------------------------
762┆ Ok(serde_json::to_value(InfoResponse {
763┆ federation_id: client.federation_id(),
764┆ network: wallet_client.get_network(),
765┆ meta: client.get_config().global.meta.clone(),
766┆ total_amount_msat: summary.total_amount(),
767┆ total_num_notes: summary.count_items(),
768┆ denominations_msat: summary,
769┆ })
770┆ .unwrap())
fedimint-cli/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
221┆ let mut json = serde_json::to_value(self).unwrap();
⋮┆----------------------------------------
654┆ Ok(CliOutput::Raw(serde_json::to_value(()).unwrap()))
⋮┆----------------------------------------
797┆ in_file_handle.read_to_end(&mut plaintext_bytes).unwrap();
fedimint-client/src/oplog.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
358┆ meta: serde_json::to_value(()).unwrap(),
⋮┆----------------------------------------
375┆ extra_meta: serde_json::to_value(()).unwrap(),
⋮┆----------------------------------------
380┆ meta: serde_json::to_value(meta.clone()).unwrap(),
⋮┆----------------------------------------
403┆ OperationLog::set_operation_outcome(&db, op_id, &"baz")
404┆ .await
405┆ .unwrap();
fedimint-client/src/sm/executor.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
1213┆ executor
1214┆ .add_state_machines(vec![DynState::from_typed(
1215┆ MOCK_INSTANCE_1,
1216┆ MockStateMachine::Start,
1217┆ )])
1218┆ .await
1219┆ .unwrap();
⋮┆----------------------------------------
1247┆ sender.send(0).unwrap();
fedimint-core/src/api.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
1044┆ rclient
1045┆ .as_ref()
1046┆ .unwrap()
⋮┆----------------------------------------
1058┆ rclient
1059┆ .as_ref()
1060┆ .unwrap()
⋮┆----------------------------------------
1193┆ Ok(serde_json::from_str(&json).unwrap())
⋮┆----------------------------------------
1251┆ fed.request("", &[]).await.unwrap();
⋮┆----------------------------------------
1258┆ fed.request("", &[]).await.unwrap();
⋮┆----------------------------------------
1268┆ fed.request("", &[]).await.unwrap();
⋮┆----------------------------------------
1290┆ if FAIL.lock().unwrap().contains(&id) {
⋮┆----------------------------------------
1300┆ !FAIL.lock().unwrap().contains(&self.0)
⋮┆----------------------------------------
1316┆ FAIL.lock().unwrap().insert(0);
⋮┆----------------------------------------
1324┆ fed.request("", &[]).await.unwrap();
⋮┆----------------------------------------
1333┆ FAIL.lock().unwrap().insert(1);
⋮┆----------------------------------------
1347┆ FAIL.lock().unwrap().insert(2);
⋮┆----------------------------------------
1351┆ FAIL.lock().unwrap().insert(3);
⋮┆----------------------------------------
1371┆ "ws://test1".parse().unwrap(),
⋮┆----------------------------------------
1380┆ let json = serde_json::to_string(&connect).unwrap();
⋮┆----------------------------------------
1381┆ let connect_as_string: String = serde_json::from_str(&json).unwrap();
⋮┆----------------------------------------
1383┆ let connect_parsed_json: InviteCode = serde_json::from_str(&json).unwrap();
fedimint-core/src/db/mod.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
2814┆ tx.send(()).unwrap();
⋮┆----------------------------------------
2818┆ rx.await.unwrap();
fedimint-core/src/encoding/btc.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
157┆ hash.consensus_encode(&mut encoded).unwrap();
⋮┆----------------------------------------
158┆ let hash_decoded = bitcoin::hashes::sha256::Hash::consensus_decode(
159┆ &mut Cursor::new(encoded),
160┆ &ModuleDecoderRegistry::default(),
161┆ )
162┆ .unwrap();
fedimint-core/src/encoding/mod.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
1017┆ let len = value.consensus_encode(&mut bytes).unwrap();
⋮┆----------------------------------------
1021┆ let decoded = T::consensus_decode(&mut cursor,
&ModuleDecoderRegistry::default()).unwrap();
⋮┆----------------------------------------
1031┆ let len = value.consensus_encode(&mut bytes).unwrap();
⋮┆----------------------------------------
1036┆ let decoded = T::consensus_decode(&mut cursor,
&ModuleDecoderRegistry::default()).unwrap();
⋮┆----------------------------------------
1082┆ unknown_variant
1083┆ .consensus_encode(&mut unknown_variant_encoding)
1084┆ .unwrap();
⋮┆----------------------------------------
1099┆ unknown_variant
1100┆ .consensus_encode(&mut unknown_variant_encoding)
1101┆ .unwrap();
⋮┆----------------------------------------
1180┆ let invoice = invoice_str
1181┆ .parse::<lightning_invoice::Bolt11Invoice>()
1182┆ .unwrap();
⋮┆----------------------------------------
1220┆ value.consensus_encode(&mut writer).unwrap();
⋮┆----------------------------------------
1225┆ T::consensus_decode(&mut Cursor::new(bytes), &ModuleDecoderRegistry::default()).unwrap()
⋮┆----------------------------------------
1275┆ let txid = bitcoin::Txid::from_hex(
1276┆ "51f7ed2f23e58cc6e139e715e9ce304a1e858416edc9079dd7b74fa8d2efc09a",
1277┆ )
1278┆ .unwrap();
⋮┆----------------------------------------
1286┆ let transaction: Vec<u8> = FromHex::from_hex(
1287┆ "02000000000101d35b66c54cf6c09b81a8d94cd5d179719cd7595c258449452a9305ab9b12df250200000
000fdffffff020cd50a0000000000160014ae5d450b71c04218e6e81c86fcc225882d7b7caae695b22100000000
160014f60834ef165253c571b11ce9fa74e46692fc5ec10248304502210092062c609f4c8dc74cd7d4596ecedc1
093140d90b3fd94b4bdd9ad3e102ce3bc02206bb5a6afc68d583d77d5d9bcfb6252a364d11a307f3418be1af9f4
7f7b1b3d780121026e5628506ecd33242e5ceb5fdafe4d3066b5c0f159b3c05a621ef65f177ea28600000000"
1288┆ ).unwrap();
⋮┆----------------------------------------
1290┆ bitcoin::Transaction::from_bytes(&transaction, &ModuleDecoderRegistry::default())
1291┆ .unwrap();
⋮┆----------------------------------------
1309┆ let blockhash = bitcoin::BlockHash::from_hex(
1310┆ "0000000000000000000065bda8f8a88f2e1e00d9a6887a43d640e52a4c7660f2",
1311┆ )
1312┆ .unwrap();
fedimint-core/src/encoding/tbs.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
69┆ let affine = point.unwrap();
⋮┆----------------------------------------
116┆ Ok(tbs::AggregatePublicKey(point.unwrap()))
⋮┆----------------------------------------
139┆ Ok(tbs::PublicKeyShare(point.unwrap()))
⋮┆----------------------------------------
166┆ Ok(tbs::BlindingKey(key.unwrap()))
⋮┆----------------------------------------
237┆ let decryption_share = sks.secret_key_share(0).decrypt_share(&ciphertext).unwrap();
fedimint-core/src/hex/serde.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
36┆ let json = serde_json::to_string(&data).unwrap();
⋮┆----------------------------------------
44┆ let data: Data = serde_json::from_str(json).unwrap();
fedimint-core/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
587┆ let all: BitcoinAmountOrAll = serde_json::from_str("\"all\"").unwrap();
⋮┆----------------------------------------
590┆ let all: BitcoinAmountOrAll = serde_json::from_str("12345").unwrap();
fedimint-core/src/query.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
476┆ api: MultiApiVersion::try_from_iter([
477┆ ApiVersion { major: 2, minor: 3 },
478┆ ApiVersion { major: 3, minor: 1 },
479┆ ])
480┆ .unwrap(),
fedimint-core/src/txoproof.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
83┆ self.consensus_encode(&mut bytes).unwrap();
⋮┆----------------------------------------
120┆ self.consensus_encode(&mut bytes).unwrap();
fedimint-core/src/util/mod.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
229┆ Self::try_new::<Infallible, _>(span, async { Ok(make.await) })
230┆ .await
231┆ .unwrap()
⋮┆----------------------------------------
349┆ let safe_url = SafeUrl::parse(url_str).unwrap();
⋮┆----------------------------------------
365┆ let _: SafeUrl = url::Url::parse("http://1.2.3.4:80/foo").unwrap().into();
fedimint-dbtool/src/dump.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
72┆ let decoders = module_inits
73┆ .available_decoders(cfg.iter_module_instances())
74┆ .unwrap()
⋮┆----------------------------------------
98┆ let decoders = client_module_inits
99┆ .available_decoders(kinds)
100┆ .unwrap()
⋮┆----------------------------------------
124┆ let json = serde_json::to_string_pretty(&self.serialized).unwrap();
fedimint-dbtool/src/main.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
102┆ let rocksdb = fedimint_rocksdb::RocksDb::open(&options.database)
103┆ .unwrap()
⋮┆----------------------------------------
117┆ let rocksdb = fedimint_rocksdb::RocksDb::open(&options.database)
118┆ .unwrap()
⋮┆----------------------------------------
127┆ let rocksdb = fedimint_rocksdb::RocksDb::open(&options.database)
128┆ .unwrap()
⋮┆----------------------------------------
191┆ let rocksdb = fedimint_rocksdb::RocksDb::open(&options.database)
192┆ .unwrap()
fedimint-derive/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
100┆ .map(|field| field.ident.clone().unwrap())
⋮┆----------------------------------------
144┆ .map(|field| field.ident.clone().unwrap())
⋮┆----------------------------------------
344┆ .map(|field| field.ident.clone().unwrap())
fedimint-load-test-tool/src/main.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
465┆ let oob_notes = users_notes.remove(&u).unwrap();
⋮┆----------------------------------------
499┆ users_notes.get_mut(&u).unwrap().push(oob_notes);
⋮┆----------------------------------------
728┆ let oob_notes = users_notes.remove(&u).unwrap();
⋮┆----------------------------------------
1144┆ let entry = entry.unwrap();
⋮┆----------------------------------------
1145┆ let metadata = entry.metadata().unwrap();
⋮┆----------------------------------------
1148┆ .unwrap_or_else(|_| metadata.modified().unwrap());
⋮┆----------------------------------------
1213┆ let max = v.iter().last().unwrap();
⋮┆----------------------------------------
1214┆ let min = v.first().unwrap();
fedimint-logging/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
123┆ let tracer = opentelemetry_jaeger::new_agent_pipeline()
124┆ .with_service_name("fedimint")
125┆ .install_simple()
126┆ .unwrap();
fedimint-rocksdb/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
146┆ let val = self.0.get(key).unwrap();
⋮┆----------------------------------------
158┆ let val = self.0.get(key).unwrap();
⋮┆----------------------------------------
371┆ let path = tempfile::Builder::new()
372┆ .prefix(temp_path)
373┆ .tempdir()
374┆ .unwrap();
⋮┆----------------------------------------
377┆ RocksDb::open(path).unwrap(),
⋮┆----------------------------------------
472┆ let path = tempfile::Builder::new()
473┆ .prefix("fcb-rocksdb-test-module-db-prefix")
474┆ .tempdir()
475┆ .unwrap();
⋮┆----------------------------------------
478┆ RocksDb::open(path).unwrap(),
⋮┆----------------------------------------
548┆ let path = tempfile::Builder::new()
549┆ .prefix("fcb-rocksdb-test-descending-order")
550┆ .tempdir()
551┆ .unwrap();
⋮┆----------------------------------------
554┆ RocksDb::open(&path).unwrap(),
⋮┆----------------------------------------
599┆ let db_readonly = RocksDbReadOnly::open_read_only(path).unwrap();
fedimint-server/src/config/api.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
1063┆ let response = self.client.consensus_config_gen_params().await.unwrap();
⋮┆----------------------------------------
1099┆ self.client
1100┆ .set_config_gen_params(request, self.auth.clone())
1101┆ .await
1102┆ .unwrap();
⋮┆----------------------------------------
1114┆ read_server_config(&auth.unwrap(), cfg_dir.clone()).unwrap()
⋮┆----------------------------------------
1114┆ read_server_config(&auth.unwrap(), cfg_dir.clone()).unwrap()
⋮┆----------------------------------------
1124┆ let base_port = port_alloc(PEER_NUM * PORTS_PER_PEER).unwrap();
⋮┆----------------------------------------
1153┆ follower
1154┆ .client
1155┆ .set_password(follower.auth.clone())
1156┆ .await
1157┆ .unwrap();
⋮┆----------------------------------------
1159┆ follower.set_connections(&leader_url).await.unwrap();
⋮┆----------------------------------------
1161┆ follower.set_connections(&leader_url).await.unwrap();
⋮┆----------------------------------------
1176┆ let base_port = port_alloc(PEER_NUM * PORTS_PER_PEER).unwrap();
⋮┆----------------------------------------
1205┆ follower
1206┆ .client
1207┆ .set_password(follower.auth.clone())
1208┆ .await
1209┆ .unwrap();
⋮┆----------------------------------------
1211┆ follower.set_connections(&leader_url).await.unwrap();
⋮┆----------------------------------------
1213┆ follower.set_connections(&leader_url).await.unwrap();
⋮┆----------------------------------------
1221┆ leader
1222┆ .client
1223┆ .restart_federation_setup(leader.auth.clone())
1224┆ .await
1225┆ .unwrap();
⋮┆----------------------------------------
1252┆ follower
1253┆ .client
1254┆ .set_password(follower.auth.clone())
1255┆ .await
1256┆ .unwrap();
⋮┆----------------------------------------
1258┆ follower.set_connections(&leader_url).await.unwrap();
⋮┆----------------------------------------
1271┆ leader
1272┆ .client
1273┆ .set_password(leader.auth.clone())
1274┆ .await
1275┆ .unwrap();
⋮┆----------------------------------------
1283┆ leader.set_connections(&None).await.unwrap();
⋮┆----------------------------------------
1285┆ leader.set_connections(&None).await.unwrap();
⋮┆----------------------------------------
1288┆ let _ = leader
1289┆ .client
1290┆ .get_default_config_gen_params(leader.auth.clone())
1291┆ .await
1292┆ .unwrap();
⋮┆----------------------------------------
1301┆ let peers = leader.client.get_config_gen_peers().await.unwrap();
⋮┆----------------------------------------
1312┆ configs.push(peer.client.consensus_config_gen_params().await.unwrap());
⋮┆----------------------------------------
1344┆ peer.client
1345┆ .get_verify_config_hash(peer.auth.clone())
1346┆ .await
1347┆ .unwrap(),
⋮┆----------------------------------------
1355┆ let dummy: DummyConfig = cfg.get_module_config_typed(0).unwrap();
⋮┆----------------------------------------
1378┆ let dummy: DummyConfig = cfg.get_module_config_typed(0).unwrap();
fedimint-server/src/config/distributedgen.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
197┆ .map(|shares| *shares.get(idx).unwrap())
⋮┆----------------------------------------
511┆ let receive_dkg = dkgs.get_mut(&receive_peer).unwrap();
⋮┆----------------------------------------
513┆ steps.push_back((receive_peer, step.unwrap()));
fedimint-server/src/consensus/debug.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
32┆ f.write_fmt(format_args!("\n Output: {output}")).unwrap();
fedimint-server/src/db.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
145┆ let accepted_tx_id = AcceptedTransactionKey(TransactionId::from_slice(&BYTE_32).unwrap());
⋮┆----------------------------------------
150┆ let schnorr = secp.sign_schnorr(&Message::from_slice(&BYTE_32).unwrap(), &key_pair);
⋮┆----------------------------------------
182┆ peer: PeerId::from_str("0").unwrap(),
fedimint-server/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
95┆ let (consensus_server, consensus_api) = ConsensusServer::new(
96┆ cfg,
97┆ self.db.clone(),
98┆ self.settings.registry.clone(),
99┆ &mut task_group,
100┆ )
101┆ .await
102┆ .unwrap();
fedimint-server/src/multiplexed.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
251┆ conn1.send(&[peer2], mux_key, msg_i).await.unwrap();
fedimint-server/src/net/connect.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
205┆ let config = rustls::ServerConfig::builder()
206┆ .with_safe_defaults()
207┆ .with_client_cert_verifier(verifier)
208┆ .with_single_cert(
209┆ vec![self.our_certificate.clone()],
210┆ self.our_private_key.clone(),
211┆ )
212┆ .unwrap();
⋮┆----------------------------------------
681┆ let mut connection = receive.recv().await.unwrap();
⋮┆----------------------------------------
718┆ let bind_addr: SocketAddr = "127.0.0.1:7000".parse().unwrap();
⋮┆----------------------------------------
719┆ let url: SafeUrl = "ws://127.0.0.1:7000".parse().unwrap();
⋮┆----------------------------------------
727┆ let mut listener = Connector::<u64>::listen(&conn_a, bind_addr).await.unwrap();
⋮┆----------------------------------------
729┆ listener.next().await.unwrap().unwrap()
⋮┆----------------------------------------
729┆ listener.next().await.unwrap().unwrap()
⋮┆----------------------------------------
733┆ let (auth_peer_b, mut conn_b) = Connector::<u64>::connect_framed(&conn_b, url, peer_a)
734┆ .await
735┆ .unwrap();
⋮┆----------------------------------------
736┆ let (auth_peer_a, mut conn_a) = conn_a_fut.await.unwrap();
⋮┆----------------------------------------
741┆ conn_a.send(42).await.unwrap();
⋮┆----------------------------------------
742┆ conn_b.send(21).await.unwrap();
⋮┆----------------------------------------
793┆ let bind_addr: SocketAddr = "127.0.0.1:7000".parse().unwrap();
⋮┆----------------------------------------
794┆ let url: SafeUrl = "ws://127.0.0.1:7000".parse().unwrap();
⋮┆----------------------------------------
802┆ let mut listener = Connector::<Vec<u8>>::listen(&conn_a, bind_addr)
803┆ .await
804┆ .unwrap();
⋮┆----------------------------------------
806┆ listener.next().await.unwrap().unwrap()
⋮┆----------------------------------------
806┆ listener.next().await.unwrap().unwrap()
⋮┆----------------------------------------
810┆ let (auth_peer_b, mut conn_b) = Connector::<Vec<u8>>::connect_framed(&conn_b, url, peer_a)
811┆ .await
812┆ .unwrap();
⋮┆----------------------------------------
813┆ let (auth_peer_a, mut conn_a) = conn_a_fut.await.unwrap();
⋮┆----------------------------------------
819┆ conn_a.send(vec![42; 16000]).await.unwrap();
⋮┆----------------------------------------
852┆ gen_cert_and_key(&format!("peer-{}", peer.to_usize())).unwrap()
⋮┆----------------------------------------
878┆ let bind_addr: SocketAddr = "127.0.0.1:7000".parse().unwrap();
⋮┆----------------------------------------
879┆ let url: SafeUrl = "ws://127.0.0.1:7000".parse().unwrap();
⋮┆----------------------------------------
886┆ let mut server: ConnectionListener<u64> = connectors[0].listen(bind_addr).await.unwrap();
⋮┆----------------------------------------
889┆ let (peer, mut conn) = server.next().await.unwrap().unwrap();
⋮┆----------------------------------------
889┆ let (peer, mut conn) = server.next().await.unwrap().unwrap();
⋮┆----------------------------------------
891┆ let received = conn.next().await.unwrap().unwrap();
⋮┆----------------------------------------
891┆ let received = conn.next().await.unwrap().unwrap();
⋮┆----------------------------------------
893┆ conn.send(21).await.unwrap();
⋮┆----------------------------------------
898┆ let (peer_of_a, mut client_a): (_, AnyFramedTransport<u64>) = connectors[2]
899┆ .connect_framed(url.clone(), PeerId::from(0))
900┆ .await
901┆ .unwrap();
⋮┆----------------------------------------
903┆ client_a.send(42).await.unwrap();
⋮┆----------------------------------------
904┆ let received = client_a.next().await.unwrap().unwrap();
⋮┆----------------------------------------
904┆ let received = client_a.next().await.unwrap().unwrap();
⋮┆----------------------------------------
908┆ server_task.await.unwrap();
⋮┆----------------------------------------
913┆ let bind_addr: SocketAddr = "127.0.0.1:7001".parse().unwrap();
⋮┆----------------------------------------
914┆ let url: SafeUrl = "wss://127.0.0.1:7001".parse().unwrap();
⋮┆----------------------------------------
925┆ let mut server: ConnectionListener<u64> = honest.listen(bind_addr).await.unwrap();
⋮┆----------------------------------------
928┆ let conn_res = server.next().await.unwrap();
⋮┆----------------------------------------
943┆ conn.next().await.unwrap()?;
⋮┆----------------------------------------
954┆ server_task.await.unwrap();
⋮┆----------------------------------------
960┆ malicious_wrong_key.listen(bind_addr).await.unwrap();
⋮┆----------------------------------------
963┆ let conn_res = server.next().await.unwrap();
⋮┆----------------------------------------
977┆ conn.next().await.unwrap()?;
⋮┆----------------------------------------
988┆ server_task.await.unwrap();
⋮┆----------------------------------------
994┆ TlsTcpConnector::new(cfg[2].clone(), PeerId::from(2))
995┆ .listen(bind_addr)
996┆ .await
997┆ .unwrap();
⋮┆----------------------------------------
1000┆ let conn_res = server.next().await.unwrap();
⋮┆----------------------------------------
1014┆ conn.next().await.unwrap()?;
⋮┆----------------------------------------
1025┆ server_task.await.unwrap();
fedimint-server/src/net/framed.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
191┆ dst.writer().write_all(&[0u8; 8]).unwrap();
⋮┆----------------------------------------
269┆ framed_sender.send(item.clone()).await.unwrap();
⋮┆----------------------------------------
273┆ let received = framed_recipient.next().await.unwrap().unwrap();
⋮┆----------------------------------------
273┆ let received = framed_recipient.next().await.unwrap().unwrap();
⋮┆----------------------------------------
301┆ framed_sender
302┆ .send(TestEnum::Bar(0x4242_4242_4242_4242))
303┆ .await
304┆ .unwrap();
⋮┆----------------------------------------
308┆ recipient_src.read_exact(&mut buf).await.unwrap();
⋮┆----------------------------------------
309┆ sender_dst.write_all(&buf).await.unwrap();
fedimint-server/src/net/peers.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
738┆ let cfg = peer.parse().unwrap();
⋮┆----------------------------------------
748┆ bind_addr: bind.parse().unwrap(),
⋮┆----------------------------------------
789┆ task_group.join_all(None).await.unwrap();
fedimint-server/src/net/peers_reliable.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
774┆ let cfg = peer.parse().unwrap();
⋮┆----------------------------------------
784┆ bind_addr: bind.parse().unwrap(),
⋮┆----------------------------------------
804┆ peers_a.send(&[PeerId::from(2)], 42).await.unwrap();
⋮┆----------------------------------------
805┆ let recv = timeout(peers_b.receive()).await.unwrap().unwrap();
⋮┆----------------------------------------
805┆ let recv = timeout(peers_b.receive()).await.unwrap().unwrap();
⋮┆----------------------------------------
812┆ peers_a.send(&[PeerId::from(3)], 21).await.unwrap();
⋮┆----------------------------------------
831┆ task_group.join_all(None).await.unwrap();
fedimint-server/src/net/queue.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
88┆ let umsg = queue_iter.next().unwrap();
fedimint-testing/src/btc/mock.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
44┆ url: "http://ignored".parse().unwrap(),
⋮┆----------------------------------------
127┆ let merkle_root = Self::pending_merkle_tree(pending)
128┆ .extract_matches(&mut vec![], &mut vec![])
129┆ .unwrap();
⋮┆----------------------------------------
155┆ let mut blocks = self.blocks.lock().unwrap();
⋮┆----------------------------------------
156┆ let mut pending = self.pending.lock().unwrap();
⋮┆----------------------------------------
157┆ let mut addresses = self.addresses.lock().unwrap();
⋮┆----------------------------------------
167┆ let block_count = self.blocks.lock().unwrap().len() as u64;
⋮┆----------------------------------------
178┆ let mut blocks = self.blocks.lock().unwrap();
⋮┆----------------------------------------
179┆ let mut pending = self.pending.lock().unwrap();
⋮┆----------------------------------------
180┆ let mut addresses = self.addresses.lock().unwrap();
⋮┆----------------------------------------
181┆ let mut scripts = self.scripts.lock().unwrap();
⋮┆----------------------------------------
182┆ let mut proofs = self.proofs.lock().unwrap();
⋮┆----------------------------------------
194┆ let block_header = blocks.last().unwrap().header;
⋮┆----------------------------------------
209┆ Address::p2wpkh(&bitcoin::PublicKey::new(public_key), Network::Regtest).unwrap()
⋮┆----------------------------------------
214┆ let sats = self
215┆ .blocks
216┆ .lock()
217┆ .unwrap()
⋮┆----------------------------------------
229┆ let pending = self.pending.lock().unwrap().clone();
⋮┆----------------------------------------
230┆ let addresses = self.addresses.lock().unwrap().clone();
⋮┆----------------------------------------
265┆ Ok(self.blocks.lock().unwrap().len() as u64)
⋮┆----------------------------------------
269┆ Ok(self.blocks.lock().unwrap()[height as usize]
⋮┆----------------------------------------
279┆ let mut pending = self.pending.lock().unwrap();
⋮┆----------------------------------------
298┆ for (height, block) in self.blocks.lock().unwrap().iter().enumerate() {
⋮┆----------------------------------------
311┆ let scripts = self.scripts.lock().unwrap();
⋮┆----------------------------------------
317┆ let proofs = self.proofs.lock().unwrap();
fedimint-testing/src/btc/real.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
251┆ let pre = self.inner.client.get_block_count().unwrap();
⋮┆----------------------------------------
253┆ let post = self.inner.client.get_block_count().unwrap();
fedimint-testing/src/db.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
31┆ let has_cargo = read_dir(p)?.any(|p| p.unwrap().file_name() == *"Cargo.lock");
⋮┆----------------------------------------
122┆ let project_root = get_project_root().unwrap();
⋮┆----------------------------------------
140┆ let project_root = get_project_root().unwrap();
⋮┆----------------------------------------
170┆ let snapshot_dirs = get_project_root().unwrap().join("db/migrations");
fedimint-testing/src/federation.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
46┆ let client_config = self.configs[&PeerId::from(0)]
47┆ .consensus
48┆ .to_client_config(&self.server_init)
49┆ .unwrap();
⋮┆----------------------------------------
59┆ let client_secret = Client::load_or_generate_client_secret(client_builder.db())
60┆ .await
61┆ .unwrap();
⋮┆----------------------------------------
79┆ self.configs[&PeerId::from(0)]
80┆ .consensus
81┆ .to_client_config(&self.server_init)
82┆ .unwrap()
⋮┆----------------------------------------
109┆ let decoders = server_init.available_decoders(instances).unwrap();
⋮┆----------------------------------------
126┆ consensus_server.run(handle).await.unwrap();
⋮┆----------------------------------------
156┆ gen_cert_and_key(&format!("peer-{}", peer.to_usize())).unwrap(),
fedimint-testing/src/fixtures.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
63┆ let rpc_config = BitcoinRpcConfig::from_env_vars().unwrap();
⋮┆----------------------------------------
64┆ let dyn_bitcoin_rpc = create_bitcoind(&rpc_config, task_group.make_handle()).unwrap();
⋮┆----------------------------------------
144┆ let decoders = server_gens.available_decoders(module_kinds).unwrap();
⋮┆----------------------------------------
226┆ let guard = tempfile::Builder::new().prefix(&random).tempdir().unwrap();
⋮┆----------------------------------------
227┆ let directory = guard.path().to_str().unwrap().to_owned();
fedimint-testing/src/gateway.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
64┆ self.gateway
65┆ .remove_client_hack(fed.id())
66┆ .await
67┆ .unwrap()
⋮┆----------------------------------------
72┆ self.gateway
73┆ .select_client(federation_id)
74┆ .await
75┆ .unwrap()
⋮┆----------------------------------------
87┆ rpc.connect_federation(ConnectFedPayload { invite_code })
88┆ .await
89┆ .unwrap()
⋮┆----------------------------------------
104┆ let listen: SocketAddr = format!("127.0.0.1:{base_port}").parse().unwrap();
⋮┆----------------------------------------
105┆ let address: SafeUrl = format!("http://{listen}").parse().unwrap();
⋮┆----------------------------------------
106┆ let versioned_api = address.join(V1_API_ENDPOINT).unwrap();
⋮┆----------------------------------------
168┆ let info = lightning.info().await.unwrap();
⋮┆----------------------------------------
174┆ node_pub_key: PublicKey::from_slice(info.pub_key.as_slice()).unwrap(),
fedimint-testing/src/ln/mock.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
72┆ Ok(InvoiceBuilder::new(Currency::Regtest)
73┆ .description("".to_string())
74┆ .payment_hash(sha256::Hash::hash(&[0; 32]))
75┆ .current_timestamp()
76┆ .min_final_cltv_expiry_delta(0)
77┆ .payment_secret(PaymentSecret([0; 32]))
78┆ .amount_milli_satoshis(amount.msats)
79┆ .expiry_time(Duration::from_secs(
80┆ expiry_time.unwrap_or(DEFAULT_EXPIRY_TIME),
81┆ ))
[hid 2 additional lines, adjust with --max-lines-per-finding]
122┆ let signed = invoice.invoice.parse::<SignedRawBolt11Invoice>().unwrap();
⋮┆----------------------------------------
123┆ let invoice = Bolt11Invoice::from_signed(signed).unwrap();
⋮┆----------------------------------------
124┆ *self.amount_sent.lock().unwrap() += invoice.amount_milli_satoshis().unwrap();
⋮┆----------------------------------------
124┆ *self.amount_sent.lock().unwrap() += invoice.amount_milli_satoshis().unwrap();
⋮┆----------------------------------------
128┆ &Description::new(INVALID_INVOICE_DESCRIPTION.into()).unwrap(),
fedimint-testing/src/ln/mod.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
44┆ Ok(InvoiceBuilder::new(Currency::Regtest)
45┆ .payee_pub_key(kp.public_key())
46┆ .description(INVALID_INVOICE_DESCRIPTION.to_string())
47┆ .payment_hash(sha256::Hash::hash(&[0; 32]))
48┆ .current_timestamp()
49┆ .min_final_cltv_expiry_delta(0)
50┆ .payment_secret(PaymentSecret([0; 32]))
51┆ .amount_milli_satoshis(amount.msats)
52┆ .expiry_time(Duration::from_secs(
53┆ expiry_time.unwrap_or(DEFAULT_EXPIRY_TIME),
[hid 3 additional lines, adjust with --max-lines-per-finding]
fedimint-testing/src/ln/real.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
81┆ let invoice_resp = if let Response::Invoice(data) = self
82┆ .rpc_cln
83┆ .lock()
84┆ .await
85┆ .call(Request::Invoice(invoice_req))
86┆ .await
87┆ .unwrap()
⋮┆----------------------------------------
94┆ Ok(Bolt11Invoice::from_str(&invoice_resp.bolt11).unwrap())
⋮┆----------------------------------------
150┆ let rpc_cln = Arc::new(Mutex::new(ClnRpc::new(socket_cln).await.unwrap()));
⋮┆----------------------------------------
171┆ if let Response::Getinfo(get_info) = rpc
172┆ .lock()
173┆ .await
174┆ .call(Request::Getinfo(model::requests::GetinfoRequest {}))
175┆ .await
176┆ .unwrap()
⋮┆----------------------------------------
178┆ secp256k1::PublicKey::from_str(&get_info.id.to_string()).unwrap()
⋮┆----------------------------------------
187┆ let listfunds_resp = if let Response::ListFunds(data) = rpc
188┆ .lock()
189┆ .await
190┆ .call(Request::ListFunds(listfunds_req))
191┆ .await
192┆ .unwrap()
⋮┆----------------------------------------
236┆ let invoice_resp = lnd_rpc
237┆ .lightning()
238┆ .add_invoice(tonic_invoice)
239┆ .await
240┆ .unwrap()
⋮┆----------------------------------------
243┆ Ok(Bolt11Invoice::from_str(&invoice_resp.payment_request).unwrap())
⋮┆----------------------------------------
307┆ let lnd_rpc_addr = env::var("FM_LND_RPC_ADDR").unwrap();
⋮┆----------------------------------------
308┆ let lnd_macaroon = env::var("FM_LND_MACAROON").unwrap();
⋮┆----------------------------------------
309┆ let lnd_tls_cert = env::var("FM_LND_TLS_CERT").unwrap();
⋮┆----------------------------------------
310┆ let lnd_client = connect(
311┆ lnd_rpc_addr.clone(),
312┆ lnd_tls_cert.clone(),
313┆ lnd_macaroon.clone(),
314┆ )
315┆ .await
316┆ .unwrap();
fedimintd/src/fedimintd.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
193┆ TracingSetup::default()
194┆ .tokio_console_bind(opts.tokio_console_bind)
195┆ .with_jaeger(opts.with_telemetry)
196┆ .init()
197┆ .unwrap();
gateway/ln-gateway/src/bin/cln_extension.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
308┆ let a_incoming = pubkey_to_incoming_capacity.get(&a.0).unwrap().msat();
⋮┆----------------------------------------
309┆ let b_incoming = pubkey_to_incoming_capacity.get(&b.0).unwrap().msat();
⋮┆----------------------------------------
572┆ payload.onion.short_channel_id.unwrap().as_str(),
gateway/ln-gateway/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
786┆ (withdraw_amount.unwrap(), fees)
⋮┆----------------------------------------
1062┆ password: password.unwrap(),
⋮┆----------------------------------------
1189┆ password: self.gateway_parameters.password.clone().unwrap(),
gateway/ln-gateway/src/lightning/lnd.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
171┆ let incoming_circuit_key = htlc.incoming_circuit_key.unwrap();
⋮┆----------------------------------------
375┆ let src_node_id = PublicKey::from_str(&chan.remote_pubkey)
376┆ .unwrap()
⋮┆----------------------------------------
813┆ Vec::from_hex("20000000000000000000000002000000024100").unwrap();
gateway/ln-gateway/src/state_machine/pay.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
342┆ consensus_block_count.unwrap(),
⋮┆----------------------------------------
597┆ max_delay: max_delay.unwrap(),
modules/fedimint-dummy-server/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
123┆ let params = self.parse_params(params).unwrap();
⋮┆----------------------------------------
148┆ let params = self.parse_params(params).unwrap();
modules/fedimint-ln-client/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
912┆ let elapsed = now().duration_since(cache.fetched_at).unwrap();
modules/fedimint-ln-server/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
268┆ let params = self.parse_params(params).unwrap();
⋮┆----------------------------------------
305┆ let params = self.parse_params(params).unwrap();
⋮┆----------------------------------------
1250┆ url: "http://localhost:18332".parse().unwrap(),
⋮┆----------------------------------------
1260┆ let client_cfg = ServerModuleInit::get_client_config(
1261┆ &LightningInit,
1262┆ &server_cfg[&PeerId::from(0)].consensus,
1263┆ )
1264┆ .unwrap();
⋮┆----------------------------------------
1286┆ let server = Lightning::new(server_cfg[0].clone(), &mut tg).unwrap();
⋮┆----------------------------------------
1348┆ let server = Lightning::new(server_cfg[0].clone(), &mut tg).unwrap();
⋮┆----------------------------------------
1409┆ let server = Lightning::new(server_cfg[0].clone(), &mut tg).unwrap();
modules/fedimint-mint-client/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
570┆ let mut updates = self
571┆ .subscribe_reissue_external_notes(operation_id)
572┆ .await
573┆ .unwrap()
⋮┆----------------------------------------
584┆ Ok(serde_json::to_value(amount).unwrap())
⋮┆----------------------------------------
1699┆ total_notes += select.unwrap().into_iter_items().count();
⋮┆----------------------------------------
1832┆ "wss://foo.bar".parse().unwrap(),
modules/fedimint-mint-common/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
196┆ bincode::serialize_into(&mut bytes, &self.0).unwrap();
⋮┆----------------------------------------
202┆ bincode::deserialize(bytes).unwrap()
modules/fedimint-mint-server/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
185┆ let params = self.parse_params(params).unwrap();
⋮┆----------------------------------------
244┆ let params = self.parse_params(params).unwrap();
⋮┆----------------------------------------
297┆ let pks: BTreeMap<Amount, PublicKeyShare> = config
298┆ .consensus
299┆ .peer_tbs_pks
300┆ .get(identity)
301┆ .unwrap()
⋮┆----------------------------------------
707┆ &ConfigGenModuleParams::from_typed(MintGenParams {
708┆ local: Default::default(),
709┆ consensus: MintGenParamsConsensus::new(2),
710┆ })
711┆ .unwrap(),
⋮┆----------------------------------------
713┆ let client_cfg = ClientModuleConfig::from_typed(
714┆ 0,
715┆ MintInit::kind(),
716┆ ModuleConsensusVersion::new(0, 0),
717┆ MintInit
718┆ .get_client_config(&mint_cfg[&PeerId::from(0)].consensus)
719┆ .unwrap(),
720┆ )
721┆ .unwrap();
⋮┆----------------------------------------
717┆ MintInit
718┆ .get_client_config(&mint_cfg[&PeerId::from(0)].consensus)
719┆ .unwrap(),
⋮┆----------------------------------------
735┆ peer_tbs_pks: mint_server_cfg2[0]
736┆ .to_typed::<MintConfig>()
737┆ .unwrap()
⋮┆----------------------------------------
744┆ tbs_sks: mint_server_cfg1[0]
745┆ .to_typed::<MintConfig>()
746┆ .unwrap()
⋮┆----------------------------------------
765┆ let sks = *cfg
766┆ .to_typed::<MintConfig>()
767┆ .unwrap()
⋮┆----------------------------------------
790┆ let mint = Mint::new(mint_server_cfg[0].to_typed().unwrap());
modules/fedimint-wallet-client/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
302┆ let address = self
303┆ .cfg
304┆ .peg_in_descriptor
305┆ .tweak(&public_tweak_key, secp256k1::SECP256K1)
306┆ .address(self.cfg.network)
307┆ .unwrap();
modules/fedimint-wallet-common/src/config.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
164┆ Wsh::new_sortedmulti(threshold, pubkeys.values().copied().collect()).unwrap(),
modules/fedimint-wallet-common/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
108┆ self.consensus_encode(&mut bytes).unwrap();
⋮┆----------------------------------------
138┆ self.consensus_encode(&mut bytes).unwrap();
modules/fedimint-wallet-common/src/txoproof.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
221┆ let txoutproof = TxOutProof::consensus_decode(
222┆ &mut Cursor::new(Vec::from_hex(txoutproof_hex).unwrap()),
223┆ &empty_module_registry,
224┆ )
225┆ .unwrap();
⋮┆----------------------------------------
222┆ &mut Cursor::new(Vec::from_hex(txoutproof_hex).unwrap()),
modules/fedimint-wallet-server/src/lib.rs
❯❱ config.ban-unwrap
Using .unwrap() is banned. Consider using .expect() instead.
260┆ let params = self.parse_params(params).unwrap();
⋮┆----------------------------------------
298┆ let params = self.parse_params(params).unwrap();
⋮┆----------------------------------------
873┆ &Message::from_slice(&tx_hash[..]).unwrap(),
⋮┆----------------------------------------
1527┆ .sign_ecdsa(&Message::from_slice(&tx_hash[..]).unwrap(), &tweaked_secret);
⋮┆----------------------------------------
1611┆ Wsh::new_sortedmulti(
1612┆ 3,
1613┆ (0..4)
1614┆ .map(|_| secp.generate_keypair(&mut OsRng))
1615┆ .map(|(_, key)| CompressedPublicKey { key })
1616┆ .collect(),
1617┆ )
1618┆ .unwrap(),
⋮┆----------------------------------------
1634┆ let recipient = Address::from_str("32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf").unwrap();
┌──────────────┐ │ Scan Summary │ └──────────────┘ Some files were skipped or only partially analyzed. Scan was limited to files tracked by git. Scan skipped: 5 files matching .semgrepignore patterns For a full list of skipped files, run semgrep with the --verbose flag.
Ran 10 rules on 218 files: 355 findings.
.unwrap() is used a lot. Are we willing to make all of these changes from .unwrap() -> .expect()?
Can we limit the check to newly introduced code @dpc?
Nope. I'm not aware of good way to run stuff "for new code only". Changes like this require fixing the code fix, then trying to enforce it.
Could we enforce this within certain subdirectories? That'd allow for us to migrate to no-unwrap incrementally, enforcing each subdirectory as we go to prevent regressions. This might be a pain to manage but just want to put the idea out there.
Could we enforce this within certain subdirectories?
Yep, super easy with semgrep