pub enum VulnFixSkip {
NoRecommendedFix,
UnsafeVersion,
UnverifiedTarget,
RequirementAlreadyResolves,
NoOpRewrite,
UnresolvedPlaceholder,
OversizedRequirement,
}Expand description
Why plan_vulnerability_fix could not produce a PlannedUpdate for a dependency
already known to be crate::osv::ScanOutcome::Vulnerable.
Mirrors UnplannableReason’s role for the default-mode planner (spec 068’s typed-skip
convention) — before this type existed, every one of these six causes collapsed into a
single None, forcing deps-cli update --security-only’s
classify_vulnerable_dependency to re-run resolve_recommended_fix’s and
fix_target_is_verified’s own chain itself just to tell NoVerifiedFix apart from
RequiresLockfileUpdate (#1350).
Variants§
NoRecommendedFix
No advisory on dv has a claimable fix — crate::osv::DependencyVulnerabilities::recommended_fix
returned None.
UnsafeVersion
The recommended fix’s version, converted to this ecosystem’s native namespace, failed
is_safe_version_string.
UnverifiedTarget
The internal fix-target verification gate could not confirm the fix target F against OSV — F was never live-checked, or the live check found F still vulnerable to an advisory this recommendation claims to resolve.
RequirementAlreadyResolves
The dependency’s declared requirement, left unedited, already resolves forward to the fix target under this ecosystem’s own resolution rules — nothing to rewrite (#1344).
NoOpRewrite
The formatter’s rewrite would be textually identical to the declared literal — no edit to make.
UnresolvedPlaceholder
current is an unexpanded placeholder/interpolation
(crate::lsp_helpers::RequirementResolution::bounded_requirement_is_placeholder) — there is
no concrete version text to replace, so the requirement is never rewritten regardless
of what any other resolution predicate or the formatter’s own rewrite logic would do
with it (#1370).
OversizedRequirement
current, the dependency’s requirement, or its version literal exceeds
crate::lsp_helpers::MAX_REQUIREMENT_LEN — unmodellable text is never rewritten,
fail-closed and distinct from a placeholder so a caller can report the size cause.
Trait Implementations§
Source§impl Clone for VulnFixSkip
impl Clone for VulnFixSkip
impl Copy for VulnFixSkip
Source§impl Debug for VulnFixSkip
impl Debug for VulnFixSkip
impl Eq for VulnFixSkip
Source§impl PartialEq for VulnFixSkip
impl PartialEq for VulnFixSkip
impl StructuralPartialEq for VulnFixSkip
Auto Trait Implementations§
impl Freeze for VulnFixSkip
impl RefUnwindSafe for VulnFixSkip
impl Send for VulnFixSkip
impl Sync for VulnFixSkip
impl Unpin for VulnFixSkip
impl UnsafeUnpin for VulnFixSkip
impl UnwindSafe for VulnFixSkip
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.