Gewusst wie: Analysieren von Transact-SQL-Code auf Codefehler
Sie können den Transact-SQL-Code bei Bedarf analysieren, wenn Sie das Projekt mit der Benutzeroberfläche oder mit MSBuild erstellen. Nachdem der Code analysiert wurde, werden ein oder mehrere Fehler oder Warnungen angezeigt, wenn der Code Entwurfs-, Benennungs- oder Leistungsfehler enthalten könnte. Sie können auf diese Fehler oder die Warnungen klicken, um den betreffenden Code anzuzeigen. Sie können außerdem weitere Informationen anzeigen, um die Ursachen besser zu verstehen und entscheiden zu können, ob Sie die Fehler bzw. Warnungen unterdrücken möchten. Weitere Informationen zur Codeanalyse in Visual Studio Premium und Visual Studio Ultimate finden Sie unter Analysieren von Datenbankcode zum Verbessern der Codequalität.
Vor der Analyse des Codes empfiehlt es sich, die Regeln zu konfigurieren, die mit der Analyse ausgeführt werden. Weitere Informationen hierzu finden Sie unter Gewusst wie: Aktivieren und Deaktivieren bestimmter Regeln für die statische Analyse von Datenbankcode. Sie können unterschiedliche Regelsätze für unterschiedliche Buildkonfigurationen konfigurieren. Ihre Entwickler können einen kleineren Regelsatz ausführen, um den Vorgang auf allgemeine Probleme zu überprüfen, bevor sie ihren Code einchecken. Daraufhin können Sie nachts eine umfassendere Analyse ausführen.
Analysieren von Code in Database Edition
So analysieren Sie den Transact-SQL-Code im Datenbankprojekt
Öffnen Sie die Projektmappe, die das Datenbankprojekt enthält.
Zeigen Sie im Menü Daten auf Statische Codeanalyse, und klicken Sie auf Ausführen.
Der Code im Datenbankprojekt wird analysiert, und alle Warnungen und Fehler werden in der Fehlerliste aufgeführt.
So zeigen Sie den Quellcode an, der einen Fehler oder eine Warnung verursacht hat
Doppelklicken Sie in der Fehlerliste auf einen Fehler oder eine Warnung. Sie können auch einen Fehler oder eine Warnung markieren und die EINGABETASTE drücken.
Der Transact-SQL-Editor wird geöffnet und zeigt den Code an, auf den sich der Fehler oder die Warnung bezieht. Der Cursor wird nach Möglichkeit bei der Klausel positioniert, die den Fehler oder die Warnung verursacht hat.
Führen Sie einen der folgenden Schritte aus:
Beheben Sie das Problem sofort.
Erstellen Sie eine Arbeitsaufgabe, damit Sie oder ein anderes Teammitglied das Problem zu einem späteren Zeitpunkt beheben können.
Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen einer Arbeitsaufgabe aus einem Transact-SQL-Codefehler.
Unterdrücken Sie den Fehler oder die Warnung, wenn der Fehler oder die Warnung sicher ignoriert werden kann.
Ein Fehler oder eine Warnung wird nach dem Unterdrücken nicht mehr angezeigt, wenn der Code erneut analysiert wird. Weitere Informationen hierzu finden Sie unter Gewusst wie: Unterdrücken von Datenbank-Codeanalysewarnungen.
So zeigen Sie weitere Informationen zu einem Fehler oder einer Warnung an
Führen Sie in der Fehlerliste einen der folgenden Schritte aus:
Klicken Sie auf den Fehler oder die Warnung, und drücken Sie F1.
Klicken Sie mit der rechten Maustaste auf den Fehler oder die Warnung, und klicken Sie auf Hilfe zu Fehlern anzeigen.
Das Hilfethema zu dem Fehler bzw. der Warnung wird angezeigt. Das Thema enthält Informationen zur Ursache des Problems und gibt Auskunft darüber, wie Sie den Code korrigieren können und ob die Unterdrückung des Fehlers oder der Warnung empfehlenswert ist.
Analysieren von Code mit MSBuild
Sie können den Code mit MSBuild analysieren, wenn Sie einen umfassenderen Regelsatz bei einer Ausführung während der Nacht anwenden möchten. Sie können Regeln für jede Buildkonfiguration konfigurieren und dann die Konfiguration mit der bzw. den gewünschten Regeln angeben.
Sie können mithilfe einer Antwortdatei Befehlszeilenargumente für MSBuild bereitstellen. Die Datei kann beliebige Befehlszeilenschalter enthalten, die für MSBuild gültig sind, unter anderem auch Befehlszeilenschalter, die Projekteigenschaften überschreiben. Weitere Informationen über Antwortdateien finden Sie unter MSBuild-Antwortdateien. Weitere Informationen über Befehlszeilenoptionen für MSBuild finden Sie unter MSBuild-Befehlszeilenreferenz.
Wenn Sie den Code über eine Eingabeaufforderung analysieren, werden die Ergebnisse in eine XML-Datei mit der Bezeichnung StaticCodeAnalysis.Results.xml geschrieben. Diese Datei finden Sie im Projektordner im SQL-Unterordner. Sie können einen anderen Dateinamen angeben, indem Sie den Wert der ResultsFile-Projekteigenschaft überschreiben.
So analysieren Sie den Transact-SQL-Code im Datenbankprojekt über eine Eingabeaufforderung
Öffnen Sie ein Eingabeaufforderungsfenster.
Wichtig
Zum Ausführen von MSBuild.exe müssen Sie entweder die Eingabeaufforderung von Visual Studio verwenden oder die Batchdatei vsvars32.bat ausführen. Diese befindet sich in dem Ordner, der durch die Umgebungsvariable %VS80COMNTOOLS% angegeben wird.
Wechseln Sie zum Projektverzeichnis.
Geben Sie an einer Eingabeaufforderung eine Befehlszeile ähnlich wie im folgenden Beispiel dargestellt ein:
MSBuild /t:StaticCodeAnalysis /p:Configuration=Release DatabaseProject.dbproj
Tipp
MSBuild.exe muss sich in dem Pfad befinden, den die PATH-Umgebungsvariable angibt.
Überprüfen Sie die Ausgabe von MSBuild.exe. Die angezeigte Ausgabe ähnelt dem folgenden Beispiel:
Microsoft (R) Build Engine Version 4.0.30115.0 [Microsoft .NET Framework, Version 4.0.30115.0] Copyright (C) Microsoft Corporation 2007. All rights reserved. Build started 9/11/2008 3:38:29 PM. Project " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" on node 0 (StaticCodeAnalysis target(s)). Creating a model to represent the project... Loading project files... Building the project model and resolving object interdependencies... Validating the project model... 1 problem has been detected C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\sp_ProcedureName.proc.SQL(1,24): StaticCodeAnalysis warning : SR0014 : Microsoft.Rules.Data : Data loss might occur when casting from ASCII String(1) to NChar(1). [C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj] One problem has been detected. The results are saved in C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\sql\release\DatabaseProject.StaticCodeAnalysis.Results.xml. Done Building Project " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (StaticCodeAnalysis target(s)) -- FAILED. Build succeeded. " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (StaticCodeAnalysis target) (1) -> (DspStaticCodeAnalysis target) -> C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\sp_ProcedureName.PROC.SQL(1,24): StaticCodeAnalysis warning : SR0014 : Microsoft.Rules.Data : Data loss might occur when casting from ASCII String(1) to NChar(1). [C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj] 1 Warning(s) 0 Error(s) Time Elapsed 00:00:07.07
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Analysieren des Transact-SQL-Codes für eine vorhandene Datenbank
Konzepte
Analysieren von Datenbankcode zum Verbessern der Codequalität
Analysieren der Qualität von verwaltetem Code mit der Codeanalyse
Weitere Ressourcen
Entwurfsprobleme bei Transact-SQL