Lernen, wie man Code-Cop-Tools für die App-Validierung richtig einrichtet

Abgeschlossen

Nachdem Sie mit der Entwicklungsumgebung, Visual Studio Code, der Programmiersprache (AL) und verschiedenen Objekttypen vertraut sind, ist es an der Zeit, Visual Studio Code ordnungsgemäß einzurichten.

Visual Studio Code wurde für viele kleinere, abhängige Projekte und nicht für ein einziges großes Projekt erstellt. Da die Basisanwendung jedoch nicht in Module oder Komponenten unterteilt ist, mit denen Code in kleineren Projekten verwaltet werden kann, empfehlen wir die folgenden Leistungsoptimierungen.

Drücken Sie STRG+P, und öffnen Sie Ihre Datei settings.json im Projekt (oder globale Einstellungen, wenn Sie bevorzugen). Stellen Sie in der Datei die folgenden Optionen ein.

  • al.enableCodeAnalysis: false, um die Codeanalyse zu entfernen

  • al.enableCodeActions: false

  • editor.codeLens: false, um Code-Lens in Visual Studio Code zu entfernen

  • Fügen Sie den Buildordner zur Ausschlussliste für Windows Defender hinzu.

Code Analyzer-Tools

Ein Codeanalysator ist eine Bibliothek, die auf der Funktionalität des Compilers aufbaut, um eine verbesserte Analyse der Syntax und Semantik Ihres Codes zum Zeitpunkt der Erstellung zu ermöglichen. Die Erweiterung AL Sprache für Visual Studio Code enthält vier Analysatoren.

CodeCop

CodeCop ist ein Analysator, das die offiziellen AL-Codierungsrichtlinien durchsetzt. Weitere Informationen zu den CodeCop-Regeln finden Sie unter CodeCop Analyzer-Regeln.

PerTenantExtensionCop

PerTenantExtensionCop ist ein Analysator, der Regeln erzwingt, die von Erweiterungen eingehalten werden müssen, die für einzelne Mandanten installiert werden sollen. Weitere Informationen zu den PerTenantExtensionCop-Regeln finden Sie unter PerTenantExtensionCop Analyzer-Regeln.

AppSourceCop

AppSourceCop ist ein Analysator, der Regeln erzwingt, die von Erweiterungen eingehalten werden müssen, die auf Microsoft AppSource veröffentlicht werden sollen. Zusätzliche Informationen zu den AppSourceCop-Regeln finden Sie unter AppSourceCop Analyzer-Regeln.

UICop

UICOP ist ein Analysator, der Regeln erzwingt, die von Erweiterungen eingehalten werden müssen, die dazu gedacht sind, den Webclient anzupassen. Weitere Informationen zu den UserInterfaceCop-Regeln finden Sie unter UICop Analyzer-Regeln.

Verwenden des Tools zur Codeanalyse

Führen Sie die folgenden Schritte aus, um ein Basisprojekt in AL zu erstellen.

  1. Drücken Sie ALT+A und dann ALT+L, um ein neues Projekt zu erstellen.

  2. Öffnen Sie die Befehlspalette (STRG+UMSCHALT+P), und wählen Sie entweder Benutzereinstellungen oder Arbeitsbereichseinstellungen aus.

  3. Kopieren Sie die Einstellung „al.enableCodeAnalysis“ in die Einstellungsdatei, und setzen Sie sie auf „true; al.enableCodeAnalysis: true“.

  4. Kopieren Sie die Einstellung al.codeanalyzers in die Einstellungsdatei, und verwenden Sie dann STRG+Leertaste aus den verfügbaren Codeanalysatoren aus. Trennen Sie die Liste der Codeanalysatoren durch Kommas.

Zu diesem Zeitpunkt werden die ausgewählten Analysatoren in Ihrem Projekt ausgeführt. Sie können dem Projekt Code hinzufügen, mit dem ein Verstoß gegen die Codeanalyseregel AA0001 „Auf jeder Seite eines Binäroperators muss genau ein Leerzeichen stehen, z. B.: = + – AND OR =.“ demonstriert werden kann.

Die Tools für die Codeanalyse werden im Hintergrund ausgeführt. Sie sehen den fehlerhaften Ausdruck unterstrichen und die Warnung, dass auf jeder Seite eines Operators genau ein Leerzeichen stehen muss. Diese Warnmeldung wird angezeigt, wenn Sie die Maus über den unterstrichenen Code bewegen. Sie können die Liste der Probleme auch anzeigen, indem Sie die Registerkarte Ansicht von Visual Studio Code und die Option Probleme auswählen.

Das Verwenden der Tastenkombination STRG+UMSCHALT+B zum Erstellen Ihres Projekts führt die Tools für die Codeanalyse für das gesamte Projekt aus, und die erkannten Probleme werden im Ausgabefenster von Visual Studio Code angezeigt.

Um die Leistung beim Ausführen der Codeanalyse in großen Projekten zu verbessern, können Sie das Ausführen der Codeanalyse im Hintergrund deaktivieren. Führen Sie dazu die folgenden Schritte aus.

  1. Öffnen Sie die Befehlspalette (STRG+UMSCHALT+P), und wählen Sie entweder Benutzereinstellungen oder Arbeitsbereichseinstellungen aus.

  2. Geben Sie die Einstellung al.backgroundCodeAnalysis: false an.

Erstellen und Anpassen eines Regelsatzes

Führen Sie die folgenden Schritte aus, um einen eigenen Regelsatz zu erstellen und anzupassen.

  1. Wählen Sie auf der Registerkarte Datei in Visual Studio Code Neue Datei aus.

  2. Speichern Sie die leere Datei unter einem Namen, z. B. <name>.ruleset.json, und notieren Sie sich den Dateipfad.

  3. Fügen Sie den folgenden Code der Datei <name>.ruleset.json hinzu:

    {
        "name": "My Custom ruleset",
        "rules": [
            {
            "id": "AA0001",
            "action": "None"
            }
        ]
    }
    
  4. Stellen Sie in Ihren Projekteinstellungen al.ruleSetPath zum Pfad der Datei <name>.ruleset.json ein, relativ zum Projektstamm.

Sie können die Ausschnitte truleset und trule verwenden, die von der AL-Spracherweiterung bereitgestellt werden, um Ihren Regelsatz zu erstellen. Der Regelsatz wird auf alle Analysatoren angewendet, die für das aktuelle Projekt aktiviert sind.

In einem AL-Projekt können Sie mithilfe einer benutzerdefinierten Regelsatzdatei angeben, wie die Codeanalyse die aufgetretenen Probleme meldet. Unterschiedliche Einstellungen können sich auf die Anwendung von Regeln auswirken, und jeder Regelsatzdateiname muss dem Muster <name>.ruleset.json folgen, um von IntelliSense in Visual Studio Code profitieren.

Die folgende Liste beschreibt das Schema eines Regelsatzobjekts:

  • Name

    • Der Name des Regelsatzes

    • Diese Einstellung ist erforderlich.

    • Typ: Zeichenfolge

  • Beschreibung

    • Die Beschreibung des Regelsatzes Mit dieser Beschreibung können Sie den Zweck des Regelsatzes dokumentieren.

    • Diese Einstellung ist nicht erforderlich.

    • Typ: Zeichenfolge

  • generalAction

    • Die Aktion, die auf alle Diagnosen angewendet werden soll, für die Regeln in dieser Datei definiert sind, oder auf andere Dateien, für die eine Standardaktion angegeben ist, sowie auf alle Diagnosen, die von den aktuellen Analysatoren generiert werden, für die keine Regel definiert ist. Wenn eine enthaltene Datei eine striktere generalAction hat, wird diese verwendet.

    • Diese Einstellung ist nicht erforderlich.

    • Typ: Fehler | Warnung | Info | Ausgeblendet

  • includedRuleSets

    • Liste der externen Regelsatzdateien, die in den aktuellen Regelsatz aufgenommen werden sollen. Die Reihenfolge, in der die Dateien verarbeitet werden, ist undefiniert.

    • Diese Einstellung ist nicht erforderlich.

    • Typ: Array von IncludedRuleSet

  • Regeln

    • Sammlung von Regeln für die von Analysatoren erstellte Diagnose.

    • Diese Einstellung ist nicht erforderlich.

    • Typ: Array der Regel

Ein IncludedRuleSet ist ein komplexes JSON-Objekt, das die Aufnahme einer externen Regelsatzdatei in den aktuellen Regelsatz definiert und die folgenden Eigenschaften aufweist.

  • Pfad – Der Pfad zur enthaltenen Datei. Für enthaltene, die in der Datei angegeben sind, für die „al.ruleSetPath“ festgelegt ist, kann der Pfad absolut oder relativ zum Projektordner sein. Bei Dateien, die aus der Stammregelsatzdatei enthalten sind, ist der Pfad relativ zur Datei. Das Hinzufügen und Speichern eines Eintrags zum Regelsatzpfad wird automatisch auf alle Projekte angewendet, die den Regelsatz verwenden.

  • Aktion – Die Aktion, die für alle Diagnosen angewendet werden soll, für die im enthaltenen Regelsatz eine Aktion angegeben ist, die sich von „Keine“ und „Ausgeblendet“ unterscheidet.

Eine Regel ist ein komplexes JSON-Objekt, das angibt, wie Sie eine bestimmte Diagnose verarbeiten können. Ein Regelobjekt hat folgende Eigenschaften:

  • ID – Die Zeichenfolge, die eine Diagnose eindeutig identifiziert.

  • Aktion – Die Aktion, die angewendet werden soll, wenn die Diagnose ausgegeben wird. Es können nicht zwei Regeln mit derselben ID und unterschiedlichen Aktionen in derselben Regeldatei vorhanden sein.

Das folgende Beispiel zeigt einen Regelsatz, der den Schweregrad der Regel festlegt (AA0001: Auf jeder Seite eines Binäroperators muss genau ein Leerzeichen stehen, z. B.: = + – UND ODER =). bereitgestellt vom CodeCop-Analysator, der auf Fehler eingestellt ist.

{
    "name": "Company ruleset",
    "description": "These rules must be respected by all the AL code written within the company.",
    "rules": [
        {
            "id": "AA0001",
            "action": "Error",
            "justification": "This diagnostic helps to improve readability. It must be respected in all cases."
        }
    ]
}

Das folgende Beispiel zeigt einen projektspezifischen Regelsatz, der einen unternehmensweiten Regelsatz in der Datei „company.ruleset.json“ erweitert und den Schweregrad der Regel festlegt (AA0005: Verwenden Sie nur „BEGIN..END“), um zusammengesetzte Anweisungen einzuschließen. bereitgestellt vom CodeCop-Analysator, der auf „Info“ eingestellt ist.

{
    "name": "Personal Project ruleset",
    "description": "A list of project specific rules",
    "includedRuleSets": [
        {
            "action": "Default",
            "path": "./company.ruleset.json"
        }
    ],
    "rules": [
        {
            "id": "AA0005",
            "action": "Info",
            "justification": "For this specific project, this diagnostic should be informational."
        }
    ]
}

Einschränkungen

Das Ändern des Inhalts der Regelsatzdatei wird von der Erweiterung AL Sprache nicht erkannt. Um die Auswirkungen des Änderns der Regelsatzdatei zu sehen, können Sie eine der folgenden Aktionen ausführen:

  • Laden Sie das Fenster erneut.

  • Ändern Sie in den Projekteinstellungen die Einstellung al.ruleSetPath auf einen ungültigen Pfad.

  • Speichern Sie die Einstellungsdatei, ändern Sie die Einstellung zurück und speichern Sie sie.