Skip to main content

whitaker_common/
lib.rs

1//! Shared lint infrastructure providing attribute helpers, context tracking,
2//! path, expression, span, diagnostic, cohesion analysis, and brain
3//! type/trait metric collection utilities for Whitaker lints.
4
5pub mod attributes;
6pub mod brain_trait_metrics;
7pub mod brain_type_metrics;
8pub mod complexity_signal;
9pub mod context;
10pub mod decomposition_advice;
11pub mod diagnostics;
12pub mod expr;
13pub mod i18n;
14pub mod lcom4;
15pub mod path;
16pub mod rstest;
17pub mod span;
18pub mod test_support;
19
20pub use attributes::{
21    Attribute, AttributeKind, AttributePath, PARSED_ATTRIBUTE_PLACEHOLDER, has_test_like_attribute,
22    has_test_like_attribute_with, outer_attributes, split_doc_attributes,
23};
24pub use brain_trait_metrics::evaluation::{
25    BrainTraitDiagnostic, BrainTraitDisposition, BrainTraitThresholds, BrainTraitThresholdsBuilder,
26    evaluate_brain_trait,
27};
28pub use brain_trait_metrics::{
29    TraitItemKind, TraitItemMetrics, TraitMetrics, TraitMetricsBuilder, default_method_cc_sum,
30    default_method_count, required_method_count, trait_item_count,
31};
32pub use brain_type_metrics::evaluation::{
33    BrainTypeDiagnostic, BrainTypeDisposition, BrainTypeThresholds, BrainTypeThresholdsBuilder,
34    evaluate_brain_type, format_help, format_note, format_primary_message,
35};
36pub use brain_type_metrics::{
37    CognitiveComplexityBuilder, ForeignReferenceSet, MethodMetrics, TypeMetrics,
38    TypeMetricsBuilder, brain_methods, foreign_reach_count, weighted_methods_count,
39};
40pub use context::{
41    ContextEntry, ContextKind, in_test_like_context, in_test_like_context_with, is_in_main_fn,
42    is_test_fn, is_test_fn_with,
43};
44pub use decomposition_advice::{
45    DecompositionContext, DecompositionSuggestion, MethodProfile, MethodProfileBuilder,
46    SubjectKind, SuggestedExtractionKind, format_diagnostic_note, suggest_decomposition,
47};
48pub use diagnostics::{Applicability, Diagnostic, DiagnosticBuilder, Suggestion, span_lint};
49pub use expr::{Expr, def_id_of_expr_callee, is_path_to, recv_is_option_or_result};
50pub use i18n::{
51    Arguments, FALLBACK_LOCALE, I18nError, LocaleSelection, LocaleSource, Localizer,
52    MessageResolution, available_locales, branch_phrase, get_localizer_for_lint, noop_reporter,
53    normalise_locale, resolve_localizer, safe_resolve_message_set, supports_locale,
54};
55pub use lcom4::{MethodInfo, MethodInfoBuilder, cohesion_components, collect_method_infos};
56pub use path::SimplePath;
57pub use rstest::{
58    ExpansionTrace, ParameterBinding, RstestDetectionOptions, RstestParameter, RstestParameterKind,
59    SpanRecoveryFrame, UserEditableSpan, classify_rstest_parameter, fixture_local_names,
60    is_rstest_fixture, is_rstest_fixture_with, is_rstest_test, is_rstest_test_with,
61    recover_user_editable_span,
62};
63pub use span::{SourceLocation, SourceSpan, SpanError, span_line_count, span_to_lines};