use super::*;
pub const CODE_QUALITY_REPORT_TYPE: &str = "issue";
#[derive(Clone, Debug, Serialize)]
pub struct CodeQualityReport(Vec<CodeQualityReportIssue>);
#[derive(Clone, Debug, Serialize)]
pub struct CodeQualityReportIssue {
pub r#type: &'static str,
pub check_name: String,
pub description: String,
pub content: Option<String>,
pub categories: Vec<CodeQualityReportIssueCategory>,
pub location: CodeQualityReportLocation,
pub other_locations: Option<Vec<CodeQualityReportLocation>>,
pub remediation_points: Option<usize>,
pub severity: Option<CodeQualityReportIssueSeverity>,
pub fingerprint: Option<String>
}
#[derive(Clone, Debug, Serialize)]
pub enum CodeQualityReportIssueCategory {
#[serde(rename = "Bug Risk")]
BugRisk,
Clarity,
Compatibility,
Complexity,
Duplication,
Performance,
Security,
Style
}
#[derive(Clone, Debug, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum CodeQualityReportIssueSeverity {
Info,
Minor,
Major,
Critical,
Blocker
}
#[derive(Clone, Debug, Serialize)]
pub struct CodeQualityReportLocation {
pub path: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub lines: Option<CodeQualityReportLines>,
#[serde(skip_serializing_if = "Option::is_none")]
pub positions: Option<CodeQualityReportPositions>
}
#[derive(Clone, Debug, Serialize)]
pub struct CodeQualityReportLines {
pub begin: usize,
pub end: usize
}
#[derive(Clone, Debug, Serialize)]
pub struct CodeQualityReportPositions {
pub begin: CodeQualityReportPosition,
pub end: CodeQualityReportPosition
}
#[derive(Clone, Debug, Serialize)]
#[serde(untagged)]
pub enum CodeQualityReportPosition {
Coordinates { line: usize, column: usize },
Offset { offset: usize }
}