Skip to main content

frs/cmds/rsl/output/
format.rs

1use super::ViolationOutputFormat;
2use crate::cmds::rsl::rules::common::Location;
3
4mod aliased_import;
5mod misordered_fn;
6mod misordered_item_group;
7mod misordered_visibility;
8mod nonadjacent_impl;
9mod overqualified_call;
10mod qualified_item;
11mod relative_path;
12mod unqualified_call;
13
14pub trait FormattedRuleViolation: Send + Sync + 'static {
15    fn format(&self, output_format: ViolationOutputFormat) -> String;
16}
17
18pub(super) fn format_violation(
19    location: &Location,
20    code: &str,
21    suggested_fix: &str,
22    output_format: ViolationOutputFormat,
23) -> String {
24    let location = format_location(location);
25    match output_format {
26        ViolationOutputFormat::Compact => format!("{location},{suggested_fix}"),
27        ViolationOutputFormat::Debug => format!("{location},{code},{suggested_fix}"),
28    }
29}
30
31fn format_location(location: &Location) -> String {
32    format!("{}:{}:{}", location.file.display(), location.line, location.column)
33}