Aller au contenu
Solutions

Des vérifications qui bloquent la fusion, en JavaScript, C# et Python.

Chaque langage apporte son propre linter, sa propre commande d'audit et sa propre configuration, et aucun ne s'entend sur ce à quoi ressemble un constat ni sur ceux qui bloquent une fusion. Le résultat est un mur d'avertissements que personne ne possède et une barrière qui veut dire quelque chose de différent dans chaque dépôt.

Pourquoi cela se répète

Des constats que personne ne peut comparer ne bloquent rien.

Un audit de vulnérabilités qui a besoin des dépendances restaurées s'exécute tard et lentement, ou pas du tout sur la branche où il compterait. Un fichier de verrouillage qui a dérivé des empreintes du registre le passe quand même, parce que rien ne compare les deux.

Chaque outil a sa propre échelle de sévérité, son propre fichier d'exceptions et ses propres codes de sortie. Une équipe qui livre du JavaScript, du C# et du Python entretient trois barrières impossibles à lire côte à côte, et la règle assouplie dans l'une reste stricte dans l'autre.

Les chiffres de qualité du code existent et sont ignorés, parce que rien ne les transforme en diagnostic assorti d'un seuil capable de faire échouer une tâche.

Comment nous le résolvons

Un vérificateur par tâche, avec une configuration et un format de constat partagés.

Les outils de vérification Dependably sont de petits vérificateurs en ligne de commande, sans build par défaut, un par tâche. Chacun lit la même configuration .dependably et émet le même format de constat JSON.

Vérifier les dépendances sans les installer

npm-check valide, migre et répare package-lock.json, vérifie les empreintes verrouillées par rapport à celles du registre, et analyse les versions verrouillées pour les vulnérabilités, les dépréciations et les infractions de licence, sans node_modules et sans sous-processus npm audit. nucheck audite les dépendances NuGet à partir de packages.lock.json, de packages.config ou du fichier de projet par rapport à la GitHub Advisory Database ou à OSV, en comparant les versions à quatre composantes et les intervalles comme NuGet le fait, et signale les sources de paquets non fiables et les versions non épinglées.

npm-check · nucheck

Linter sans build

cslint fait respecter chaque clé de votre .editorconfig, exécute des vérifications de sécurité syntaxiques qui n'exigent aucun build, charge le projet par Roslyn pour une analyse plus poussée sur demande, et inspecte l'hygiène du dépôt, comme les tests ignorés en silence. pycheck trouve les importations inutilisées et valide la configuration d'empaquetage commise.

cslint · pycheck

Mesurer et diagnostiquer

codemetrics calcule la complexité cyclomatique et cognitive, le volume de Halstead, l'indice de maintenabilité, le couplage et la cohésion pour le C# en une commande, et les transforme en diagnostics tels qu'une classe omnipotente ou un point chaud non maintenable, chacun avec une sévérité sur laquelle bloquer.

codemetrics

Définir les règles et les exceptions à la racine du dépôt

Chaque outil découvre un seul fichier .dependably à la racine du dépôt, lit une section commune et la sienne, applique la même grammaire de règles et d'exceptions, et émet ses constats dans une seule enveloppe JSON.

.dependably · --format json
Ce que vous obtenez

Une barrière lisible d'un dépôt à l'autre.

Les constats de chaque langage arrivent sous la même forme, avec la même échelle de sévérité et les mêmes exceptions, de sorte que ce qui bloque une fusion est une décision prise une fois.

  • Les vérifications de dépendances s'exécutent sur la branche, à partir du fichier de verrouillage, avant toute installation.
  • Un package-lock.json qui a dérivé ou été altéré est attrapé en comparant ses empreintes à celles du registre.
  • Les métriques de qualité viennent avec un diagnostic et un seuil, donc elles peuvent faire échouer une tâche.
  • Un seul fichier de configuration par dépôt, partagé par les vérificateurs qui s'y exécutent.
Constat
  • outil npm-check · vuln
  • paquet example-widget@2.4.1
  • sévérité élevée · barrière : échec
  • config .dependably · common
Où cela s'exécute

Open source sur GitHub, avec les outils .NET sur NuGet.

nucheck, cslint et codemetrics sont des outils .NET sur NuGet. npm-check et pycheck se construisent à partir des sources. Tous sont open source sous licence Apache-2.0, sur GitHub sous l'organisation Dependably.