Détectez les raccourcis pris par les agents avant que le travail ne vous parvienne.

Un test sauté pour obtenir un résultat positif, une erreur ignorée, un stub laissé en place, une vérification de type désactivée. Anti-slop examine chaque modification apportée par un agent pour ces cas et la renvoie à l'agent développeur avec chaque constatation.

TâcheAppliquer les codes de coupon lors du paiement.En cours d'examen
Portes de qualité
Développeur portail de qualitéTenter 2Validé
Anti-slop
Aucune nouvelle dette techniqueValidé
0 bloquent l'intégration · 0 nouveautés introduites · 1 éléments modifiés · 14 existants
Développeur portail de qualitéTenter 1En attente d'approbation · envoyé à Développeur
Anti-slop
Aucune nouvelle dette techniqueNécessite des réparations
2 bloquent l'intégration · 2 nouveautés introduites · 1 éléments modifiés · 14 existants
  • Test ignorésrc/checkout/coupon.test.ts:88it.skip('rejects an expired coupon', …)
  • Erreur absorbéesrc/checkout/apply-coupon.ts:41} catch {}
Problèmes détectés
  • CorrigéTest ignoréAnti-slop
  • CorrigéErreur absorbéeAnti-slop

La vue des tâches est une reconstitution du portail Coroid. La tâche, les fichiers et les constatations qu'elle contient sont illustratifs.

Règles
106
Familles
13
Règles bloquantes par défaut
44
Détections existantes bloquant une modification
0

Ce qu'il recherche.

Les règles sont regroupées en familles. Chaque règle bloque, conseille ou ne fait qu'enregistrer des informations ; un propriétaire peut modifier ce comportement pour l'organisation ou pour un projet spécifique.

Tests
Tests ciblés ou ignorés, tests supprimés, assertions retirées ou affaiblies, tests incapables d'échouer et tentatives de réexécution masquant un test instable.
  • .only
  • .skip
  • expect(true).toBe(true)
Suppressions
Désactivations de linters, erreurs de type ignorées, conversions en « any » et code exclu du suivi de couverture.
  • @ts-ignore
  • as any
  • eslint-disable
Compilation et CI
Étapes de test supprimées ou autorisées à échouer, seuils de couverture abaissés, exécutions de tests réussissant sans aucun test, hooks de validation de commit ignorés et sorties de compilation intégrées au dépôt.
  • continue-on-error: true
  • --passWithNoTests
Preuves de test
Un test exécuté sans aucune instruction, moins de tests que lors de la dernière exécution réussie, une exécution partielle présentée comme complète, et des résultats mis en cache présentés comme une nouvelle exécution.
  • Tests: 0 total
  • --onlyChanged
Code de production
Implémentations temporaires, code de débogage, notes telles que « dans une implémentation réelle », instructions destinées à un humain, données fictives, et code de production qui importe du code de test.
  • throw new Error('Not implemented')
  • debugger;
Gestion des erreurs
Erreurs ignorées ou masquées derrière une valeur par défaut, vérifications de permissions permettant l'accès même en cas d'échec, et tentatives de réessai sans limite.
  • except: pass
  • .catch(() => {})
Sécurité
Secrets codés en dur, désactivation de la vérification TLS, suppression des mécanismes d'authentification, politique CORS avec caractères génériques autorisant les identifiants et requêtes SQL construites à partir de chaînes de caractères.
  • rejectUnauthorized: false
  • verify=False
Architecture
Nouveaux cycles d'importation, imports à travers les limites définies, blocs dupliqués, code laissé inutilisé par le changement, et nouvelles copies de modèles obsolètes.
Dépendances
Un changement de manifeste sans fichier de verrouillage associé, une seconde bibliothèque pour une tâche déjà gérée par une autre, des versions non verrouillées, et des mises à jour non demandées par la spécification.
  • "latest"
Mise en cache
Clés de cache sans identifiant de locataire, caches en mémoire qui ne expirent jamais, et valeurs déterminées au moment de la compilation alors qu'elles devraient être lues à l'exécution du code.
Commentaires
Des commentaires qui répètent la ligne suivante, décrivent l'édition, tempèrent ou contredisent le code à côté.
  • // Updated to
  • // should work
Portée des modifications
Les fichiers en dehors du champ couvert par les spécifications, les modifications de mise en forme uniquement et les renommages non requis par la tâche.
Historique de l'agent
Ce que l'agent a fait en chemin, comme supprimer le test qu'il échouait ou modifier une valeur attendue pour correspondre à ce que l'exécution en échec a affiché.

Seules les nouveautés introduites par la modification sont bloquées.

La plupart des dépôts contiennent déjà certains de ces modèles. Anti-slop classe chaque constat selon sa source, afin que la dette existante n'entrave jamais un travail sans rapport.

Introduit
Nouveau dans cette modification. Un constat issu d'une règle bloquante renvoie la modification à l'agent développeur.
Modifié
Déjà présent, sur une ligne ou dans une fonction que la modification édite. Il est enregistré et corrigé lorsque votre discipline de modification l'exige.
Existant
Ailleurs dans le dépôt. Il est enregistré comme dette dans Factory, où vous pouvez créer une tâche pour corriger les constats d'une règle.

Déplacer du code ne compte pas comme l'avoir introduit. Le copier, si.

Vous décidez jusqu'où une modification peut aller.

La discipline de modification indique à l'agent développeur ce qu'il peut nettoyer pendant son travail.

  1. ChirurgicalUniquement ce dont les spécifications ont besoin. Les autres problèmes sont signalés, mais non corrigés.
  2. ÉquilibréPar défautCorrige également de petits problèmes sur les lignes que la modification touche déjà.
  3. RestaurateurNettoie également les constats à l'intérieur des fonctions que la modification édite.

L'agent développeur travaille selon les mêmes règles.

Anti-slop n'est pas seulement un jugement final. L'agent reçoit les règles pendant qu'il rédige la modification, et il ne peut pas les contourner.

  1. L'agent part de votre discipline de modification et des modèles que vous avez mis en quarantaine, chacun avec le remplaçant à utiliser à la place.
  2. Il détecte les règles rapides après chaque modification et dispose d'une seule chance de corriger les anomalies bloquantes avant l'exécution du contrôle qualité.
  3. Les agents ne peuvent pas accepter leurs propres anomalies. Lorsqu'un agent indique qu'un test est erroné et le modifie, un réviseur doit approuver cette modification.
  4. Un fichier de dépôt, .coroid/anti-slop.yml, permet d'ajouter des règles et d'exclure les chemins générés. Il est lu à partir de la racine de la modification, afin qu'une modification ne puisse pas assouplir ses propres règles.

Appliquez les mêmes règles aux agents que vous utilisez déjà.

Les ingénieurs qui travaillent avec leurs propres agents de codage peuvent également utiliser les règles de votre organisation.

AGENTS.md Snippet
Téléchargez une section contenant les instructions pour vos agents, la discipline de modification du projet, les motifs mis en quarantaine et les règles les plus importantes.
Coroid MCP Server
anti_slop_rules décrit votre politique publiée, et anti_slop_scan analyse une branche d'un projet synchronisé. Les deux sont en lecture seule.
Coroid Check sur les demandes d'intégration
Lorsque les contrôles pull request sont activés, le même contrôle s'exécute sur les demandes d'intégration GitHub ouvertes par vos développeurs et signale chaque anomalie sur sa ligne respective.

Testé en premier sur notre propre code.

Coroid a été créé par une personne et cent agents ; anti-slop a donc été appliqué au dépôt de Coroid avant d'être utilisé pour tout autre projet.

Une analyse de chaque fichier source

Nous avons analysé tous les fichiers sources 11 536 dans le dépôt de Coroid, comme si un agent venait de les écrire. L'analyse a révélé 6 motifs que les règles avaient incorrectement identifiés. Nous les avons corrigés, ce qui a réduit le nombre de résultats bloquants de 5 366 à 2 253.

Ce qui bloque encore correspond précisément à ce que les règles sont conçues pour détecter : une note laissée dans notre code de notification indiquant que « Dans une implémentation réelle, on récupérerait le jeton FCM de l'utilisateur ».

Les règles jugées par un modèle

Deux règles interrogent le modèle ligne par ligne : un contrôle défensif pour détecter ce que le code exclut déjà, et un commentaire qui contredit le code adjacent. Elles ne font qu'émettre des recommandations. Sur 600 lignes candidates issues de modifications réellement fusionnées, elles ont signalé aucune erreur de détection, et cela coûte au maximum 0,0015 $US par analyse.

Activez-le dans le Contrôle qualité.

Les propriétaires et les administrateurs activent l’anti-slop par défaut pour l’organisation ou pour un projet spécifique. La prochaine exécution de ce projet l’inclut.

  1. Ouvrez le module de contrôle qualité et sélectionnez la configuration par défaut de l'organisation ou un projet.
  2. Activez anti-slop. Cette option ajoute cinq exigences à la politique.
  3. Sélectionnez la discipline de modification et les groupes à bloquer. Désactiver cette option conserve ces paramètres pour la prochaine utilisation.

Les cinq exigences qu’il impose

  • Les tests confirment toujours la validité du changement
  • Aucun élément non terminé ou réservé aux tests n’est déployé en production
  • Aucune nouvelle dette technique n’est créée
  • Le changement reste dans le périmètre défini et s’intègre naturellement au code existant
  • Les nouvelles dépendances sont réelles et dignes de confiance.
Lire le guide anti-slop
Contrôle qualité
Choisissez les critères de validation pour chaque projet. Un changement s'applique immédiatement aux nouveaux travaux dès que vous l'avez défini.
Boutique en ligneConfiguration personnalisée
Il s'exécute lors du contrôle qualité des tâches, des demandes de fusion et de la validation des versions.
Vérifications à chaque modification
Une modification échouant à une vérification est renvoyée au développeur avant toute révision.
  • Anti-slopRenvoie un changement en arrière lorsqu'il affaiblit les tests, masque des erreurs, livre des espaces réservés ou génère une dette technique.
  • Tests unitairesDétecte et exécute les tests unitaires du dépôt à chaque modification.
  • Tests navigateur2 sur 3Diffère de la configuration par défautExécute vos parcours de navigation sur le changement apporté.
  • TraductionsDiffère de la configuration par défautVérifie que les chaînes modifiées sont bien traduites et que leurs espaces réservés ainsi que leurs formes pluriels correspondent.
  • Vérifications du dépôtExécute vos propres commandes, comme le formatage, la vérification de la taille des fichiers, les migrations, les tests d'intégration et les analyses de sécurité.
Contrôle qualité
  • Contrôle qualité approfondiApprofondiLe contrôle qualité collecte des preuves et des captures d'écran en temps réel par rapport à la Spécification. Lorsqu'il est désactivé, le travail bénéficie d'un contrôle qualité standard.

Examinez les travaux déjà validés.

Activez anti-slop pour un projet et découvrez ce qu'il renvoie avant toute action de votre part.