Référence de l'Audit de code

De RAD Studio
Aller à : navigation, rechercher

Remonter à Editeur de code - Index (tutoriel de l'EDI)


L'audit de code désigne un ensemble de fonctionnalités intégrées dans l'éditeur de code (par exemple, Achèvement de code, Achèvement des paramètres, Conseils de code, Expression de conseil, Audit de conseil, Aller à la définition, Achèvement de bloc, Achèvement de classe et Audit d'erreur) et accélérant l'écriture de code. Ces fonctionnalités facilitent l'identification d'instructions communes à insérer dans votre code et vous aident à sélectionner des propriétés et des méthodes. Certaines de ces fonctionnalités sont décrites plus en détail dans les sous-sections suivantes.

Pour activer et configurer les fonctionnalités de l'audit de code, choisissez Outils > Options > Interface utilisateur > Editeur > Langage et cliquez sur l'option Options de l'éditeur de code.

Remarque:

Les fonctionnalités de l'audit de code sont maintenant définies par langage.

Avec Delphi, vous pouvez utiliser l'implémentation LSP (Language Server Protocol) (par défaut) ou classique pour l'audit de code.

Pour C++, l'EDI utilise automatiquement les fournisseurs Audit de code classique ou LSP (Language Server Protocol) en fonction du compilateur utilisé (Clang ou classique).

Audit de code utilisant le protocole LSP (Language Server Protocol) Delphi

Le protocole LSP (Language Server Protocol) est une spécification qui fournit des services linguistiques via un processus de serveur qui communique avec un EDI. En conséquence, les fonctionnalités d'audit de code sont fournies par un ou plusieurs processus séparés, et les fonctionnalités sont fournies de façon asynchrone.

Un petit volet en bas de la vue Projet affiche l'activité du serveur LSP. Il facilite la communication lors de l'analyse.

Remarque: L'audit de code utilisant le protocole LSP (Language Server Protocol) peut être utilisé pendant le débogage et pendant la modification normale du code.

Langages

Les langages sont définis dans le volet des paramètres Outils > Options > Langage, qui affiche une liste de toutes les langues disponibles. Vous pouvez aussi créer un nouveau langage.

Language Option.png

Options de l'éditeur et Mise en évidence syntaxique

Les fonctionnalités Options de l'éditeur et Mise en évidence syntaxique sont définies par langage. Pour y accéder, ouvrez Outils > Options > Interface utilisateur > Editeur > Langage et cliquez sur Options.

Editor Options.png

Sur ce volet de réglage, choisissez un langage. Puis, sélectionnez les options de l'éditeur et le Surligneur de syntaxe à utiliser pour ce langage.

Syntax Highlighter1.png

Modification du Gestionnaire d'audit de code/LSP

Le LSP Delphi est activé par défaut. Vous pouvez vérifier si l'EDI utilise le LSP Delphi comme suit :

  • Lorsque vous ouvrez votre projet Delphi ou que vous effectuez des modifications importantes, une petite barre de progression apparaît en bas de la vue Projets affichant l'activité DelphiLSP.
  • Vous pouvez aussi ouvrir le Gestionnaire de tâches et rechercher un processus DelphiLSP.exe. Généralement, plusieurs processus s'affichent.

Audit de code est le dernier onglet d'un langage. Il contient la fonte utilisateur de l'éditeur et un ensemble de réglages d'audit de code.

Le Gestionnaire d'audit de code fournit une fonctionnalité d'audit de code pour chaque langage. Vous pouvez le définir sur n'importe quel gestionnaire répertorié ici, même si ce dernier n'est pas initialement destiné à ce langage.

Remarque:

Le Gestionnaire d'audit de code répertorie tous les gestionnaires recensés avec l'EDI.

Delphi : vous pouvez choisir le Gestionnaire d'audit de code classique ou LSP (Language Server Protocol).

C++ : vous pouvez modifier le Gestionnaire d'audit de code. Il utilise automatiquement Classique ou LSP pour les compilateurs classiques ou Clang.
Attention: Il n'est pas recommandé de remplacer le Gestionnaire d'audit de code par un autre non destiné au langage en cours.

Dans Delphi, pour basculer entre l'implémentation d'audit de code LSP et classique, choisissez :

  • Delphi (Language Server Protocol) : la nouvelle prise en charge LSP.
  • Delphi (Audit de code classique) : l'ancienne implémentation d'audit de code utilisée dans les versions 10.3.3 et antérieures. Lorsque vous sélectionnez cette option, vous désactivez le protocole LSP.

Code Insight LSP.png

Vous pouvez aussi créer un nouveau Gestionnaire LSP. Cliquez sur Nouveau. Le dialogue vous permet de spécifier l'exécutable du serveur LSP ainsi que certaines options, parmi lesquelles un nom convivial, l'identificateur du langage, le délai d'attente après lequel le serveur sera redémarré, et toutes les options d'initialisation spécifiques au serveur à injecter dans l'appel d'initialisation JSON RPC.

Vous pouvez utiliser cette option pour ajouter un serveur Python ou tout autre langage.

Remarque: RAD Studio prend uniquement en charge les serveurs qui communiquent sur des E/S standard (E/S de console).

New LSP Manager.png

Achèvement du code — Ctrl+Espace

La fonctionnalité Achèvement de code affiche une liste déroulante de tous les éléments et méthodes qui contiennent la chaîne typée n'importe où dans un identificateur.

Pour invoquer l'achèvement du code, appuyez sur Ctrl+Espace dans l'éditeur de code. Sélectionnez le caractère et appuyez sur Entrée pour insérer le texte dans le code à l'emplacement du curseur.

L'achèvement de code est également automatiquement invoqué dans certains emplacements de code, par exemple lorsque vous tapez un point « . » dans Delphi ou une instruction de point « . », de flèche « -> », de portée « :: » ou d'en-tête « #include < » dans C++.

Invoquez l'achèvement de code dans le cadre de votre langage spécifique de la façon suivante :

  • C++
  • Appuyez sur Ctrl+Espace (cette combinaison de touches invoque toujours l'achèvement de code).
  • Entrez . ou -> (fonctionne seulement quand l'option Invoquer automatiquement est activée sur la page Options d'audit de code).
  • Pour annuler une requête d'achèvement de code, appuyez sur la touche Echap.

Code Completion C.png

Remarque: Cette fonctionnalité utilise un serveur LSP (Language Server Protocol) pour le compilateur amélioré par Clang. Elle est asynchrone et non bloquante.
  • Delphi
  • Appuyez sur Ctrl+Espace (cette combinaison de touches invoque toujours l'achèvement de code).
  • ‎Entrez . (cela fonctionne seulement quand l'option Invoquer automatiquement est activée sur la page Options de l'audit de code).
  • Pour annuler une requête d'achèvement de code, appuyez sur la touche Echap.

Code Completion D.png

Lorsque vous tapez des caractères, le comportement de sélection/correspondance prend en compte les situations suivantes :

  • En cas de correspondance exacte entre les caractères tapés et un identificateur, celui-ci est sélectionné.
  • Sinon, le premier identificateur commençant par ces caractères est sélectionné.
  • Sinon, le premier identificateur contenant ces caractères est sélectionné.

Par exemple, tapez MyControl dans l'éditeur et invoquez l'achèvement de code. Ensuite, tapez rect. Vous verrez que toutes les propriétés ou méthodes commençant par Rect s'affichent, ainsi que ClientRect, BoundsRect, etc., c'est-à-dire toute chaîne d'identificateur contenant rect.

L'achèvement de code fonctionne correctement et produit des résultats corrects dans les situations suivantes :

  • Le fichier est nouveau et n'existe pas encore sur le disque.
  • Le projet est nouveau et aucun projet ni aucune unité n'existe sur le disque.
  • L'unité est modifiée, pas encore enregistrée, et le code interne à l'EDI comporte des modifications qui affectent les résultats d'achèvement.
  • Les résultats sont corrects (et modifiés correctement) lors de la modification des plates-formes cibles et d'autres options du projet.

Achèvement de code dans la clause uses :

  • Affiche les fichiers PAS et les chemins DCU dans le projet et les chemins de recherche.
  • Liste les unités à partir du chemin de recherche et leurs versions raccourcies sans les espaces de nommage configurés.
  • Indique lorsque l'unité sélectionnée est déjà utilisée dans l'unité en cours.
Remarque:
  • Ne distingue pas les majuscules/minuscules dans la correspondance.
  • Fonctionne lorsque l'option Utiliser MSBuild de façon externe pour compiler est activée.

Réglages de l'achèvement de code

Lorsque vous utilisez l'achèvement de code, vous pouvez configurer certains filtres dans l'onglet Options d'audit. Ouvrez Outils > Options > Interface utilisateur > Editeur > Langage et cliquez sur Options d'audit.

Insight Options.png

Utilisez ces filtres en fonction de vos besoins :

  • Lister tous les symboles commençant par le filtre en premier : les symboles qui commencent par ce que vous avez tapé (le filtre) sont triés et placés devant les autres. Si vous ne cochez pas cette case, les symboles sont triés par ordre alphabétique. Lorsque vous la cochez, les symboles commençant par le texte du filtre sont placés en haut de la liste.
  • Sélectionner le symbole correspondant le plus court : lorsque la liste d'achèvement de code s'affiche, une entrée est toujours sélectionnée automatiquement, ou s'ouvre avec le symbole le plus proche de la portée dans laquelle le codage est sélectionné. Ce réglage est coché par défaut (défini pour sélectionner le symbole le plus court). Mais si vous le désactivez, vous obtenez un comportement plus proche de l'achèvement de code classique.
  • Le texte du filtre est souligné : lorsque cette option est cochée, le menu déroulant de l'achèvement de code souligne le texte qui correspond à votre saisie.
  • Afficher les symboles contenant le filtre : contrôle les symboles qui sont inclus dans la liste. Par défaut (option cochée), tous les symboles contenant le texte saisi sont listés. Si le réglage est désactivé, la liste d'achèvement de code affiche uniquement les symboles qui commencent par votre saisie.

Pour obtenir un comportement plus proche de l'achèvement de code classique :

  • Lister tous les symboles commençant par le filtre en premier : option cochée
  • Sélectionner le symbole correspondant le plus court : option désactivée
  • Souligner le texte du filtre : option désactivée
  • Afficher les symboles contenant le filtre : option désactivée

Achèvement de paramètre — Ctrl+Maj+Espace

L'achèvement de paramètre est invoqué automatiquement après l'ouverture d'un crochet gauche d'appel de fonction, ou en appuyant sur Ctrl+Maj+Espace lors de l'utilisation de l'éditeur de code. Une fenêtre popup affiche un conseil contenant des noms d'argument et des types pour les appels de méthodes. Vous pouvez taper des caractères correspondant à ceux de la sélection et appuyer sur Retour pour insérer le texte dans le code à l'emplacement du curseur. Si les paramètres comportent XMLDoc, celui-ci est affiché pendant l'achèvement de code.

Exemples :

  • C++

Parameter Completion C.png

Remarque: Cette fonctionnalité utilise un serveur LSP (Language Server Protocol) pour le compilateur amélioré par Clang. Elle est asynchrone et non bloquante.
  • Delphi

Parameter Completion D.png

Conseils de code

Cette fonctionnalité affiche un conseil contenant des informations sur le symbole, telles que le type, le fichier et le numéro de ligne où il est déclaré. Vous pouvez afficher des conseils de code en déplaçant la souris au-dessus d'un identificateur dans votre code, lorsque vous travaillez dans l'éditeur de code.

Remarque:

Les conseils de code fonctionnent seulement pour Delphi quand la fonctionnalité Audit d'aide est désactivée.

Pour désactiver la fonctionnalité Audit d'aide, décochez l'option Conseil d'audit d'aide dans la boîte de dialogue Outils > Options > Editeur > Langage > Audit de code.

Exemple :

Code Hints D.png

Evaluation d'expressions de conseil

Cette fonctionnalité affiche la valeur en cours d'une variable quand vous placez le curseur dessus. Elle est disponible quand l'exécution du programme est suspendue au cours d'une session de débogage.

Exemples :

  • C++

Tooltip Expresion Evaluation C.png

  • Delphi

Tooltip Expresion Evaluation D.png

Audit de conseil

Cette fonctionnalité affiche des informations dans une fenêtre popup lorsque la souris passe au-dessus d'un symbole.

Audit de symbole dans conseil

Cette fonctionnalité affiche les informations de déclaration dans une fenêtre de conseil pour tout identificateur, quand vous faites passer le curseur au-dessus d'un symbole dans l'éditeur de code.

Exemples :

  • C++

Tooltip Symbol Insight C.png

  • Delphi

Tooltip Symbol Insight D.png

Conseil d'audit d'aide — Ctrl+Maj+H

Cette fonctionnalité affiche un conseil contenant des informations sur le symbole, telles que le type, le fichier, le numéro de ligne où il est déclaré, ainsi que la documentation XML associée au symbole (s'il y a lieu). Cela fonctionne également pour les classes génériques.

Obtenez un conseil d'audit d'aide en déplaçant la souris au-dessus d'un identificateur dans votre code, lorsque vous travaillez dans l'éditeur de code. Vous pouvez aussi l'obtenir en appuyant sur les touches Ctrl+Maj+H.

Exemples :

  • C++

Tooltip Help Insight C.png

Remarque: Uniquement disponible lorsque le compilateur classique est utilisé.
  • Delphi

Tooltip Help InsightD.png

Remarque: Le Conseil affiche l'emplacement complet de définition des unités qui ne sont pas encore liées à un projet.

Chercher la déclaration — Ctrl+Clic

Cette fonctionnalité accède à l'emplacement dans lequel un type ou une variable est défini(e).

Lorsque vous utilisez l'éditeur de code, servez-vous du raccourci Ctrl+Clic pour aller automatiquement sur le code qui définit un identificateur ou une méthode héritée.

Pour naviguer dans le code, maintenez enfoncée la touche Ctrl tout en passant la souris au-dessus du nom d'une classe, variable, propriété, méthode ou d'un autre identificateur.

Le pointeur de la souris prend la forme d'une main et l'identificateur apparaît en surbrillance et souligné. Lorsque vous cliquez sur l'identificateur en surbrillance, l'éditeur de code passe à la déclaration de l'identificateur, en ouvrant le fichier source si nécessaire. Vous pouvez faire la même chose en cliquant avec le bouton droit sur un identificateur et en choisissant Chercher la déclaration. L'appui sur Alt+Gauche vous renvoie à votre point initial de navigation.

Vous pouvez également utiliser Ctrl+Maj+flèche Haut/Bas pour vous déplacer entre la déclaration et l'implémentation d'une méthode.

La fonctionnalité Rechercher la déclaration - Ctrl+Clic fonctionne avec :

  • Les symboles, comme les variables, les méthodes, les propriétés ou d'autres identificateurs.
  • Les types, comme la classe, l'énumération, l'enregistrement ou d'autres types.
  • Les entrées uses.

Chercher la déclaration permet aussi de rechercher et d'ouvrir uniquement des unités dans le projet Chemin de recherche ou Chemin source, ou dans le produit Chemin de navigation ou Chemin de bibliothèque. La recherche s'effectue au sein des répertoires dans l'ordre suivant :

  1. Le chemin de recherche (Delphi) du projet ou le chemin d'inclusion (C++)
  2. Le chemin source du projet, défini comme le répertoire dans lequel le projet a été enregistré
  3. Le chemin de navigation global
  4. Le chemin de bibliothèque global
  5. Le chemin de bibliothèque, qui est recherché seulement si aucun projet n'est ouvert dans l'EDI

Ces chemins peuvent être modifiés en éditant les valeurs correspondantes :

Exemples :

  • C++

Find Declaration C.png

  • Delphi

Find Declaration D.png

Achèvement de bloc — Touche Entrée

L'achèvement de bloc se produit lorsque du code est manquant dans les situations suivantes :

  • Dans C++, le bloc considéré pour l'achèvement est le code entre accolades {}.
  • Dans Delphi, le bloc considéré pour l'achèvement est le code entre begin et end.

Si, alors que vous vous trouvez dans l'éditeur de code, vous appuyez sur Entrée sans fermer correctement un code, un token de fermeture est ajouté sur la première ligne vide disponible après l'emplacement du curseur.

Le menu déroulant définit le comportement de l'achèvement quand vous englobez des instructions existantes avec des symboles, comme suit :

  • Sans nouvelle ligne - Positionne le curseur après le code que vous venez de taper.
  • Avec nouvelle ligne - Positionne le curseur à l'intérieur du code que vous venez de taper.
  • Nouveaux blocs uniquement - Invoque l'achèvement seulement si vous commencez un nouveau bloc.

Achèvement de classe — Ctrl+Maj+C

L'achèvement de classe simplifie le processus de définition et d'implémentation des nouvelles classes en générant le code squelette pour les membres de classe que vous déclarez.

Positionnez le curseur à l'intérieur d'une déclaration de classe dans la section interface d'une unité et appuyez sur Ctrl+Maj+C. Toutes les déclarations de propriétés inachevées sont complétées.

Pour toutes les méthodes nécessitant une implémentation, des méthodes vides sont ajoutées à la section implementation.

L'achèvement de classe peut aussi être accompli en choisissant l'option Compléter la classe au niveau du curseur du menu contextuel de l'éditeur de code.

Audit d'erreur

La fonctionnalité Audit d'erreur souligne le code non valide nécessitant votre attention, par exemple un code non valide provoquant des erreurs (soulignement rouge), des avertissements (soulignement orange) et/ou des conseils (soulignement bleu). Vous pouvez choisir le niveau de gravité des problèmes affichés dans l'éditeur, pour n'afficher que les erreurs et pas les avertissements ou les conseils, par exemple.

En plaçant le curseur sur le texte non valide, vous affichez une fenêtre de conseil contenant la cause probable de l'erreur.

Exemples :

  • C++

Error Insight CP.png

  • Delphi

Error Insight DD.png

De plus, la liste des erreurs générées par l'expression apparaît dans le volet Erreurs de la vue Structure.

Error Insight Structure View.png

Dans la barre d'état de l'éditeur, vous pouvez accéder à une synthèse de l'audit d'erreur affichant le nombre d'erreurs, d'avertissements et/ou de conseils contenus dans le fichier en cours.

Error Insight Summary.png

Ouvrez Outils > Options > Interface utilisateur > Editeur > Langage et cliquez sur Audit d'erreur pour configurer ses propriétés.

Error Insight.png

  • Afficher les niveaux de l'audit d'erreur : détermine le niveau d'audit d'erreur à afficher dans l'éditeur de code. Vous disposez des options suivantes :
    • Aucun : choisissez cette option pour n'afficher aucun niveau d'audit d'erreur dans l'éditeur de code.
    • Erreurs uniquement : affiche uniquement les erreurs dans l'éditeur de code. Les erreurs s'affichent avec un soulignement rouge.
    • Avertissements : affiche les avertissements dans l'éditeur de code. Les avertissements s'affichent avec un soulignement orange.
    • Conseils : affiche les conseils dans l'éditeur de code. Les conseils s'affichent avec un soulignement bleu.
    • Tout : affiche tous les niveaux de code d'erreur dans l'éditeur de code.
  • Style de rendu de l'éditeur : détermine le style de soulignement parmi ces options : Classique, Vague ondulée, Ligne pleine ou Points.
  • Afficher l'audit d'erreur dans la gouttière de l'éditeur : activez/désactivez cette option pour afficher les icônes des erreurs, des avertissements et/ou des conseils à leur emplacement spécifique lorsque vous faites défiler le fichier dans l'éditeur de code.

Si vous rencontrez des problèmes avec la fonctionnalité d'audit d'erreur :

  • Fermez l'EDI.
  • Ouvrez l'éditeur du Registre.
  • Accédez au dossier HKEY_CURRENT_USER\Software\Embarcadero\BDS\21.0\Editor\Source Options\Borland.EditOptions.Pascal.
  • Supprimez la clé ErrorInsightLevel.
  • Redémarrez l'EDI.

Index pour Audit de code C++

L'index pour Audit de code C++ fournit un index pour les fonctionnalités Audit de conseil et Chercher la déclaration.

Le serveur LSP (Language Server Protocol) (cquery) traite l'ensemble du projet et construit une base de données. Comme il utilise de la CPU, il peut être désactivé avec la case à cocher Index pour Audit de code C++.

Remarque:

Ce réglage s'applique uniquement aux compilateurs C++ et améliorés par Clang.

Cette fonctionnalité utilise un serveur LSP (Language Server Protocol) pour le compilateur amélioré par Clang. Elle est asynchrone et non bloquante.

Lorsque vous utilisez des compilateurs améliorés par Clang et que la fonctionnalité Index pour Audit de code C++ est activée, le projet que vous ouvrez est indexé. Il crée aussi une base de données utilisée pour les fonctionnalités Audit de conseil et Chercher la déclaration. Il utilise le CPU et peut être désactivé en décochant la case Index pour Audit de code C++.

Conseil: N'oubliez pas que lorsque cette option est désactivée, les fonctionnalités Audit de conseil et Chercher la déclaration ne sont pas fonctionnelles. Cependant, l'achèvement de code et l'achèvement de paramètre restent fonctionnels, que l'indexation soit activée ou non.

Options avancées

Prise en charge de l'API Tools

La prise en charge de l'audit de code repose principalement sur le protocole LSP (Language Server Protocol), qui profite d'une prise en charge générique. Vous pouvez créer un nouveau serveur LSP en utilisant le dialogue ci-dessus. Toutefois, l'EDI implémente deux éléments : l'audit de code asynchrone générique et la prise en charge LSP, qui est une implémentation spécifique d'un audit de code asynchrone.

L'API Tools définit plusieurs nouveaux types et interfaces pour l'audit de code asynchrone. Le LSP utilise ces interfaces, mais vous pouvez écrire un fournisseur d'audit de code asynchrone avec l'implémentation de votre choix.

Les interfaces sont localisées dans ToolsAPI.pas :

  • IOTAAsyncCodeInsightManager est l'interface principale d'une implémentation de gestionnaire d'audit de code asynchrone générique. Elle utilise plusieurs rappels, définis juste au-dessus.
  • IOTACodeInsightUIOverride est utilisé pour redéfinir un comportement d'interface utilisateur spécifique.

Rapports de bogues et fichiers journaux

Pour activer les fichiers journaux, ouvrez le registre :

  • Créez une clé :

HKEY_CURRENT_USER\Software\Embarcadero\BDS\21.0\LSP

  • Créez une valeur DWORD appelée DelphiLSPLog avec une valeur hexadécimale $ff ou décimale 255

Les fichiers journaux se trouvent dans C:\Users\<User>\AppData\Local\Temp\DelphiLSP.

Veillez à inclure les fichiers journaux avec chaque rapport de bogues dans Quality Portal. Ils sont très utiles pour suivre la cause des problèmes.

Remarque: Les fichiers journaux incluent un code source lorsqu'une unité est modifiée dans l'EDI.

Suivant

Refactoring