Render a patch's vulnerability labels through one ui helper: scan, get and list each write the CVE-else-advisory rule, and their order, dedup and severity case drifted

Ouverte
#1,880 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
58/100
Type d'issue
Refactorisation
Clarté
Clairement spécifiée
Activité
Active
Stack technique
rust
Domaine
cli

Piste de recherche

Read ui/mod.rs and the referenced helpers in scan/render.rs, get.rs, and list.rs to trace the current label, ordering, deduplication, and severity behavior. Update the render byte tests in scan/render.rs and tests/cli/list_render.rs, and add a unit test for a CVE shared by two advisories. Done means all three commands use the shared UI helpers and the acceptance criteria pass.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

agent:triaged arch-audit priority:p3 refactor

[agent] Filed by the scheduled architecture audit (audit-cli-tests). Register: register comment.

Kind: refactor. Register ID: T28 (its JSON sibling is T02, #1836; its severity sibling is T10).

Problem

The human label of a vulnerability follows one rule: its CVE ids sorted, otherwise the advisory id. That rule is written four times:

  • scan: scan/render.rs vuln_label L385-L393,`` sorted worst-severity-first by sorted_vulns L371-L381;
  • get: get.rs L372-L382, the same body;
  • get again: vuln_labels L222-L236, which flattens and dedups;
  • list: list.rs L284-L288, which prints the advisory id with its CVEs in parentheses, unsorted, and sanitized.

The copies have drifted (verified by reading):

  • Order. scan orders the Fixes: list by severity; get orders it by label.
  • Dedup. scan doesn't dedup, so a CVE shared by two advisories prints twice; get dedups.
  • Severity label. get prints it uppercased (get.rs L289). scan's preview prints the raw API label through ui::severity, which passes unknown labels through unchanged. scan's policy line prints core's canonical severity_name, so "medium" appears where the API said "moderate" (policy.rs L752).
  • Sanitizing. Only list filters the API text (T23).

Proposed change

  • Add ui::vuln_labels(&HashMap<String, VulnerabilityResponse>) -> Vec<String>: CVEs else the id, deduped, in one documented order.
  • Add one ui::severity_label(&str) that uses core's severity_name.
  • scan, get and list call these helpers. Delete render::vuln_label/sorted_vulns, get's two copies and list's inline format.

Size

4 files (ui/mod.rs, scan/render.rs, get.rs, list.rs). Roughly −50 / +25.

Acceptance criteria

  • The render byte tests in scan/render.rs and tests/cli/list_render.rs are updated deliberately, once, to the chosen order and case.
  • A new unit test shows a CVE shared by two advisories printed once.
  • No CLI file keeps its own CVE-else-id closure.
Langage dominant
Rust
Étoiles
8
Forks
2
Merge moyen
18 h 47 min
PR mergées (30 j)
637

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de SocketDev/socket-patch

Toutes les issues de SocketDev/socket-patch

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.