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.