Freigeben über


Übersicht der Erweiterbarkeit um Regeln für die Datenbank-Codeanalyse

Visual Studio-Editionen, die SQL Server Data Tools enthalten, beinhalten Regeln für die Codeanalyse, um Transact-SQL-Warnungen zu Entwurf, Benennung und Leistung in Ihrem Datenbankcode zu melden. Weitere Informationen zur Codeanalyse finden Sie unter Analysieren von Datenbankcode zum Verbessern der Codequalität.

Wenn die integrierten Regeln zur Codeanalyse ein bestimmtes Transact-SQL-Problem, das Sie berücksichtigen 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 Exemplarische Vorgehensweise: Erstellen einer benutzerdefinierten Regelassembly zur statischen Codeanalyse für SQL Server veranschaulicht wird. Verwenden Sie zum Erstellen benutzerdefinierter Regeln zur Datenbankcodeanalyse die Klassen im CodeAnalysis-Namespace.

Bevor Sie benutzerdefinierte Regeln zur Codeanalyse erstellen, sollten Sie die Architektur der verschiedenen Komponenten von Regeln zur Datenbankcodeanalyse im Grundsatz verstehen.

Komponenten von Regeln zur Datenbankcodeanalyse

Das folgende Diagramm veranschaulicht die Interaktion der Regeln zur Datenbankcodeanalyse:

Komponenten von Regeln zur Datenbankcodeanalyse

Wenn Sie die Funktion für Regeln zur Datenbankcodeanalyse verwenden, entweder durch direktes Ausführen der statischen Codeanalyse (weitere Informationen finden Sie unter Gewusst wie: Analysieren von Transact-SQL-Code auf Codefehler) oder durch Erstellen eines Builds, werden alle Regeln geladen und entsprechend ihrer Konfiguration in Ihrem Projekt verwendet. 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 Regelassemblys, die von Ihnen erstellt und registriert wurden. Weitere Informationen finden Sie unter Vorgehensweise: Installieren und Verwalten von Funktionserweiterungen.

Eine benutzerdefinierte Klasse von Codeanalyseregeln erbt von SqlCodeAnalysisRule. Die benutzerdefinierte Regelklasse kann über ihren Regelausführungskontext auf eine Reihe von nützlichen Objekten zugreifen. Dazu gehören:

  • 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 weisen darüber hinaus eine ScriptDom-Darstellung auf, 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.

Ein Dac.CodeAnalysis.SqlRuleProblem wird von der Regel erstellt, um alle von ihr möglicherweise gefundenen Probleme darzustellen. Bei der Erstellung werden das relevante Dac.Model.TSqlObject und ein mögliches Element in der ScriptDom-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.

Weitere Informationen

Erweitern der Datenbankfunktionen