Some checks failed
Public Repo Readiness / Check Public Repo Readiness (push) Has been cancelled
- Extract FileStore port and InMemoryFileStore/FileStoreImpl/Reporter adapters - Add Reporter trait to notcore with TerminalReporter and JsonReporter - Refactor linker, package, status modules to use FileStore port - Add integration test suite with dotfiles fixtures - Add cross-crate integration tests - Remove ssh_rsa identity/recipient (unsupported) - Add rustqual.toml, .sccignore, notfiles.toml config files - Update CLAUDE.md, README.md, AGENTS.md with current architecture
100 lines
3.3 KiB
TOML
100 lines
3.3 KiB
TOML
# rustqual.toml — Tailored configuration for your project
|
|
# Generated from analysis of 87 file(s), 488 function(s).
|
|
#
|
|
# Thresholds are set to your current maximums + 20% headroom.
|
|
# Tighten them over time as you improve code quality.
|
|
|
|
# ── Function Classification ──────────────────────────────────────────────
|
|
|
|
ignore_functions = ["main", "test_*"]
|
|
exclude_files = [
|
|
"crates/notgraph/tests/*",
|
|
"scripts/preflight.rs",
|
|
]
|
|
strict_closures = false
|
|
strict_iterator_chains = false
|
|
allow_recursion = false
|
|
strict_error_propagation = false
|
|
|
|
# ── Suppression Health ───────────────────────────────────────────────────
|
|
|
|
max_suppression_ratio = 0.05
|
|
fail_on_warnings = false
|
|
|
|
# ── Complexity Analysis ──────────────────────────────────────────────────
|
|
|
|
[complexity]
|
|
enabled = true
|
|
max_cognitive = 72 # current max: 60
|
|
max_cyclomatic = 30 # current max: 25
|
|
max_nesting_depth = 9 # current max: 7
|
|
max_function_lines = 286 # current max: 238
|
|
include_nesting_penalty = true
|
|
detect_magic_numbers = true
|
|
detect_unsafe = true
|
|
detect_error_handling = true
|
|
allowed_magic_numbers = ["0", "1", "-1", "2"]
|
|
|
|
# ── DRY / Duplicate Detection ───────────────────────────────────────────
|
|
|
|
[duplicates]
|
|
enabled = true
|
|
similarity_threshold = 0.85
|
|
min_tokens = 30
|
|
min_lines = 5
|
|
min_statements = 3
|
|
ignore_tests = true
|
|
ignore_trait_impls = true
|
|
detect_dead_code = false
|
|
detect_wildcard_imports = true
|
|
detect_repeated_matches = true
|
|
|
|
# ── Boilerplate Detection ───────────────────────────────────────────────
|
|
|
|
[boilerplate]
|
|
enabled = true
|
|
suggest_crates = true
|
|
|
|
# ── SRP (Single Responsibility) ─────────────────────────────────────────
|
|
|
|
[srp]
|
|
enabled = true
|
|
smell_threshold = 0.6
|
|
max_fields = 12
|
|
max_methods = 20
|
|
max_fan_out = 10
|
|
lcom4_threshold = 2
|
|
weights = [0.4, 0.25, 0.15, 0.2]
|
|
file_length_baseline = 300
|
|
file_length_ceiling = 800
|
|
max_independent_clusters = 2
|
|
min_cluster_statements = 5
|
|
max_parameters = 5
|
|
|
|
# ── Coupling Analysis ───────────────────────────────────────────────────
|
|
|
|
[coupling]
|
|
enabled = true
|
|
max_instability = 0.8
|
|
max_fan_in = 15
|
|
max_fan_out = 12
|
|
check_sdp = true
|
|
|
|
# ── Test Quality Analysis ──────────────────────────────────────────────
|
|
|
|
[test_quality]
|
|
enabled = true
|
|
# coverage_file = "lcov.info"
|
|
|
|
# ── Quality Score Weights ──────────────────────────────────────────────
|
|
# Must sum to approximately 1.0.
|
|
|
|
[weights]
|
|
iosp = 0.22
|
|
complexity = 0.18
|
|
dry = 0.13
|
|
srp = 0.18
|
|
coupling = 0.09
|
|
test_quality = 0.10
|
|
architecture = 0.10
|