Scoprire come impostare correttamente gli strumenti di controllo del codice per la convalida delle app
Dopo aver acquisito maggiore familiarità con l'ambiente di sviluppo, Visual Studio Code, nonché con il linguaggio di programmazione (AL) e i diversi tipi di oggetto, è il momento di impostare correttamente Visual Studio Code.
Visual Studio Code non è progettato per gestire un unico grande progetto, ma molti progetti dipendenti più piccoli. Tuttavia, poiché l'applicazione di base non è divisa in moduli o componenti che consentano di gestire il codice in progetti più piccoli, è consigliabile attenersi alle ottimizzazioni delle prestazioni seguenti.
Aprire il file settings.json nel progetto (o le impostazioni globali, a seconda delle preferenze) premendo CTRL+P. Impostare le seguenti opzioni nel file.
al.enableCodeAnalysis: false per rimuovere l'analisi del codice.
al.enableCodeActions: false.
editor.codeLens: false per rimuovere CodeLense in Visual Studio Code.
Aggiungere la cartella delle compilazioni all'elenco di esclusione di Windows Defender.
Strumenti dell'analizzatore di codice
Un analizzatore di codice è una libreria che si basa sulla funzionalità del compilatore per offrire un'analisi avanzata della sintassi e della semantica del codice in fase di compilazione. L'estensione AL Language per Visual Studio Code include quattro analizzatori.
CodeCop
CodeCop è un analizzatore che applica le linee guida ufficiali per la codifica AL. Per altre informazioni sulle regole CodeCop, consultare Regole dell'analizzatore CodeCop.
PerTenantExtensionCop
PerTenantExtensionCop è un analizzatore che applica regole che devono essere rispettate da estensioni destinate a essere installate per i singoli tenant. Per altre informazioni sulle regole PerTenantExtensionCop, consultare Regole dell'analizzatore PerTenantExtensionCop.
AppSourceCop
AppSourceCop è un analizzatore che applica regole che devono essere rispettate dalle estensioni destinate a essere pubblicate su Microsoft AppSource. Per informazioni supplementari sulle regole di AppSourceCop, consultare Regole dell'analizzatore AppSourceCop.
UICop
UICOP è un analizzatore che applica regole che devono essere rispettate dalle estensioni destinate a personalizzare il client Web. Per altre informazioni sulle regole UserInterfaceCop, consultare Regole dell'analizzatore UICop.
Uso dello strumento di analisi del codice
Per creare un progetto di base in AL, effettuare i seguenti passaggi.
Premere ALT+A, quindi ALT+L per creare un nuovo progetto.
Aprire il riquadro comandi (CTRL+MAIUSC+P) e selezionare Impostazioni utente o Impostazioni area di lavoro.
Copiare l'impostazione
al.enableCodeAnalysisnel file delle impostazioni e configurarla su true;al.enableCodeAnalysis: true.Copiare l'impostazione al.codeanalyzers nel file delle impostazioni, quindi usare CTRL+BARRA SPAZIATRICE per scegliere tra gli analizzatori di codice disponibili. Separare con virgole gli analizzatori di codice presenti nell'elenco.
A questo punto, gli analizzatori selezionati verranno eseguiti sul progetto. È possibile aggiungere al progetto codice che dimostra una violazione della regola di analisi del codice AA0001 "Deve essere presente esattamente un carattere spazio su ciascun lato di un operatore binario come : = + - AND OR =."
Gli strumenti di analisi del codice verranno eseguiti in background. Saranno visibili l'espressione errata sottolineata e l'avviso che indica la necessità di inserire esattamente un carattere spazio su ciascun lato di un operatore. Il messaggio di avviso viene visualizzato quando il mouse viene passato sul codice sottolineato. È inoltre possibile visualizzare l'elenco dei problemi selezionando la scheda Visualizza di Visual Studio Code e l'opzione Problemi.
L'uso del collegamento CTRL+MAIUSC+B per creare il progetto comporterà l'esecuzione degli strumenti di analisi del codice sull'intero progetto. I problemi rilevati verranno visualizzati nella finestra Output di Visual Studio Code.
Per migliorare le prestazioni durante l'esecuzione dell'analisi del codice su progetti di grandi dimensioni, è possibile disattivare l'esecuzione dell'analisi del codice in background. A tale scopo, effettuare i seguenti passaggi.
Aprire il riquadro comandi (CTRL+MAIUSC+P) e selezionare Impostazioni utente o Impostazioni area di lavoro.
Specificare l'impostazione al.backgroundCodeAnalysis: false.
Creazione e personalizzazione di un set di regole
Per creare e personalizzare un set di regole personale, effettuare i seguenti passaggi.
Nella scheda File di Visual Studio Code selezionare Nuovo file.
Salvare il file vuoto con nome, ad esempio <nome>.ruleset.json e prendere nota del percorso del file.
Aggiungere al file <nome>.ruleset.json il codice seguente:
{ "name": "My Custom ruleset", "rules": [ { "id": "AA0001", "action": "None" } ] }Nelle impostazioni di progetto, impostare al.ruleSetPath sul percorso del file <nome>.ruleset.json rispetto alla radice del progetto.
È possibile usare i frammenti truleset e trule forniti dall'estensione AL Language per creare il proprio set di regole. Il set di regole verrà applicato a tutti gli analizzatori abilitati per il progetto corrente.
In un progetto AL è possibile usare un file di set di regole personalizzato per specificare in che modo l'analisi del codice segnalerà i problemi rilevati. Impostazioni diverse possono influire sul modo in cui vengono applicate le regole. Inoltre, ogni nome di file di set di regole deve seguire lo schema <nome>.ruleset.json per poter usufruire di IntelliSense in Visual Studio Code.
Il seguente elenco descrive lo schema di un oggetto ruleset:
Nome
Nome del set di regole.
Questa impostazione è obbligatoria.
Tipo: stringa
Descrizione
Descrizione del set di regole. È possibile usare questa descrizione per documentare lo scopo del set di regole.
Questa impostazione non è obbligatoria.
Tipo: stringa
generalAction
Azione da applicare a tutte le diagnostiche che hanno regole definite in questo file, o in altri file che hanno un'azione predefinita specificata, e a tutte le diagnostiche generate dal set corrente di analizzatori che non hanno una regola definita. Se un file incluso presenta un generalAction più rigido, verrà usato.
Questa impostazione non è obbligatoria.
Tipo: errore | avviso | info | nascosto
includedRuleSets
Elenco dei file di set di regole esterni da includere nel set di regole corrente. L'ordine in cui vengono elaborati i file non è definito.
Questa impostazione non è obbligatoria.
Tipo: matrice di IncludedRuleSet
Regole
Raccolta di regole da applicare alla diagnostica generata dagli analizzatori.
Questa impostazione non è obbligatoria.
Tipo: matrice di regola
IncludedRuleSet è un oggetto JSON complesso che definisce l'inclusione di un file di set di regole esterno nel set di regole corrente e ha le seguenti proprietà.
Path: percorso del file incluso. Per le inclusioni specificate nel file su cui è impostato al.ruleSetPath, il percorso può essere assoluto o relativo alla cartella del progetto. Per i file inclusi dal file del set di regole radice, il percorso è relativo al file. L'aggiunta di una voce al percorso del set di regole e il relativo salvataggio verranno automaticamente applicati a tutti i progetti che usano il set di regole.
Action: azione da applicare per tutte le diagnostiche che hanno un'azione specificata nel set di regole incluso diverso da Nessuno e Nascosto.
Rule è un oggetto JSON complesso che specifica come elaborare una diagnostica specifica. Un oggetto Rule ha le seguenti proprietà.
ID: stringa che identifica in modo univoco una diagnostica.
Action: azione da applicare se viene emessa la diagnostica. Non possono esserci due regole con lo stesso ID e azioni diverse nello stesso file di regole.
L'esempio seguente mostra un set di regole che imposta la gravità della regola (AA0001: deve essere presente esattamente un carattere spazio su ciascun lato di un operatore binario come: = + - AND OR =). fornita dall'analizzatore CodeCop impostato su Errore.
{
"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."
}
]
}
L'esempio seguente mostra un set di regole specifico del progetto che estende un set di regole a livello aziendale contenuto nel file company.ruleset.json e imposta la gravità della regola (AA0005: usare solo BEGIN..END) per racchiudere istruzioni composte. fornite dall'analizzatore CodeCop impostato su Info.
{
"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."
}
]
}
Limiti
La modifica del contenuto del file del set di regole non verrà rilevata dall'estensione AL Language. Per vedere gli effetti della modifica del file del set di regole, è possibile provare una delle seguenti azioni:
Ricaricare la finestra.
Nelle impostazioni del progetto modificare l'impostazione al.ruleSetPath su un percorso non valido.
Salvare il file delle impostazioni, modificare nuovamente l'impostazione e salvarla.