Sdílet prostřednictvím


Analýza kódu T-SQL za účelem zjištění vad

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database v Microsoft Fabric

Kvalitu kódu Transact-SQL ve schématu databáze můžete zlepšit tak, že ho naimportujete do databázového projektu a analyzujete kód proti sadě pravidel. Můžete například chtít najít jakékoli chyby ve schématu, které jste nevytvořili a jejichž kvalita nebyla ověřena. Další informace viz přehled o analýze kódu.

Pro účely tohoto počátečního posouzení chcete najít všechny potenciální problémy v databázovém kódu. Zkontrolujete upozornění a kód, který tato upozornění způsobil. Pokud chcete zlepšit kód T-SQL, opravujete upozornění, potenciálně potlačujete upozornění a iterativně analyzujete databázový projekt.

Požadavky

Než budete moct analyzovat kód v databázovém projektu, musíte už mít projekt SQL. Další informace o použití existující databáze k vytvoření projektu naleznete v tématu Kurz: Začněte od existující databáze.

Povolení analýzy kódu SQL v sestavení projektu

Pokud chcete povolit analýzu kódu SQL v sadě Visual Studio, klikněte pravým tlačítkem na projekt v průzkumníku řešení a vyberte Vlastnosti. V kartě Analýza kódu v okně vlastností zaškrtněte políčko Povolit analýzu kódu při sestavení.

Uložte okno vlastností projektu a vraťte se do Průzkumníka řešení.

Pokud chcete povolit analýzu kódu SQL v projektu SQL, upravte přímo .sqlproj soubor. Otevřete soubor .sqlproj a přidejte prvek <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> do prvního bloku <PropertyGroup>, který povolí analýzu kódu.

Pokud chcete povolit analýzu kódu SQL v rozšíření SQL Database Projects, upravte soubor .sqlproj přímo. Otevřete soubor .sqlproj v zobrazení Exploreru nebo kliknutím pravým tlačítkem myši na projekt v zobrazení Databázové projekty a výběrem možnosti Upravitsouboru .sqlproj .

Z textového editoru přidejte prvek <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> do prvního bloku <PropertyGroup> pro povolení analýzy kódu.

Pokud chcete povolit analýzu kódu SQL v projektu SQL, upravte přímo .sqlproj soubor. Otevřete soubor .sqlproj a přidejte prvek <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> do prvního bloku <PropertyGroup>, který povolí analýzu kódu.

Analýza kódu

Pokud chcete analyzovat kód v databázovém projektu s povolenou analýzou kódu při sestavování, klikněte pravým tlačítkem na projekt v průzkumníku řešení a vyberte Sestavit.

Okno výstupu zobrazuje výsledky celkového procesu sestavení.

Kód T-SQL v databázovém projektu se analyzuje během sestavování. Chyby a upozornění z analýzy kódu se zobrazí v seznamu chyb. Pokud se seznam chyb nezobrazí, otevřete nabídku Zobrazení a vyberte seznam chyb. Poklikáním na upozornění můžete přejít na řádek kódu, který upozornění způsobil.

Pokud chcete analyzovat kód v databázovém projektu s povolenou analýzou kódu při sestavování, klikněte pravým tlačítkem na projekt v průzkumníku řešení a vyberte Sestavit.

V okně výstupu se zobrazí výsledky celkového procesu sestavení.

Kód T-SQL v databázovém projektu se analyzuje během sestavování. Chyby a upozornění z analýzy kódu se zobrazí v seznamu chyb. Pokud se seznam chyb nezobrazí, otevřete nabídku Zobrazení a vyberte seznam chyb. Poklikáním na upozornění můžete přejít na řádek kódu, který upozornění způsobil.

Pokud chcete analyzovat kód v databázovém projektu s povolenou analýzou kódu při sestavení, klikněte pravým tlačítkem na projekt v zobrazení Databázové projekty a vyberte Sestavení.

V okně výstupu se zobrazí výsledky celkového procesu sestavení a všechny chyby nebo upozornění z analýzy kódu. Soubory zadané v každém upozornění nebo chybě jsou interaktivní odkazy, které přejdou na řádek kódu, který upozornění způsobil.

Pokud chcete analyzovat kód v databázovém projektu s povolenou analýzou kódu při sestavení, spusťte příkaz dotnet build z příkazového řádku v adresáři projektu.

dotnet build MyDatabaseProject.sqlproj

Výstup příkazu zobrazí výsledky celkového procesu sestavení a případné chyby nebo upozornění z analýzy kódu.

Konfigurace pravidel analýzy kódu

Pokud chcete ve Visual Studiu zakázat nebo povolit konkrétní pravidlo, klikněte pravým tlačítkem na projekt v Průzkumníku řešení a vyberte Vlastnosti. V záložce Analýza kódu v okně vlastností vyberte pravidlo z tabulky. Pokud chcete změnit závažnost pravidla, zaškrtněte políčko pro Považovat upozornění za chybu pro toto pravidlo ze seznamu.

Uložte okno vlastností projektu a vraťte se do Průzkumníka řešení.

Pokud chcete zakázat nebo povolit konkrétní pravidlo v projektu SQL, upravte soubor .sqlproj přímo. Otevřete soubor .sqlproj a přidejte nebo upravte prvek pro SqlCodeAnalysisRules v prvním <PropertyGroup> bloku a určete pravidla, která se mají povolit nebo zakázat. Následující ukázková konfigurace zakáže dvě pravidla (SR0007 a SR0006) a přepne SR0008 tak, aby výsledkem byla chyba sestavení. Zbývající pravidla jsou ve výchozím nastavení povolená.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="1.0.0" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

Pokud chcete zakázat nebo povolit konkrétní pravidlo v rozšíření projektů služby SQL Database, upravte soubor .sqlproj přímo. Otevřete soubor .sqlproj ve zobrazení Exploreru nebo klikněte pravým tlačítkem myši na projekt ve zobrazení Databázové projekty a zvolte možnost Upravit soubor .sqlproj.

Přidejte nebo upravte prvek pro SqlCodeAnalysisRules v prvním bloku <PropertyGroup> a určete pravidla, která se mají povolit nebo zakázat. Následující ukázková konfigurace zakáže dvě pravidla (SR0007 a SR0006) a přepne SR0008 tak, aby výsledkem byla chyba sestavení. Zbývající pravidla jsou ve výchozím nastavení povolená.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="1.0.0" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

Pokud chcete zakázat nebo povolit konkrétní pravidlo v projektu SQL, upravte soubor .sqlproj přímo. Otevřete soubor .sqlproj a přidejte nebo upravte prvek pro SqlCodeAnalysisRules v prvním <PropertyGroup> bloku a určete pravidla, která se mají povolit nebo zakázat. Následující ukázková konfigurace zakáže dvě pravidla (SR0007 a SR0006) a přepne SR0008 tak, aby výsledkem byla chyba sestavení. Zbývající pravidla jsou ve výchozím nastavení povolená.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="1.0.0" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
    <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
    <SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
  </PropertyGroup>
...

Potlačení upozornění analýzy kódu

Chcete-li potlačit chybu nebo upozornění analýzy kódu pro konkrétní soubor .sql v sadě Visual Studio, klikněte pravým tlačítkem myši na upozornění v Seznamu chyb a vyberte Potlačit zprávu/y statické analýzy kódu . Výsledek analýzy kódu pro toto pravidlo a soubor .sql je potlačen a už se nezobrazuje v seznamu chyb nebo výstupu sestavení.

Poznámka

Potlačení upozornění neřeší základní problém. Varování potlačujte pouze tehdy, máte-li k tomu platný důvod.

Pokud chcete potlačit chybu nebo upozornění analýzy kódu pro konkrétní soubor .sql v projektu SQL, přidejte do projektu soubor StaticCodeAnalysis.SuppressMessages.xml. V souboru zadejte ID pravidla a soubor pro potlačení upozornění.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Pokud soubor neexistuje, vytvořte ho v kořenovém adresáři projektu. Pokud soubor již existuje, potlačte další upozornění na existující soubor StaticCodeAnalysis.SuppressMessages.xml vytvořením nového prvku <SuppressedFile><SuppressedRule /></SuppressedFile>.

Výsledek analýzy kódu pro toto pravidlo a soubor .sql je zamlčen a už se nezobrazuje ve výstupu kompilace.

Chcete-li potlačit chybu nebo upozornění analýzy kódu pro konkrétní soubor .sql v rozšíření projekty služby SQL Database, přidejte do projektu soubor StaticCodeAnalysis.SuppressMessages.xml. V souboru zadejte ID pravidla a soubor pro potlačení upozornění.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Pokud soubor neexistuje, vytvořte ho v kořenovém adresáři projektu. Pokud soubor již existuje, potlačte další upozornění na existující soubor StaticCodeAnalysis.SuppressMessages.xml vytvořením nového prvku <SuppressedFile><SuppressedRule /></SuppressedFile>.

Výsledek analýzy kódu pro pravidlo a soubor .sql je potlačen a už se nezobrazuje ve výstupu sestavení.

Pokud chcete potlačit chybu nebo upozornění analýzy kódu pro konkrétní soubor .sql v projektu SQL, přidejte do projektu soubor StaticCodeAnalysis.SuppressMessages.xml. V souboru zadejte ID pravidla a soubor pro potlačení upozornění.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Pokud soubor neexistuje, vytvořte ho v kořenovém adresáři projektu. Pokud soubor již existuje, potlačte další upozornění u již existujícího souboru StaticCodeAnalysis.SuppressMessages.xml vytvořením nového <SuppressedFile><SuppressedRule /></SuppressedFile> prvku.

Výsledek analýzy kódu pro dané pravidlo a soubor .sql je potlačen a už se nezobrazuje ve výstupu sestavení.