pub struct Config {Show 13 fields
pub min_nodes: usize,
pub similarity_threshold: Threshold,
pub exclude: Vec<String>,
pub max_exact_duplicates: Option<usize>,
pub max_near_duplicates: Option<usize>,
pub max_exact_percent: Option<Threshold>,
pub max_near_percent: Option<Threshold>,
pub min_lines: usize,
pub exclude_tests: bool,
pub sub_function: bool,
pub min_sub_nodes: usize,
pub baseline: Option<PathBuf>,
pub root: PathBuf,
}Expand description
Configuration for cargo-dry4rust analysis.
The fields are public and settable, and the ones with a range carry it in
their type: a Threshold cannot be built out of range, so a Config
cannot hold a similarity threshold of five however it was assembled. The
counts are usize and have no upper bound to state – a floor of zero
nodes admits everything, which is a choice rather than a mistake.
Fields§
§min_nodes: usizeMinimum number of AST nodes for a code unit to be analyzed.
similarity_threshold: ThresholdSimilarity threshold for near-duplicates.
exclude: Vec<String>Path patterns to exclude from scanning.
max_exact_duplicates: Option<usize>Exit code threshold: fail if exact duplicate count exceeds this.
max_near_duplicates: Option<usize>Exit code threshold: fail if near duplicate count exceeds this.
max_exact_percent: Option<Threshold>Exit code threshold: fail if exact duplicate percentage exceeds this.
max_near_percent: Option<Threshold>Exit code threshold: fail if near duplicate percentage exceeds this.
min_lines: usizeMinimum number of source lines for a code unit to be analyzed.
exclude_tests: boolExclude test code (#test functions and #[cfg(test)] modules).
sub_function: boolEnable sub-function duplicate detection.
min_sub_nodes: usizeMinimum number of AST nodes for a sub-function unit to be analyzed.
baseline: Option<PathBuf>Baseline of inherited duplication to judge against, if any.
root: PathBufRoot path to analyze.
Implementations§
Source§impl Config
impl Config
Sourcepub const fn analysis_config(&self) -> AnalysisConfig
pub const fn analysis_config(&self) -> AnalysisConfig
Extract the parsing-relevant subset of the configuration.
Sourcepub fn load(root: &Path) -> Result<Self>
pub fn load(root: &Path) -> Result<Self>
Load config with the following precedence:
- CLI overrides (applied by the caller after this method)
- dry4rust.toml in the project root
[package.metadata.dry4rust]in Cargo.toml- Defaults
A file that cannot be read or parsed is passed over, because a project with no configuration is the ordinary case and looks the same. A file that parses and then states an impossible value is not passed over: the caller asked for something the tool cannot do, and saying so is the only way they find out.
§Errors
Returns crate::error::Error::InvalidConfig naming the first field
whose value falls outside the range it allows.