Pure MoonBit SARIF 2.1.0 report builder, validator and merger
moon add Derk2006/sarifkit@0.1.1Derk2006/sarifkittest {
let log = @sarifkit.quick_log(
"moonlint",
"MB001",
"debug print should be removed",
"src/main.mbt",
12,
column=3,
)
inspect(log.summary(), content="runs=1 rules=1 results=1 errors=0 warnings=1 notes=0 artifacts=1")
}moon check
moon build
moon test
moon doc
moon run cmd/main
moon packagepub struct Artifact {
location : ArtifactLocation
length : Int?
mime_type : String?
roles : Array[String]
} derive(Eq, ToJson, Debug)fn ArtifactLocation::ArtifactLocation(uri : StringView, uri_base_id? : String, index? : Int) -> ArtifactLocationfn GithubAnnotation::GithubAnnotation(path : StringView, start_line : Int, end_line : Int, annotation_level : StringView, message : StringView, title? : String) -> GithubAnnotationpub struct PhysicalLocation {
artifact_location : ArtifactLocation
region : Region?
} derive(Eq, ToJson, Debug)fn PhysicalLocation::PhysicalLocation(artifact_location : ArtifactLocation, region? : Region) -> PhysicalLocationpub struct SarifBuilder {
tool_name : String
tool_version : String?
information_uri : String?
rules : Array[SarifRule]
results : Array[SarifResult]
artifacts : Array[Artifact]
invocations : Array[SarifInvocation]
automation_id : String?
} derive(Debug)fn SarifBuilder::SarifBuilder(tool_name : StringView, tool_version? : String, information_uri? : String) -> SarifBuilderfn SarifBuilder::add_artifact(self : SarifBuilder, uri : StringView, length? : Int, mime_type? : String, roles? : ArrayView[String]) -> Intfn SarifBuilder::add_fingerprinted_result(self : SarifBuilder, rule_id : StringView, message : StringView, uri : StringView, line : Int, column? : Int, level? : String) -> Intfn SarifBuilder::add_invocation(self : SarifBuilder, command_line? : String, working_directory? : String, execution_successful? : Bool) -> Unitfn SarifBuilder::add_result(self : SarifBuilder, rule_id : StringView, message : StringView, level? : String, uri? : String, line? : Int, column? : Int) -> Intfn SarifBuilder::add_rule(self : SarifBuilder, id : StringView, name? : String, short_description? : String, default_level? : String, tags? : ArrayView[String]) -> Intfn SarifDiagnostic::SarifDiagnostic(severity : StringView, code : StringView, path : StringView, message : StringView) -> SarifDiagnosticfn SarifFieldDescriptor::SarifFieldDescriptor(object_name : StringView, field_name : StringView, required? : Bool, value_kind? : String, note? : String) -> SarifFieldDescriptorfn SarifInvocation::SarifInvocation(command_line? : String, working_directory? : String, execution_successful? : Bool) -> SarifInvocationpub struct SarifLocation {
physical_location : PhysicalLocation
message : SarifMessage?
logical_name : String?
} derive(Eq, ToJson, Debug)fn SarifLocation::SarifLocation(physical_location : PhysicalLocation, message? : SarifMessage, logical_name? : String) -> SarifLocationfn SarifLocation::from_path(uri : StringView, line : Int, column? : Int, message? : String) -> SarifLocationfn SarifLog::validate_with_policy(self : SarifLog, policy : SarifValidationPolicy) -> Array[SarifDiagnostic]pub struct SarifResult {
rule_id : String
level : String
kind : String
message : SarifMessage
locations : Array[SarifLocation]
fingerprints : Array[Fingerprint]
properties : Array[SarifProperty]
baseline_state : String?
} derive(Eq, ToJson, Debug)fn SarifResult::SarifResult(rule_id : StringView, message : StringView, level? : String, kind? : String, locations? : ArrayView[SarifLocation], fingerprints? : ArrayView[Fingerprint], properties? : ArrayView[SarifProperty], baseline_state? : String) -> SarifResultfn SarifResult::with_fingerprint(self : SarifResult, key : StringView, value : StringView) -> SarifResultpub struct SarifRule {
id : String
name : String?
short_description : SarifMessage?
full_description : SarifMessage?
default_level : String
help_uri : String?
tags : Array[String]
} derive(Eq, ToJson, Debug)pub struct SarifRun {
tool : ToolDriver
results : Array[SarifResult]
artifacts : Array[Artifact]
invocations : Array[SarifInvocation]
automation_id : String?
} derive(Eq, ToJson, Debug)fn SarifRun::SarifRun(tool : ToolDriver, results? : ArrayView[SarifResult], artifacts? : ArrayView[Artifact], invocations? : ArrayView[SarifInvocation], automation_id? : String) -> SarifRunfn SarifRun::validate_with_policy(self : SarifRun, policy : SarifValidationPolicy) -> Array[SarifDiagnostic]fn SarifValidationPolicy::SarifValidationPolicy(require_results_have_locations? : Bool, require_declared_rules? : Bool, require_artifacts_for_locations? : Bool, min_level? : String, max_results_per_run? : Int) -> SarifValidationPolicyfn ToolDriver::ToolDriver(name : StringView, version? : String, information_uri? : String, rules? : ArrayView[SarifRule]) -> ToolDriverfn mark_baseline(current : ArrayView[SarifResult], previous : ArrayView[SarifResult]) -> Array[SarifResult]fn quick_log(tool_name : StringView, rule_id : StringView, message : StringView, uri : StringView, line : Int, column? : Int, level? : String) -> SarifLogfn stable_result_key(rule_id : StringView, message : StringView, uri : StringView, line : Int, column : Int) -> StringPure MoonBit SARIF 2.1.0 report builder, validator and merger