Skip to content

Suppressions

Einzelne Findings bewusst per Code-Kommentar ausnehmen, oder ganze Regeln und Pfade in der Konfigurationsdatei.

CodeCharter bietet zwei Wege, Findings bewusst auszunehmen: Suppression-Kommentare im Code (drei Formen) für eine einzelne Zeile oder Datei, oder das Abschalten ganzer Regeln und Pfade in .codecharter/config.yml.

1. Inline-Suppression auf der nächsten Zeile

// codecharter-disable-next-line datetime-direct-usage
var migrationTimestamp = DateTime.UtcNow;

Die Direktive gilt für die unmittelbar folgende Zeile. Der Regel-Slug ist erforderlich: ein // codecharter-disable-next-line ohne Slug unterdrückt nichts.

2. Suppression auf derselben Zeile oder Zeile darüber

var migrationTimestamp = DateTime.UtcNow; // codecharter-disable datetime-direct-usage

Oder auf der Zeile darüber:

// codecharter-disable datetime-direct-usage
var migrationTimestamp = DateTime.UtcNow;

Beide Kommentarformen akzeptieren mehrere Regel-Slugs in einem Kommentar, durch Leerzeichen getrennt, zum Beispiel // codecharter-disable datetime-direct-usage magic-number. Slugs werden case-sensitive mit der Regel-ID verglichen, also dem Dateinamen der Regel ohne die Endung .ccr.

Hinter dem oder den Regel-Slugs darf eine Begründung in freiem Text stehen, zum Beispiel // codecharter-disable magic-number migration constant. Zusätzliche Wörter nach dem Slug werden ignoriert, Suppressions können sich also selbst dokumentieren; das gilt auch für die Form codecharter-disable-next-line. Da jedes Wort gegen Regel-Slugs verglichen wird, sollten Sie in der Begründung keine Wörter verwenden, die selbst der Slug einer anderen Regel sind, sonst würde auch diese Regel unterdrückt.

3. File-Level-Suppression

Ein // codecharter-disable-Kommentar, der allein auf einer eigenen Zeile steht, ohne Regel-Slug und ohne weiteren Inhalt auf der Zeile, unterdrückt alle Findings für die gesamte Datei. Er kann an beliebiger Stelle in der Datei stehen; hinter Code auf derselben Zeile hat er jedoch keine dateiweite Wirkung. Sinnvoll bei automatisch generiertem Code oder Altdateien, die Sie aktuell nicht anfassen möchten.

// codecharter-disable
namespace Acme.Generated;

Nicht unterstützt

Es gibt keinen // codecharter-enable-Kommentar, eine Suppression kann also weiter unten in der Datei nicht wieder eingeschaltet werden, und es gibt keine Block- oder Bereichsform, die einen Codeabschnitt abdeckt. Das .NET-Attribut [SuppressMessage] wird nicht ausgewertet, und Findings lassen sich nicht nach Regel-Kategorie unterdrücken. Für größere Bereiche schalten Sie die Regel in .codecharter/config.yml mit einem ignore-Eintrag ab oder nehmen die Pfade mit exclude aus (siehe unten).

Suppressions auf Repository-Ebene

Um eine ganze Regel abzuschalten oder komplette Pfade aus der Analyse zu nehmen, verwenden Sie .codecharter/config.yml statt Inline-Kommentaren. Der Abschnitt ignore schaltet Findings aus (optional auf einen Namespace mit in: oder auf passende Entity-Namen mit match: beschränkt), und exclude nimmt Pfade aus der Analyse:

version: 1
ignore:
  - rule: namespace-distance
    in: Acme.Generated
  - rule: todo-comment
exclude:
  - "**/tests/**"
  - "**/obj/**"

Um statt des Abschaltens die Severity einer Regel zu ändern, verwenden Sie den Abschnitt overrides, siehe Findings. Den vollen Satz an Abschnitten, Scopes und das maschinenlokale Overlay finden Sie unter Konfigurationsdatei.