ReSharper C++ améliore Visual Studio pour les développeurs C++, en fournissant l'analyse du code à la volée, des correctifs rapides, une recherche et une navigation puissantes, la saisie automatique intelligente du code, des refactorisations, diverses options de génération de code et autres fonctionnalités pour accroître votre productivité au quotidien.
ReSharper C++ commence à analyser le code dès que vous ouvrez votre projet dans l'éditeur Visual Studio, réanalyse les fichiers pendant que vous les modifiez et détecte les problèmes et erreurs éventuels avant même la compilation.
Plus de 40 correctifs rapides sont disponibles pour résoudre instantanément la plupart des problèmes de code détectés. Chaque fois que vous voyez une ampoule sur la gauche de votre code, appuyez sur Alt+Entrée pour appliquer un correctif rapide suggéré.
Par exemple, lorsqu'une variable non initialisée est détectée, vous pouvez l'initialiser immédiatement avec
la valeur par défaut. D'autres correctifs rapides vous permettent d'ajouter des directives #include
manquantes,
ou de supprimer des qualificateurs redondants dans une instruction particulière, ou à plus grande échelle dans un fichier voire même dans la solution entière.
Un autre avantage des correctifs rapides est que vous pouvez commencer à utiliser les classes, méthodes, variables, propriétés et champs avant de les déclarer. Lorsque ReSharper C++ détecte un symbole non déclaré, il propose des correctifs rapides pour générer la déclaration de symbole correspondante en fonction de son utilisation.
Pour n'importe quelle portée donnée, fichier, projet ou solution, vous pouvez demander à ReSharper C++ d'afficher tous les problèmes de code qu'il détecte dans une fenêtre d'outil dédiée.
La fonctionnalité Find Code Issues fonctionne en arrière-plan, ce qui vous permet de continuer à éditer ou à naviguer dans votre code pendant que ReSharper C++ exécute son analyse et remplit la fenêtre de l'outil Inspection Results.
Dès que les résultats sont prêts, vous pouvez les regrouper selon divers critères et effectuer une recherche pour trouver des types de problèmes spécifiques. Vous pouvez également enregistrer et charger les rapports des résultats de Find Code Issues.
Les inspections de code ReSharper C++ sont également disponibles depuis InspectCode, un outil gratuit de ligne de commande qui permet d'exécuter des inspections ReSharper en dehors de Visual Studio.
Pour utiliser InspectCode, téléchargez et décompressez le paquet d'outils de ligne de commande et exécuter InspectCode.exe avec votre fichier de solution comme paramètre. Pour en savoir plus sur l'utilisation d'InspectCode, veuillez lire cet article.
ReSharper C++ s'intègre parfaitement à Clang-Tidy, un outil puissant d'analyse de code Open Source basé sur le compilateur Clang. L'intégration fournit les vérifications de code et les correctifs rapides.
ReSharper C++ fournit une série de paramètres de style de syntaxe que vous pouvez utiliser pour que ReSharper suive le style de code de votre choix et l'applique à l'ensemble de votre base de code.
Vous pouvez personnaliser vos préférences de style de syntaxe sur la page Code Editing | C++ | Syntax Style. La valeur de l'option sélectionnée sera utilisée à la fois pour la génération de code et pour l'application du style de code.
ReSharper C++ will highlight style violations and offer you quick-fixes to help eliminate them. Tous les correctifs rapides pour le style de syntaxe peuvent être appliqués dans la portée, y compris dans les portées locales comme les corps de fonction ou les définitions de classe.
Pour appliquer le style de syntaxe souhaité, vous pouvez utiliser le nettoyage de code ou l'action dédiée Apply Syntax Style, qui corrigera les problèmes de style de syntaxe dans la sélection, l'ensemble du fichier actuel ou un ensemble de fichiers en fonction du contexte actuel.
ReSharper C++ fournit plusieurs refactorisations courantes, parmi les Rename, Extract Method et Change Signature. De plus, il offre des dizaines d'actions contextuelles sous forme de transformations du code local disponibles avec un seul raccourci.
La modification du nom d'une classe ou d'une macro peut entraîner de nombreux problèmes si elle est effectuée manuellement. C'est pourquoi, lorsque vous invoquez la refactorisation Rename, ReSharper C++ se charge de toutes les vérifications nécessaires.
Soit toutes les modifications sont effectuées automatiquement, soit une liste de conflits à résoudre manuellement s'affiche pour vous assurer que seules les modifications nécessaires et appropriées sont effectuées.
En plus des symboles de code auxquels vous l'appliquez, la refactorisation Rename peut
renommer les fichiers liés (à la fois le fichier source et le fichier en-tête) et le texte associé dans les commentaires
et la documentation, mais aussi actualiser les utilisations dans les directives #include
.
Le refactorisation Extract Method vous aide à créer une nouvelle méthode basée sur un fragment de code sélectionné. ReSharper analyse le bloc de code sélectionné et détecte les variables qui peuvent être converties en paramètres de méthode ou qui représentent sa valeur de retour.
La refactorisation Change Signature vous permet d'appliquer une ou plusieurs modifications à la signature d'une fonction. Toutes les utilisations, implémentations et substitutions de la fonction seront mises à jour en conséquence.
La refactorisation Introduce variable vous permet de créer une nouvelle variable locale basée sur une expression sélectionnée, de l'initialiser avec l'expression, et enfin de remplacer toutes les occurrences de l'expression dans le code par des références à la variable nouvellement introduite.
En revanche, Inline variable remplace toutes les occurrences d'une variable ou d'une constante locale donnée par son initialiseur.
La refactorisation Introduce Field permet de créer un nouveau champ à partir d'une expression sélectionnée, d'affecter l'expression originale au champ dans son propre initialiseur ou dans le constructeur, et de remplacer les occurrences.
La refactorisation Introduce Namespace Alias aide à définir des noms de raccourcis pour les espaces de noms profondément imbriqués.
Dès que vous invoquez la refactorisation, elle vous suggère de définir une portée pour laquelle vous souhaitez introduire un alias d'espace de nom.
La refactorisation Introduce typedef vous permet de créer rapidement un typedef
pour le type de données
sélectionné et de remplacer ce type de données et toutes ses occurrences par le nouveau typedef créé.
La refactorisation Inline typedef fait l'inverse : elle remplace un typedef
existant par le type de données réel.
En plus des refactorisations, ReSharper C++ fournit un ensemble d'actions contextuelles : des transformations du code local qui aident généralement à basculer entre diverses options syntaxiques. Tout comme les correctifs rapides, elles sont accessibles en appuyant sur Alt+Entrée.
Par exemple, vous pouvez rapidement remplacer auto
par un type explicite ou remplacer un type par
auto
. D'autres actions contextuelles aident à fusionner des instructions if
imbriquées,
à générer des instructions case
manquantes lors de la conversion vers un enum, à substituer un appel
de macro ou un typedef
, etc.
ReSharper C++ étend les façons dont Visual Studio met en évidence la syntaxe et les éléments structurels de code correspondants, fournit sa propre implémentation de la saisie automatique du code et aide à visualiser la documentation disponible pour tout symbole C++.
ReSharper C++ reconnaît les fichiers *.c, *.cc, *.cxx, *.cpp, *.h et *.hpp dans votre solution, et met en évidence le code source dans ces fichiers selon une palette de couleurs que vous pouvez modifier à tout moment.
De plus, ReSharper C++ met en évidence divers éléments correspondants lorsque vous placez le caret au niveau d'un
élément d'une paire, qu'il s'agisse de délimiteurs correspondants,
de macros ou d'un spécificateur de format et argument dans un appel de fonction printf
.
Lorsque vous placez le caret sur l'un des points de sortie d'une fonction, d'une boucle ou d'une instruction switch
(return
,
throw
, break
etc.), ReSharper C++ met désormais automatiquement en évidence toutes les autres sorties
de fonction ou de boucle.
Dans les fichiers C++, vous pouvez utiliser la saisie automatique du code lors de l'écriture de votre code, ce qui suggère parfois des options de génération de code parmi d'autres choix.
La saisie automatique du code peut même suggérer des symboles qui ne sont pas
encore inclus dans le fichier actuel. Lorsque vous sélectionnez un symbole comme celui-ci dans la liste de saisie automatique,
la directive #include
correspondante est ajoutée automatiquement.
La fenêtre contextuelle Quick Documentation affiche la documentation basée sur les blocs de commentaires Doxygen sans vous forcer à naviguer vers la définition d'un symbole : appuyez simplement sur Ctrl+Maj+F1 dans la configuration de clavier par défaut.
Même s'il n'y a pas de documentation Doxygen disponible pour un symbole, Quick Documentation affichera la signature du symbole.
ReSharper C++ peut également afficher des info-bulles enrichies pour la mise en évidence des éléments de syntaxe dans le code C++. Les info-bulles afficheront les types de fonctions et de variables, ainsi que la documentation.
Les commentaires de documentation XML de style C# sont aussi parfois utilisés pour les symboles C++. ReSharper C++ les affiche correctement dans la fenêtre contextuelle Quick Documentation et dans l'info-bulle des informations rapides.
C++/CLI est un ensemble d'extensions du langage C++ par Microsoft pour faciliter l'interopérabilité entre le code géré et le code natif. Compte tenu de la prise en charge étendue entre les deux langages gérés et le C++, il est naturel pour ReSharper de proposer également de l'aide au niveau de l'écriture de code en C++/CLI.
Dans le code C++/CLI, vous pouvez accéder aux mêmes refactorisations et actions d'intention que dans le code C++ pur. Il est également possible de naviguer entre les univers C# et C++/CLI.
Avec ReSharper C++, se repérer dans le code source devient beaucoup plus facile. Recherchez facilement les déclarations, membres, appels de méthodes ou membres d'une hiérarchie d'héritage à l'aide de simples raccourcis.
Pour tous les symboles qui ont des déclarations et définitions séparées, ReSharper C++ affiche l'icône Navigate to declaration/definition sur la gauche (). Cliquez sur l'icône ou appuyez sur Ctrl+B pour passer rapidement de la déclaration à la définition correspondante.
D'autres options de navigation contextuelles dans ReSharper C++ incluent la navigation d'un symbole sélectionné à ses utilisations, symboles de base ou dérivés.
ReSharper C++ offre un ensemble de commandes de navigation non contextuelles, notamment Go to File, Go to Symbol, Go to File Member et Go to Everything.
Toutes ces commandes prennent en charge la recherche et le filtrage par chemin selon la convention lowerCamelCase. Par exemple, entrer
fc movie
dans la fenêtre contextuelle Go to Everything retourne la
liste des fichiers et des membres de fichier dont le nom comporte la chaîne
movie et qui appartiennent au projet FollowerC
ou à l'espace de nom FollowerConstants (tous deux correspondant à fc
).
ReSharper C++ peut vous donner une vue d'ensemble de la hiérarchie d'héritage dont fait partie tout type donné. Vous pouvez voir les types de base et les héritiers du type sélectionné et naviguer vers n'importe lequel d'entre eux en un seul clic.
De plus, ReSharper C++ est livré avec une vue hiérarchique qui sert à visualiser et à vous aider
à comprendre les dépendances introduites via des directives #include
.
Utilisez Find Usages pour rechercher toutes les références d'un symbole spécifique dans le code C++ de votre solution.
Dès que la recherche est terminée, les occurrences trouvées sont affichées dans une fenêtre d'outils avec des options de regroupement et de filtrage, ainsi qu'un panneau d'aperçu.
Avec ReSharper C++, vous pouvez voir la structure du document actuel en utilisant la fenêtre File Structure, ce qui simplifie grandement la navigation dans les fichiers volumineux.
Lorsque vous passez à un autre onglet de l'éditeur, la fenêtre de l'outil affiche la structure du fichier correspondant.
La fenêtre de l'outil To-do Explorer vous permet de visualiser, regrouper et filtrer les commentaires qui contiennent l'un des 3 modèles de tâches par défaut (Bug, Todo et Not Implemented) et tout modèle personnalisé que vous souhaitez configurer.
Si vous utilisez la licence ReSharper Ultimate complète et que vous disposez d'une solution multilingue, le To-do Explorer regroupera les tâches à effectuer dans tous les langages pris en charge : C#, VB.NET, C++, JavaScript, XAML, HTML, etc.
ReSharper C++ propose plusieurs façons de générer du code standard. En plus de déclarer et de définir des symboles en fonction de leurs utilisations existantes, il peut créer des membres de type, des blocs de code environnants et tout extrait de code dont vous avez généralement besoin dans votre base de code.
ReSharper C++ offre un moyen rapide de générer des membres manquants, des membres prédominants, des opérateurs d'égalité ou relationnels, des définitions basées sur des déclarations existantes, des fonctions de hachage et de swap et des constructeurs.
Appuyez simplement sur Alt+Ins dans l'éditeur de texte pour appeler le menu Generate et voir toutes les options disponibles.
ReSharper C++ est livré avec 29 modèles personnalisables. Certains d'entre eux sont des extraits de code ordinaire, d'autres sont spécifiquement utilisés pour entourer des sélections de code.
Vous pouvez également utiliser et créer des modèles de fichier. Appuyez sur Ctrl+Alt+Ins pour ajouter rapidement une classe au projet sur lequel vous travaillez.
Avec ReSharper C++, le formateur de code apprend de votre code existant et vos préférences de mise en forme et de style de code peuvent être partagées avec les membres de votre équipe.
ReSharper C++ vous permet de configurer et d'appliquer les règles de mise en forme du code que vous préférez utiliser lorsque vous travaillez sur une solution spécifique.
Si vous préférez, plutôt que de chercher dans toutes les options de mise en forme du code disponibles, vous pouvez sélectionner un bloc de code et configurer uniquement celles qui sont applicables à ce bloc en particulier.
Pour garantir un style de code cohérent pour toute l'équipe, vous pouvez enregistrer vos préférences de mise en forme et de nommage dans un fichier de configuration et les partager avec vos coéquipiers.
ReSharper C++ vous permet également de définir d'autres parties des normes de codage d'une équipe, comme l'ordre
des modificateurs et la valeur de préférence pour les initialiseurs de pointeur. Par exemple, vous pouvez spécifier 0
, nullptr
ou NULL
comme style d'initialiseur préféré, et ReSharper C++ respectera votre choix quand il
générera de nouveaux initialiseurs pour vous.
Utilisez ReSharper Options | Code Editing | C++ | Naming Style pour sélectionner l'un des styles de dénomination C++ prédéfinis : STL, Google, LLVM, CamelCase ou Microsoft.
Il est souvent beaucoup plus facile de personnaliser les paramètres de mise en forme en les détectant simplement à partir du code existant. Utilisez le menu ReSharper | Edit | Detect formatting settings pour que ReSharper détecte les paramètres de mise en forme du code. Vous obtiendrez la fenêtre de l'outil avec les valeurs détectées, qui peuvent être consultées et appliquées aux paramètres ReSharper de votre machine. Vous pouvez aussi les enregistrer dans une couche de paramètres partagés en équipe afin que les autres développeurs de votre équipe aient la même configuration de mise en forme du code à l'ouverture de la solution actuelle.
Un exécuteur de tests unitaires intégré à Visual Studio prend en charge les frameworks Google Test, Boost.Test, Catch et Doctest.
ReSharper C++ est livré avec un module d'exécution de tests unitaires pour Visual Studio qui prend en charge les frameworks Google Test, Boost.Test, Catch et Doctest.
Vous pouvez exécuter et déboguer des tests unitaires et ajouter des tests à différentes sessions directement depuis l'éditeur de texte grâce au menu contextuel accessible via Alt+Entrée.
ReSharper C++ fournit les fenêtres d'outils Unit Test Explorer et Unit Test Sessions pour visualiser, regrouper, filtrer et exécuter des tests unitaires, ainsi que pour créer et gérer des sessions de tests unitaires.
Si vous créez des jeux basés sur Unreal Engine, vous bénéficiez de la prise en charge spécifique d'Unreal Engine dans ReSharperC++.
ReSharper C++ suit la convention de nommage d'Unreal Engine dans toutes ses actions, notamment dans les refactorisations Introduce Variable et Rename, la génération de code pour getters et setters, et bien plus. Il surveille également les noms que vous utilisez dans votre base de code. Il exécute des inspections des incohérences avec la convention de nommage UE/0> et les met en évidence.
Quelques vérifications d'analyse du code sont également disponibles pour le code basé sur UE et ciblent notamment les macros de réflexion UE manquantes ou mal définies :
ReSharper C++ offre une intégration fluide avec UnrealHeaderTool pour vous aider à détecter davantage de problèmes concernant les métadonnées de classe Unreal Engine directement dans l'éditeur. Lorsque vous travaillez avec un projet Unreal Engine, ReSharper C++ exécute automatiquement UnrealHeaderTool sur le fichier que vous modifiez et affiche toutes les erreurs ou avertissements, comme pour les autres inspections. Regarder l'intégration d'UnrealHeaderTool à l'œuvre.
Pour vous aider à travailler facilement avec les macros de réflexion Unreal Engine, ReSharper C++ offre la possibilité de saisir automatiquement les spécificateurs de réflexion dans les macros de réflexion.
La documentation intégrée pour les spécificateurs de réflexion UE s'affiche dans la fenêtre contextuelle Quick Documentation (Ctrl+Q) lorsque le caret est placé sur un spécificateur.
ReSharper C++ identifie les RPC par mots-clés Client
, Server
ou NetMulticast
dans la déclaration UFUNCTION
. Pour de telles fonctions, ReSharper C++ sait qu'une fonction _Implementation
doit être générée, ainsi qu'une fonction _Validate
si WithValidation
est défini. Il peut générer les deux si les deux sont manquants, ou un seul s'il n'en manque qu'un.
Lorsque vous naviguez vers une définition, les deux fonctions (_Validate
et _Implementation
) sont proposées. Alternativement, ces options sont également disponibles dans le menu Alt+Entrée, sous "Related UE functions".
Lorsque vous utilisez un symbole qui n'est pas disponible dans la portée actuelle, ReSharper C++ le surligne en rouge et suggère d'ajouter le #include
manquant quand cela est possible. Lorsque le #include
est manquant dans un fichier d'en-tête, il sera inséré avant le .generated.h
, qui devrait être le dernier dans la liste des includes. Le #include
incorrectement placé est mis en évidence par l'inspection correspondante.
La refactorisation Rename dans les projets Unreal Engine met à jour la directive include .generated.h
correspondante et les fichiers associés avec les préfixes A
, F
, E
, T
, S
, et U
.
Le modèle postfix "new" pour les UCLASS
s'étend pour former un véritable appel de fonction factory (qui peut enregistrer l'objet créé dans le ramasse-miettes). Des modèles dynamiques portant les noms correspondants sont disponibles pour vous aider à générer rapidement USTRUCT/UCLASS/UENUM/UENUMCLASS
.
Les fichiers USF d'Unreal Engine sont basés sur HLSL et contiennent le code shader multiplateforme. Ces fichiers incluent généralement des chemins d'accès à des fichiers virtuels et ReSharper C++ peut travailler avec eux et prendre en charge toutes les actions habituelles.
Le kit de développement de jeux SpatialOS est une fork d'Unreal Engine 4 qui vous aide à exécuter et à gérer des jeux en ligne dans le cloud. ReSharper C++ reconnaît CrossServer, SpatialType, NonSpatialType et d'autres spécificateurs de SpatialOS. En savoir plus.
ReSharper C++ propose une prise en charge initiale pour HLSL, le langage d'ombrage de haut niveau. ReSharper C++ met en évidence le code HLSL en fonction de votre palette de couleurs par défaut et affiche des conseils d'incrustation et des infobulles pour les éléments de code, contenant des informations de type et de la documentation. Vous pouvez également rechercher des structs, des fonctions ou des paramètres dans l'ensemble de votre solution et y accéder rapidement, ainsi que des fichiers référencés et des bibliothèques standard. Et pour parfaire l'expérience HLSL, ReSharper C++ vous propose également une saisie intelligente du code, des délimiteurs de correspondance à insertion automatique, et bien plus.
Toute la puissance de l'analyse de flux de contrôle de ReSharper est désormais disponible dans les fichiers de shader HLSL, avec notamment les avertissements concernant le code inaccessible, les variables non initialisées, la redondance des sauts de flux de contrôle et des branches conditionnelles, et bien plus encore.
Essai gratuit de 30 jours disponible