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

 

Gilt für: SQL Server 2014, SQL Server 2016 Preview

Visual Studio-Editionen, die SQL Server Data Tools enthalten, beinhalten Regeln für die Codeanalyse für Meldungen zu Transact-SQL-Warnungen zu Entwurf, Benennung und Leistung in Ihrem Datenbankcode.Weitere Informationen 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 kann es sinnvoll sein, eine benutzerdefinierte Regel zu erstellen, die die Verwendung der Anweisung WAITFOR DELAY verhindert, wie in Exemplarische Vorgehensweise – Erstellen einer Assembly für eine benutzerdefinierte statische Codeanalyseregel für SQL Server gezeigt.Verwenden Sie zum Erstellen benutzerdefinierter Regeln zur Datenbankcodeanalyse die Klassen im Microsoft.SqlServer.Dac.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:

Database Code Analysis Rules Components

Wenn Sie das Feature 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 nach Maßgabe ihrer Konfiguration in Ihrem Projekt verwendet.Weitere Informationen finden Sie unter Gewusst wie: 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 Gewusst wie: 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 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 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, wie etwa der Anwesenheit von SelectStarExpression, hilfreich sein kann.

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

Siehe auch

Erweitern der Datenbankfunktionen