Partager via


Vue d’ensemble de l’extensibilité des règles d’analyse du code

Les règles d'analyse de code fournies signalent les problèmes de conception, de dénomination et de performance de Transact-SQL dans le code de votre base de données. Si les règles d'analyse de code prédéfinies n'incluent pas la couverture d'un problème T-SQL spécifique ou d'un anti-modèle que vous souhaitez détecter automatiquement, vous pouvez créer des règles d'analyse de code de base de données personnalisées.

Par exemple, vous pourriez vouloir créer une règle personnalisée qui évite d'utiliser l'instruction WAITFOR DELAY, comme démontré dans la rubrique Créer des règles d'analyse de code personnalisées. Pour créer des règles personnalisées d’analyse du code de base de données, utilisez les classes de l’espace de noms CodeAnalysis.

Cette vue d'ensemble couvre l'architecture de base des différents composants des règles d'analyse du code des bases de données.

Composants des règles d’analyse du code de base de données

Le diagramme suivant illustre le traitement entre les composants de règles d'analyse du code de base de données :

Capture d'écran du flux de traitement de l'analyse du code de la base de données.

Lorsque vous utilisez la fonctionnalité des règles d'analyse du code de la base de données, toutes les règles sont chargées et utilisées conformément à la manière dont vous les avez configurées dans votre projet. Pour plus d’informations, consultez Procédure : activer et désactiver des règles spécifiques pour l’analyse statique du code d’une base de données. Le Gestionnaire d'extensions charge également les éventuels assemblys de règles personnalisées que vous avez créés et enregistrés.

Une classe de règle personnalisée d’analyse du code hérite de SqlCodeAnalysisRule. La classe de règle personnalisée peut accéder à des objets utiles via son contexte d'exécution de règle. Ces objets comprennent les éléments suivants :

  • Des métadonnées relatives à la règle elle-même.
  • Le modèle Dac.Model.TSqlModel représentant le schéma de la base de données, y compris tous les éléments de modèle, les relations qu’ils entretiennent et toutes les propriétés des éléments.
  • Pour les règles qui examinent des éléments spécifiques, l’objet Dac.Model.TSqlObject représentant cet élément de schéma dans le modèle est inclus dans le contexte.
  • De nombreux objets du schéma ont également une représentation ScriptDom, accessible via ce contexte. Il s’agit d’une représentation AST d’un élément qui peut être utile pour voir les éventuels problèmes de syntaxe, comme la présence de SelectStarExpression.

Pour tout problème détecté par la règle, un objet Dac.CodeAnalysis.SqlRuleProblem est créé. Lors de la création de cet objet SqlRuleProblem, le Dac.Model.TSqlObject correspondant et éventuellement un élément de représentation ScriptDom sont transmis au constructeur et sont utilisés pour déterminer l'emplacement du problème dans vos fichiers de code source. À la fin de l'analyse, tous ces problèmes sont transmis au gestionnaire d'erreurs et affichés dans la liste d'erreurs.

Incorporer des règles personnalisées dans un projet SQL

Avec les projets SQL de type Microsoft.Build.Sql SDK, vous incluez des règles d'analyse de code personnalisées dans le projet en ajoutant une référence de package qui contient les règles.