solidhunter_lib/rules/security/
mod.rs

1use crate::rules::types::{RuleEntry, RulesMap};
2use std::collections::HashMap;
3
4#[macro_use]
5pub(crate) mod no_inline_assembly;
6pub(crate) mod avoid_tx_origin;
7pub(crate) mod func_visibility;
8pub(crate) mod not_rely_on_time;
9pub(crate) mod state_visibility;
10
11// List all rules
12use crate::rules::security::avoid_tx_origin::AvoidTxOrigin;
13use crate::rules::security::func_visibility::FuncVisibility;
14use crate::rules::security::no_inline_assembly::NoInlineAssembly;
15use crate::rules::security::not_rely_on_time::NotRelyOnTime;
16use crate::rules::security::state_visibility::StateVisibility;
17
18use crate::rules::RuleBuilder;
19
20pub fn create_default_rules() -> Vec<RuleEntry> {
21    vec![
22        NoInlineAssembly::create_default(),
23        StateVisibility::create_default(),
24        NotRelyOnTime::create_default(),
25        FuncVisibility::create_default(),
26        AvoidTxOrigin::create_default(),
27    ]
28}
29
30pub fn create_rules() -> RulesMap {
31    let mut rules: HashMap<String, RuleBuilder> = HashMap::new();
32
33    rules.insert(
34        no_inline_assembly::RULE_ID.to_string(),
35        NoInlineAssembly::create,
36    );
37    rules.insert(func_visibility::RULE_ID.to_string(), FuncVisibility::create);
38    rules.insert(
39        state_visibility::RULE_ID.to_string(),
40        StateVisibility::create,
41    );
42    rules.insert(avoid_tx_origin::RULE_ID.to_string(), AvoidTxOrigin::create);
43    rules.insert(not_rely_on_time::RULE_ID.to_string(), NotRelyOnTime::create);
44
45    rules
46}