Comment exécuter l’analyse du code pour les pilotes
L’analyse du code pour les pilotes fournit des informations sur les éventuels défauts dans le code source. Vous pouvez exécuter manuellement l’analyse du code et exécuter automatiquement l’analyse du code avec chaque build.
Dans cette rubrique :
- Exécution de l’analyse du code
- Affichage des résultats de l’analyse du code
- Suppression du rapport des défauts
- Modification des limites d’utilisation de la pile pour l’avertissement C6262 pour les pilotes en mode noyau
- Rubriques connexes
Important
L’analyse du code pour les pilotes est disponible dans windows 24H2 WDK et EWDK, mais il est conseillé qu’il soit mis hors service à une date ultérieure.
À l’avenir, CodeQL sera l’outil d’analyse statique principal pour les pilotes. CodeQL fournit un langage de requête puissant qui traite le code comme une base de données à interroger, ce qui facilite l’écriture de requêtes pour des comportements, des modèles spécifiques, etc.
Pour plus d’informations sur l’utilisation de CodeQL, consultez CodeQL et le test du logo Static Tools.
Exécution de l’analyse du code
Pour exécuter manuellement l’analyse du code source sur le code source du pilote
- Dans Visual Studio, sélectionnez le fichier ou la solution du projet de pilote, puis sélectionnez la configuration et la plateforme du projet à analyser.
- Dans le menu Analyser ou Générer , cliquez sur Exécuter l’analyse du code sur la solution.
Pour exécuter automatiquement l’analyse du code source sur le code source du pilote avec chaque build
- Dans Visual Studio, cliquez avec le bouton droit sur le projet de pilote ou la solution dans Explorateur de solutions, puis cliquez sur Propriétés.
- Dans la boîte de dialogue propriétés du projet, cliquez sur Analyse du code.
- Dans la page Propriétés de l’analyse du code pour C/C++, sélectionnez la configuration et la plateforme du projet que vous souhaitez analyser (par exemple, Windows 8 et Win32).
- Sélectionnez Activer l’analyse du code pour C/C++ sur build.
- Sous Ensemble de règles, sélectionnez Règles recommandées par le pilote Microsoft. Il s’agit de l’ensemble de règles par défaut pour les pilotes.
- Dans le menu Générer , cliquez sur Générer la solution.
Affichage des résultats de l’analyse du code
Si des défauts possibles se trouvent dans le code source, la fenêtre Résultats de l’analyse du code affiche le numéro d’avertissement d’analyse du code et le numéro de ligne dans le fichier source où se produit le défaut.
Pour afficher les défauts
Dans la fenêtre Résultats de l’analyse du code, cliquez sur le numéro de ligne et une description du défaut s’affiche dans la fenêtre Résultats de l’analyse du code.
La fenêtre Code affiche le code source et indique où se produit le défaut.
Pour en savoir plus sur un avertissement particulier, cliquez sur l’avertissement dans la fenêtre Résultats de l’analyse du code.
Pour afficher le fichier journal d’analyse du code associé à une build
- Accédez au répertoire de votre configuration de build et de votre plateforme (par exemple,
\\Windows7Release\\x64
). - Si vous utilisez les règles recommandées, le fichier journal est appelé
vc.\*codeanalysis.xml
. Si vous créez un pilote pour Windows Server 2012, ce fichier est utilisé pour créer le journal de vérification du pilote.
Suppression du rapport des défauts
Dans certains cas, vous pouvez supprimer le rapport d’un message d’avertissement particulier ; par exemple, si l’avertissement est principalement informationnel et que vous connaissez la cause de l’erreur.
Pour supprimer les messages d’avertissement
Pour supprimer une instance d’un défaut signalé, sélectionnez le numéro de ligne et l’avertissement dans la fenêtre Résultats de l’analyse du code.
Dans la description développée de l’avertissement, cliquez sur Actions>Supprimer le message>dans la source.
Une directive d’avertissement pragma avec le spécificateur de suppression supprime l’avertissement uniquement pour la ligne de code qui suit immédiatement l’instruction d’avertissement #pragma.
#pragma warning(suppress: 6014)
Modification des limites d’utilisation de la pile pour l’avertissement C6262 pour les pilotes en mode noyau
Dans le code en mode utilisateur et en mode noyau, l’espace de pile est limité et l’échec de validation d’une page de pile provoque une exception de dépassement de capacité de pile. L’utilisation élevée de la pile est particulièrement préoccupante en mode noyau, car l’espace de pile total disponible n’est que de 12 Ko. Le code en mode noyau doit limiter de manière agressive l’utilisation de la pile.
L’outil Analyse du code émet un avertissement C6262 si plus de 1 Ko d’espace de pile est utilisé localement dans une fonction. Si vous souhaitez examiner les fonctions susceptibles d’être gourmandes en ressources, vous pouvez personnaliser ou réduire la limite de seuil de pile utilisée par C6262. Si vous réduisez la limite de seuil de pile, l’outil Analyse du code peut potentiellement trouver plus de problèmes. Vous pouvez ensuite choisir de résoudre ces problèmes d’utilisation de la pile. Par exemple, vous pouvez réduire le seuil à 400 octets pour voir si d’autres fonctions utilisent des ressources.
Pour personnaliser la limite de stacksize pour C6262
- Ouvrez le fichier projet Visual Studio (.vcxproj) pour votre pilote en mode noyau (ou composant) dans le Bloc-notes ou un autre éditeur de texte.
- Ajoutez un nouvel ItemDefinitionGroup> pour le compilateur <ClCompile>.<
- Ajoutez l’élément PREfastAdditionalOptions> et définissez les octets> stacksize<.< La valeur par défaut est stacksize1024.
<ItemDefinitionGroup>
<ClCompile>
<!-- Change stack depth for C6262 from 1024 to 400 -->
<PREfastAdditionalOptions>stacksize400</PREfastAdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
Enregistrez le fichier projet. Démarrez Visual Studio, chargez le projet de pilote mis à jour et exécutez l’analyse du code.
Pour revenir à la valeur par défaut de 1 Ko, annulez les modifications apportées au fichier projet ou modifiez la valeur de taille de la pile en stacksize1024.