Erkennen Sie die Abkürzungen der Agenten, bevor die Arbeit bei Ihnen ankommt.

Ein Test wird übersprungen, um grün zu werden, ein Fehler wird geschluckt, ein Platzhalter bleibt zurück, eine Typüberprüfung wird stillschweigend ignoriert. Anti-Slop prüft jede von einem Agenten vorgenommene Änderung auf solche Fälle und sendet sie dem Entwickleragenten mit jedem Fund zurück.

AufgabeGutscheincodes beim Checkout anwenden.In Bearbeitung
Qualitätsgateways
Entwickler QualitätsprüfungVersuch 2Bestanden
Anti-Slop
Keine neue technische SchuldBestanden
0 blockieren den Prozess · 0 wurden eingeführt · 1 wurden bearbeitet · 14 bestehen bereits.
Entwickler QualitätsprüfungVersuch 1Blockiert · an Entwickler gesendet
Anti-Slop
Keine neue technische SchuldReparatur erforderlich
2 blockieren den Prozess · 2 wurden eingeführt · 1 wurden bearbeitet · 14 bestehen bereits.
  • Test übersprungensrc/checkout/coupon.test.ts:88it.skip('rejects an expired coupon', …)
  • Fehler unterdrücktsrc/checkout/apply-coupon.ts:41} catch {}
Gefundene Probleme
  • BehobenTest übersprungenAnti-Slop
  • BehobenFehler unterdrücktAnti-Slop

Die Aufgabenansicht ist eine Nachbildung des Coroid-Portals. Die darin enthaltene Aufgabe, die Dateien und die Befunde sind beispielhaft.

Regeln
106
Familien
13
Regeln, die standardmäßig blockieren
44
Bestehende Befunde, die eine Änderung blockieren
0

Wonach es sucht.

Regeln sind in Familien gegliedert. Jede Regel blockiert, gibt einen Rat oder protokolliert nur; ein Owner kann das für die Organisation oder ein Projekt ändern.

Tests
Fokussierte oder übersprungene Tests, gelöschte Tests, entfernte oder abgeschwächte Assertions, Tests, die nicht fehlschlagen können, sowie Wiederholungen, die einen instabilen Test verbergen.
  • .only
  • .skip
  • expect(true).toBe(true)
Unterdrückungen
Neue Lint-Deaktivierungen, ignorierte Typfehler, Umwandlungen zu 'any' und Code, der von der Abdeckung ausgeschlossen wird.
  • @ts-ignore
  • as any
  • eslint-disable
Build und CI
Entfernte Testschritte oder Erlaubnis zum Fehlschlagen, gesenkte Abdeckungsschwellen, Testläufe, die ohne Tests bestehen, übersprungene Commit-Hooks sowie committierte Build-Ergebnisse.
  • continue-on-error: true
  • --passWithNoTests
Testnachweise
Ein Testlauf, bei dem nichts ausgeführt wurde, weniger Tests als beim letzten erfolgreichen Lauf, ein partieller Lauf, der als vollständig gemeldet wird, sowie zwischengespeicherte Ergebnisse, die als neuer Lauf ausgegeben werden.
  • Tests: 0 total
  • --onlyChanged
Produktionscode
Platzhalter-Implementierungen, Debugging-Code, Anmerkungen wie „in einer echten Implementierung“, für Menschen gedachte Anweisungen, Mock-Daten sowie Produktionscode, der Testcode importiert.
  • throw new Error('Not implemented')
  • debugger;
Fehlerbehandlung
Fehler werden geschluckt oder durch einen Standardwert verdeckt, Berechtigungsprüfungen erlauben Zugriff selbst bei Fehlschlag, sowie Wiederholungen ohne Begrenzung.
  • except: pass
  • .catch(() => {})
Sicherheit
Hardcodierte Geheimnisse, deaktivierte TLS-Überprüfung, entfernte Authentifizierungs-Schutzmechanismen, Wildcard-CORS mit Anmeldeinformationen sowie SQL-Abfragen, die aus Zeichenfolgen erstellt werden.
  • rejectUnauthorized: false
  • verify=False
Architektur
Neue Import-Zyklen, Imports über von Ihnen festgelegte Grenzen hinweg, duplizierte Blöcke, Code, den die Änderung ungenutzt ließ, sowie neue Kopien von Mustern, die Sie außer Betrieb genommen haben.
Abhängigkeiten
Eine Manifest-Änderung ohne zugehörige Lockdatei, eine zweite Bibliothek für eine Aufgabe, die bereits eine andere erledigt, ungepinnte Versionen sowie Upgrades, die in der Spezifikation nicht vorgesehen waren.
  • "latest"
Caching
Cache-Schlüssel ohne Mandantenzuordnung, im Speicher befindliche Caches, die niemals ablaufen, sowie zur Compilezeit bestimmte Werte, die zur Laufzeit gelesen werden sollten.
Kommentare
Kommentare, die die nächste Zeile wiederholen, die Bearbeitung beschreiben, Ausflüchte enthalten oder dem danebenstehenden Code widersprechen.
  • // Updated to
  • // should work
Änderungsumfang
Dateien außerhalb des vom Lastenheft erfassten Bereichs, rein formatierte Änderungen sowie Umbenennungen, die nicht zum Auftrag gehören.
Agentenpfad
Was der Agent auf seinem Weg tat – etwa den Test löschen, der fehlschlug, oder einen erwarteten Wert in den vom fehlerhaften Lauf ausgegebenen Wert ändern.

Nur das, was durch die Änderung entstanden ist, wird blockiert.

Die meisten Repositorys enthalten bereits einige dieser Muster. Anti-Slop ordnet jedes Fundstück nach seiner Herkunft, sodass bestehende Schulden keine unzusammenhängenden Arbeiten blockieren.

Neu eingeführt
Neu in dieser Änderung. Ein Fundstück einer blockierenden Regel sendet die Änderung zurück an den Developer-Agenten.
Bereits vorhanden
Schon vorhanden – in einer Zeile oder Funktion, die von der Änderung bearbeitet wird. Es wird erfasst und korrigiert, sobald Ihre Änderungsdisziplin dies verlangt.
Vorhanden
An anderer Stelle im Repository. Es wird als Schulden in Coroid erfasst, wo Sie einen Auftrag zur Behebung der betreffenden Regelfunde erstellen können.

Das Verschieben von Code zählt nicht als Neu-Einführung. Das Kopieren hingegen schon.

Sie entscheiden, wie weit eine Änderung reichen darf.

Die Änderungsdisziplin gibt dem Developer-Agenten vor, was er während seiner Arbeit bereinigen darf.

  1. PräziseNur das, was das Lastenheft vorsieht. Andere Probleme werden gemeldet, aber nicht behoben.
  2. AusgewogenStandardBehebt auch kleine Probleme in Zeilen, die ohnehin von der Änderung berührt werden.
  3. WiederherstellendBereinigt auch Fundstücke innerhalb der Funktionen, die von der Änderung bearbeitet werden.

Der Developer-Agent arbeitet nach denselben Regeln.

Anti-Slop ist nicht nur ein endgültiges Urteil. Der Agent erhält die Regeln bereits während des Schreibens der Änderung und kann sie nicht außer Kraft setzen.

  1. Der Agent startet mit Ihrer Änderungsdisziplin und den von Ihnen isolierten Mustern – jeweils samt dem zu verwendenden Ersatz.
  2. Es erkennt die schnellen Regeln nach jeder Bearbeitung und erhält eine Chance, blockierende Befunde zu beheben, bevor die QA läuft.
  3. Agenten können ihre eigenen Befunde nicht akzeptieren. Wenn ein Agent behauptet, ein Test sei falsch, und ihn ändert, muss ein Reviewer diese Änderung genehmigen.
  4. Eine Repository-Datei, .coroid/anti-slop.yml, kann Regeln hinzufügen und generierte Pfade ausnehmen. Sie wird vom Basisstand der Änderung aus gelesen, sodass eine Änderung ihre eigenen Regeln nicht lockern kann.

Halten Sie die Agenten, die Sie bereits einsetzen, an dieselben Regeln.

Ingenieure, die mit ihren eigenen Coding-Agenten arbeiten, können ebenfalls die Regeln Ihrer Organisation nutzen.

AGENTS.md Snippet
Laden Sie einen Abschnitt für die Anweisungen Ihrer Agenten mit der Änderungsdisziplin des Projekts, isolierten Mustern und den wichtigsten Regeln herunter.
Coroid MCP Server
anti_slop_rules beschreibt Ihre veröffentlichte Richtlinie, und anti_slop_scan durchsucht einen Branch eines synchronisierten Projekts. Beide sind nur zum Lesen bestimmt.
Coroid Check bei Pull Requests
Wenn die pull request-Prüfungen aktiviert sind, läuft dieselbe Prüfung bei den von Ihren Entwicklern geöffneten GitHub-Pull Requests und markiert jeden Befund direkt in der Zeile.

Zuerst an unserem eigenen Code getestet.

Coroid wurde von einer Person und hundert Agenten entwickelt; daher lief Anti-Slop zuerst im eigenen Repository von Coroid und erst danach bei anderen.

Ein Scan aller Quelldateien

Wir haben alle 11.536 Quelldateien im Repository von Coroid gescannt, als wären sie gerade von einem Agenten geschrieben worden. Der Scan identifizierte 6 Muster, die die Regeln fälschlicherweise als blockierend einstuften. Nach deren Korrektur sank die Zahl der blockierenden Ergebnisse von 5.366 auf 2.253.

Was noch blockiert, ist genau das, was die Regeln finden sollen – wie eine Notiz in unserem Benachrichtigungscode: „In einer echten Implementierung würden Sie das FCM-Token des Nutzers abrufen.“

Regeln, die ein Modell bewertet

Zwei Regeln befragen das Modell zeilenweise: eine abwehrhafte Prüfung auf Elemente, die der Code bereits ausschließt, sowie ein Kommentar, der dem darunterstehenden Code widerspricht. Sie geben lediglich Empfehlungen. Von 600 Zeilen aus tatsächlichen gemergten Änderungen wurden von ihnen als problematisch eingestuft. keine wurde fälschlicherweise als problematisch eingestuft – der Aufwand beträgt maximal 0,0015 $ pro Scan.

Aktivieren Sie die Funktion im Qualitätskontrollmodul.

Besitzer und Administratoren aktivieren Anti-Slop für die Organisationseinstellung oder für ein einzelnes Projekt. Der nächste Lauf dieses Projekts beinhaltet dann die Prüfung.

  1. Öffnen Sie die Qualitätskontrolle und wählen Sie die Organisationseinstellung oder ein Projekt aus.
  2. Aktivieren Sie Anti-Slop. Es fügt der Richtlinie fünf Erwartungen hinzu.
  3. Wählen Sie die Änderungsdisziplin und die Gruppen aus, die blockieren. Das Deaktivieren bewahrt diese Einstellungen für das nächste Mal auf.

Die fünf hinzugefügten Erwartungen

  • Tests belegen weiterhin die Änderung.
  • Nichts Unvollendetes oder Nur-für-Tests-Geeignetes wird ausgeliefert.
  • Keine neuen strukturellen Schulden.
  • Die Änderung bleibt im Umfang und liest sich wie dieser Codebestand.
  • Neue Abhängigkeiten sind echt und vertrauenswürdig.
Lesen Sie den Anti-Slop-Leitfaden
Qualitätskontrolle
Wählen Sie aus, worauf bei jedem Projekt geachtet werden soll. Eine Änderung wirkt sich sofort auf neue Arbeiten aus.
StorefrontEigene Konfiguration
Die Prüfung erfolgt bei der Aufgaben-QA, in Pull Requests und bei der Release-Validierung.
Prüfungen bei jeder Änderung
Eine Änderung, die eine Prüfung nicht besteht, wird vor der Review an den Entwickler zurückgesendet.
  • Gegen schlechten CodeEin Änderungsvorschlag wird zurückgesendet, wenn dadurch Tests geschwächt, Fehler unterdrückt, Platzhalter ausgeliefert oder technische Schulden erzeugt werden.
  • Unit-TestsBei jeder Änderung werden die Unit-Tests des Repositories ausgeführt und ausgewertet.
  • Browser-Tests2 von 3abweichend von der StandardeinstellungDie Browser-Journeys werden gegen die jeweilige Änderung getestet.
  • Übersetzungenabweichend von der StandardeinstellungEs wird überprüft, ob geänderte Texte übersetzt wurden und ob ihre Platzhalter sowie Pluralformen korrekt übereinstimmen.
  • Repository-PrüfungenEigene Befehle wie Formatierungen, Dateigrößenprüfungen, Migrationen, Integrationstests und Sicherheitsscans werden ausgeführt.
QA
  • Gründliche QAGründlichBei aktivierter Funktion sammelt das QA-System live Belege und Screenshots im Vergleich zur Spezifikation. Ist sie deaktiviert, erfolgt die Standard-QA.

Überprüfen Sie Arbeiten, die bereits validiert wurden.

Aktivieren Sie Anti-Slop für ein Projekt und sehen Sie sich an, was vor dem Versand zurückgesendet wird.