feat(notfiles): hexagonal architecture refactor with adapters, integration tests, and notsecrets cleanup
Some checks failed
Public Repo Readiness / Check Public Repo Readiness (push) Has been cancelled
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
This commit is contained in:
99
rustqual.toml
Normal file
99
rustqual.toml
Normal file
@@ -0,0 +1,99 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user