Utilisation de l'audit de code DelphiLSP avec d'autres éditeurs
DelphiLSP.exe est un serveur de langage Delphi qui implémente le protocole Language Server Protocol (LSP). Il encapsule les fonctionnalités de langage comme l'achèvement de code et l'audit d'erreur. Il est utilisé dans l'EDI, mais peut également être utilisé avec Visual Studio Code ou d'autres éditeurs qui prennent en charge le protocole LSP.
Utilisation de DelphiLSP dans Visual Studio Code
Utilisez l'extension Delphi LSP dans Visual Studio Code pour ouvrir des projets RAD Studio et effectuer des opérations. Suivez ces étapes pour ouvrir vos projets : Installez l'extension DelphiLSP pour VSCode :
- Installez RAD Studio 11.0 ou supérieur sur votre machine locale.
- Installez Visual Studio Code.
- Téléchargez et installez l'extension Delphi LSP à partir du marketplace Visual Studio Code.
- Chargez à nouveau la fenêtre Visual Studio Code ou utilisez la palette de commandes <F1> et tapez "reload window" (recharger la fenêtre).
Pour ouvrir un projet :
- Assurez-vous que Delphi crée un fichier .delphilsp.json pour le projet Delphi sur lequel vous allez travailler dans Visual Studio Code. Pour de plus amples informations, voir Référence de l'Audit de code.
- Ouvrez un dossier dans Visual Studio Code qui comporte un ou plusieurs projets.
- Accédez à Fichier > Ouvrir un dossier pour charger vos projets.
L'extension DelphiLSP utilisera le fichier .delphilsp.json dans le dossier ouvert. S'il n'y en a aucun ou plusieurs, un message vous invitant à choisir le fichier .delphilsp.json à utiliser s'affichera. Voir "Configuration manuelle des fichiers de configuration du projet" ci-dessous.
- Commencez à utiliser les fonctionnalités LSP avec votre code Delphi dans Visual Studio Code. Vous pouvez voir que les fonctionnalités de l'audit de code sont disponibles, comme dans RAD Studio. Pour plus d'informations, voir Référence de l'Audit de code.
Résolution des problèmes
Installation manuelle de l'extension DelphiLSP dans Visual Studio Code
Installez manuellement l'extension Delphi LSP dans Visual Studio Code en procédant comme suit :
- Accédez à Extensions et cliquez sur Installer à partir d'un fichier VSIX pour installer le fichier d'extension DelphiLSP (par ex. delphiLsp-x.x.x.vsix).
- Ouvrez les Paramètres utilisateur et définissez Delphi Lsp:Executable :
- Accédez à Fichier > Préférences > Paramètres
- Dans la barre de recherche, recherchez delphilsp.
- Vous devez être dans l'onglet Utilisateur.
- Définissez Delphi Lsp:Executable avec le chemin d'accès à DelphiLSP.exe
Configuration manuelle des fichiers projet
Lorsque Visual Studio Code ne contient aucun fichier de configuration ou plusieurs fichiers, une invite apparaît. Cliquez dessus pour ouvrir les paramètres de plugin.
Le fichier des paramètres doit pointer vers la configuration .delphilsp.json de votre projet.
{{Note| Configurez votre projet dans l'onglet Paramètres de l'espace de travail. Pour de plus amples informations, voir Documentation Visual Studio Code dans Paramètres utilisateur vs paramètres de l'espace de travail.
Remplissage de rapports de bogues
Les fichiers .log et .trace contiennent des informations importantes sur les opérations système. Ils permettent de les vérifier et de les analyser lorsque des erreurs ou des comportements non désirés se produisent.
Pour déboguer les problèmes et remplir des rapports de bogues :
- Dans les paramètres DelphiLSP, activez la journalisation. Définissez les modes du journal sur 255 (un masque binaire pour toutes les informations).
- Suivez la même procédure pour remplir un rapport de bogues Delphi LSP.
- Veillez à joindre le fichier .delphilsp.json que vous utilisez.
Débogage de Visual Studio Code
Dans les projets DelphiLSP, les fichiers .log ne sont pas créés, mais l'extension DelphiLSP vous permet de les vérifier via Visual Studio Code.
Pour déboguer les problèmes via Visual Studio Code :
- Ouvrez la vue de sortie via la fenêtre Visual Studio Code ou utilisez la palette de commandes <F1> et tapez "focus output view" (focaliser sur la vue de sortie).
- Sélectionnez DelphiLSP dans le menu déroulant.
- Un message du journal est envoyé à partir du serveur vers le client en temps réel.
Utilisation de DelphiLSP avec d'autres éditeurs
La documentation suivante peut être utile si vous voulez tester DelphiLSP avec d'autres éditeurs. DelphiLSP communique uniquement sur des E/S standard (console). Le serveur LSP recherchera un fichier .delphilsp.json de la même manière que lorsqu'il est utilisé à partir de VSCode.
Initialisation
LSP autorise une section initializationOptions personnalisée dans la requête d'initialisation. Voici un exemple de requête d'initialisation valide :
{
"jsonrpc":"2.0",
"id":1,
"method":"initialize",
"params":{
"processId":4711,
"rootUri":"file:///C%3A/Test",
"initializationOptions":{
"serverType":"controller",
"agentCount":2,
"returnDccFlags":true,
"returnHoverModel":true,
"storeProjectSettings":false
}
}
}
Les champs sont les suivants :
serverType
- Définit le mode de fonctionnement de DelphiLSP :
- ● "controller" : le serveur génère les sous-processus DelphiLSP agentCount (agents) qui fonctionnent avec le contrôleur pour répondre aux requêtes. Le contrôleur agit en tant que proxy entre l'EDI et les agents. Lorsqu'un agent termine ou arrête de répondre aux requêtes, le contrôleur le remplace par un nouvel agent. Les requêtes peuvent être traitées par plusieurs agents en parallèle. Remarque: Nous prenons uniquement en charge (et ne testons que) les configurations utilisant des processus basés sur deux agents maximum. L'un est utilisé pour l'audit d'erreur, et l'autre pour gérer toutes les autres requêtes LSP, comme l'achèvement de code. Il y a un agent et un validateur lint.
- ● "agent" : le serveur s'exécute en mode processus unique. Le serveur peut uniquement gérer une requête à la fois. Il n'est pas possible d'obtenir un audit d'erreur (diagnostics) dans ce mode.
- ● "linter" : le serveur s'exécute en mode processus unique. Le serveur ne peut pas traiter de requêtes de fonctionnalité de langage comme l'achèvement de code. Il est dédié à l'audit d'erreur. Les erreurs, les avertissements et les conseils sont fournis via la notification
textDocument/publishDiagnostics
- ● "controller" : le serveur génère les sous-processus DelphiLSP agentCount (agents) qui fonctionnent avec le contrôleur pour répondre aux requêtes. Le contrôleur agit en tant que proxy entre l'EDI et les agents. Lorsqu'un agent termine ou arrête de répondre aux requêtes, le contrôleur le remplace par un nouvel agent. Les requêtes peuvent être traitées par plusieurs agents en parallèle.
- La valeur par défaut est "agent". Utilisez “controller” combiné à un nombre d'agents (agentCount) défini sur 2 pour obtenir le même comportement que l'EDI Delphi et le comportement par défaut de l'extension VSCode.
agentCount
- Définit le nombre de sous-processus à générer lorsque serverType = "controller".
- ●agentCount <= 0 : agentCount sera défini sur 1
- ●agentCount = 1 : un sous-processus avec serverType = "agent" sera généré
- ●agentCount > 1 : des sous-processus [agentCount - 1] avec serverType = "agent" seront générés. Un sous-processus avec serverType = "linter" sera généré.
- La valeur par défaut est 2.
returnDccFlags
- Si true est renvoyé, les éléments de l'achèvement de code transporteront des informations supplémentaires à partir du compilateur. L'EDI utilise ces données pour afficher des types d'achèvement de code qui ne sont pas définis dans la spécification LSP, comme la procédure ou le type.
- La valeur par défaut est false.
returnHoverModel
- Si true est renvoyé,
textDocument/hoverretourne un objet JSON au lieu de text/Markdown. - La valeur par défaut est false.
storeProjectSettings
- Si true est renvoyé, les paramètres envoyés via
workspace/didChangeConfigurationseront générés et enregistrés dans%currentDelphiProject%.delphilsp.json. Lorsque DelphiLSP est utilisé avec un éditeur tiers, celui-ci peut utiliser ce fichier pour obtenir les paramètres du projet. Voir la propriété configuration.settingsFile. - Cet indicateur n'est évalué que lorsqu'il est utilisé par RAD Studio. C'est ainsi que Delphi déclenche la création du fichier .delphilsp.json.
- La valeur par défaut est false.
enableFileWatcher
- Si true est renvoyé, DelphiLSP examine les changements dans les répertoires pour détecter des modifications de fichier. Si des changements sont détectés, il est actualisé en fonction du nouveau contenu du fichier. Cela n'a d'effet que sur les fichiers qui ne sont pas ouverts dans l'éditeur. Pour les fichiers qui sont ouverts dans l'éditeur, ce dernier vérifie que le serveur LSP dispose du contenu actuel du fichier.
- La valeur par défaut est true.
Configurations
LSP autorise les paramètres personnalisés dans la notification workspace/didChangeConfiguration. Voici un exemple de notification valide :
{
"jsonrpc": "2.0",
"method": "workspace/didChangeConfiguration",
"params": {
"settings": {
"settingsFile": "file:///C%3A/Test/SampleProject.delphilsp.json"
}
}
}
settingsFile
- Il s'agit de l'URI d'un fichier de paramètres .delphilsp.json qui a été créé lorsque storeProjectSettings était activé. Cela se produit lorsque le paramètre "Générer la config LSP" de l'EDI de Delphi est activé dans les options d'audit de code.
- La capacité de chargement des paramètres à partir d'un fichier de configuration n'est active que lorsque DelphiLSP est utilisé par des éditeurs tiers. Lorsqu'il est utilisé à partir de Delphi, l'EDI communique directement.