Freigeben über


Übersicht über die Erweiterbarkeit von Code Analysis-Regeln

Der Bericht bereitgestellte Codeanalyseregeln zu Transact-SQL-Entwurfs-, Benennungs- und Leistungswarnungen in Ihrem Datenbankcode. Wenn die integrierten Regeln zur Codeanalyse ein bestimmtes T-SQL-Problem, das Sie automatisch erkennen möchten, nicht abdecken, können Sie benutzerdefinierte Regeln zur Analyse von Datenbankcode erstellen.

Beispielsweise möchten Sie möglicherweise eine benutzerdefinierte Regel erstellen, die die Verwendung der WAITFOR DELAY-Anweisung verhindert, wie unter Autorangepasste Code-Analysis-Regeln veranschaulicht wird. Verwenden Sie zum Erstellen benutzerdefinierter Regeln zur Datenbankcodeanalyse die Klassen im CodeAnalysis-Namespace.

Diese Übersicht befasst sich mit der grundlegenden Architektur der verschiedenen Komponenten der Datenbankcodeanalyseregeln.

Komponenten von Regeln zur Datenbankcodeanalyse

Das folgende Diagramm veranschaulicht die Verarbeitung der Regeln zur Datenbankcodeanalyse:

Screenshot des Verarbeitungsflusses der Datenbankcodeanalyse.

Wenn Sie das Feature für Datenbankcodeanalyseregeln verwenden, werden alle Regeln geladen und verwendet, je nachdem, wie Sie sie in Ihrem Projekt konfiguriert haben. Weitere Informationen finden Sie unter Vorgehensweise: Aktivieren und Deaktivieren bestimmter Regeln für die statische Analyse von Datenbankcode. Der Erweiterungs-Manager lädt außerdem alle benutzerdefinierten Regel-Assemblys, die von Ihnen erstellt und registriert wurden.

Eine benutzerdefinierte Klasse von Codeanalyseregeln erbt von SqlCodeAnalysisRule. Die benutzerdefinierte Regelklasse kann über ihren Regelausführungskontext auf nützliche Objekten zugreifen. Zu diesen Objekten gehören folgende:

  • Metadaten über die Regel selbst.
  • Das Dac.Model.TSqlModel, das das Schema der Datenbank darstellt, einschließlich aller Modellelemente, der Beziehungen zwischen ihnen und eventueller Eigenschaften der Elemente.
  • Für Regeln, die spezifische Elemente untersuchen, wird das Dac.Model.TSqlObject, das das Schemaelement im Modell darstellt, in den Kontext einbezogen.
  • Viele Schemaobjekte verfügen auch über eine ScriptDom-Darstellung, auf die über diesen Kontext zugegriffen werden kann. Hierbei handelt es sich um eine AST-basierte Darstellung eines Elements, die beim Erforschen potenzieller Syntaxprobleme hilfreich sein kann, wie etwa dem Vorhandensein von SelectStarExpression.

Bei Problemen, die von der Regel gefunden werden, wird ein Dac.CodeAnalysis.SqlRuleProblem-Objekt erstellt. Bei der Erstellung dieses Dac.Model.TSqlObject-Objektes werden das relevante und ein mögliches Element in der SqlRuleProblemScriptDom-Darstellung an den Konstruktor übergeben und dazu verwendet, die Position des Problems in Ihren Quellcodedateien zu bestimmen. Am Ende der Analyse werden alle genannten Probleme an den Fehler-Manager übergeben und in der Fehlerliste angezeigt.

Integrieren von benutzerdefinierten Regeln in ein SQL-Projekt

Mit den SQL-Projekten im Microsoft.Build.Sql SDK-Stil fügen Sie benutzerdefinierte Codeanalyseregeln in das Projekt ein, indem Sie einen Paketverweis hinzufügen, der die Regeln enthält.