Offline dependency vulnerability scanner for MoonBit projects.
moon add shen-E/moonvigil@0.2.0moon install shen-E/moonvigil/cmd/moonvigil@0.2.0
moonvigil --version
moonvigil scan ./your-project --db ./advisories.jsonpython scripts/acceptance.pymoon check --target native
moon test --target native
moon run cmd/moonvigil --target native -- db validate advisories.json
moon run cmd/moonvigil --target native -- baseline validate fixtures/baseline/valid-v2.json
moon run cmd/moonvigil --target native -- scan fixtures/affected --db advisories.json
moon run cmd/moonvigil --target native -- scan fixtures/affected --db advisories.json --format sarif --output report.sarif
moon run cmd/moonvigil --target native -- sbom fixtures/affected --output bom.json
moon run cmd/moonvigil --target native -- scan fixtures/real/moonbitlang-parser --db fixtures/empty-database.json --format json
moon run cmd/moonvigil --target native -- scan fixtures/affected --policy fixtures/policy/exact-suppression.json --format json --output report.json
moon run cmd/moonvigil --target native -- scan fixtures/affected --fail-on critical
moon run cmd/moonvigil --target native -- scan fixtures/scopes --db fixtures/scopes/advisories.json --fail-on-scope runtime,test
moon run cmd/moonvigil --target native -- scan fixtures/affected --baseline fixtures/baseline/empty.json
moon run cmd/moonvigil --target native -- scan fixtures/affected --baseline-output baseline.jsonjust check
just test
just buildpub(all) suberror DatabaseValidationError {
UnsupportedSchemaVersion(String)
InvalidDatabaseField(field~ : String, reason~ : String)
InvalidAdvisory(index~ : Int, id~ : String, field~ : String, reason~ : String)
MultipleInvalidAdvisories(Array[DatabaseIssue])
} derive(Eq, Debug)pub struct BaselineSummary {
snapshot_entries : Int
new_findings : Int
existing_findings : Int
updated_findings : Int
legacy_snapshot : Bool
no_longer_detected : Array[BaselineEntry]
} derive(Eq, ToJson, Debug)fn Dependency::Dependency(name~ : String, version~ : String, source~ : String, aliases? : Array[String], scopes? : Array[DependencyScope]) -> Dependencypub struct Finding {
dependency : Dependency
advisory : Advisory
status : FindingStatus
suppression : PolicySuppression?
baseline_status : BaselineFindingStatus?
} derive(Eq, ToJson, Debug)pub struct Inventory {
dependencies : Array[Dependency]
conflicts : Array[DependencyConflict]
} derive(Eq, ToJson, Debug)pub struct PackageImport {
package_name : String
alias_name : String
scope : DependencyScope
source : String
} derive(Eq, ToJson, Debug)fn PackageImport::PackageImport(package_name~ : String, alias_name~ : String, scope~ : DependencyScope, source~ : String) -> PackageImportpub struct ScanReport {
schema_version : String
dependencies : Array[Dependency]
findings : Array[Finding]
uncomparable : Array[Finding]
conflicts : Array[DependencyConflict]
policy : PolicySummary?
baseline : BaselineSummary?
} derive(Eq, ToJson, Debug)fn apply_package_imports(dependencies : Array[Dependency], imports : Array[PackageImport]) -> Array[Dependency]fn evaluate_policy(report : ScanReport, policy : ScanPolicy, fail_on_override : String?, today~ : String) -> PolicyEvaluation raisefn evaluate_policy_with_scopes(report : ScanReport, policy : ScanPolicy, fail_on_override : String?, fail_on_scopes_override : Array[String]?, today~ : String) -> PolicyEvaluation raiseInstall
Download zipOffline dependency vulnerability scanner for MoonBit projects.