Freigeben über


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

  1. Öffnen Sie die Projektmappe, die das Datenbankprojekt enthält.

  2. 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

  1. 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.

  2. Führen Sie einen der folgenden Schritte aus:

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

  1. Ö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.

  2. Wechseln Sie zum Projektverzeichnis.

  3. 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.

  4. Ü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

Namensprobleme bei Transact-SQL

Leistungsregelprobleme mit Transact-SQL