Dela via


Översikt över utökningsbarhet för kodanalysregler

försedda kodanalysregler rapporterar om Transact-SQL design, namngivning och prestandavarningar i din databaskod. Om de inbyggda kodanalysreglerna inte omfattar täckning för ett specifikt T-SQL-problem eller antimönster som du vill identifiera automatiskt kan du skapa anpassade regler för databaskodanalys.

Du kanske till exempel vill skapa en anpassad regel som undviker att använda WAITFOR DELAY-instruktionen, vilket visas i Skapa anpassade kodanalysregler. Om du vill skapa anpassade regler för databaskodanalys använder du klasserna i CodeAnalysis namnområde.

Den här översikten beskriver den grundläggande arkitekturen bland de olika komponenterna i reglerna för databaskodanalys.

Komponenter för databaskodanalysregler

Följande diagram visar hur komponenter för databaskodanalysregler bearbetas:

Skärmbild av bearbetningsflödet för databaskodanalys.

När du använder funktionen för databaskodanalysregler läses alla regler in och används enligt hur du konfigurerade dem i projektet. För mer information, se Så här: Aktivera och inaktivera specifika regler för statisk analys av databaskod. Tilläggshanteraren läser också in alla anpassade regelsammansättningar som du skapade och registrerade.

En specialanpassad regelklass för kodanalys ärver från SqlCodeAnalysisRule. Den anpassade regelklassen kan komma åt användbara objekt via sin regelkörningskontext. Dessa objekt omfattar:

  • Metadata om själva regeln.
  • Dac.Model.TSqlModel som representerar databasens schema, inklusive alla modellelement, relationer mellan dessa och eventuella egenskaper för elementen.
  • För regler som undersöker specifika element ingår Dac.Model.TSqlObject som representerar schemaelementet i modellen i kontexten.
  • Många schemaobjekt har också en ScriptDom representation, som kan nås via den här kontexten. Det här är en AST-baserad representation av ett element som kan vara användbart när du försöker se potentiella syntaxproblem, till exempel förekomsten av SelectStarExpression.

För eventuella problem som hittas av regeln skapas ett Dac.CodeAnalysis.SqlRuleProblem objekt. När du skapar det här SqlRuleProblem objektet skickas relevanta Dac.Model.TSqlObject och eventuellt ett ScriptDom- representationselement till konstruktorn, och dessa används för att fastställa platsen för problemet i källkodsfilerna. I slutet av analysen skickas alla dessa problem till felhanteraren och visas i fellistan.

Införliva anpassade regler i ett SQL-projekt

Med SQL-projekten i Microsoft.Build.Sql SDK-format inkluderar du anpassade kodanalysregler i projektet genom att lägga till en paketreferens som innehåller reglerna. I följande exempel visas en paketreferens till ett anpassat kodanalysregelpaket:

<ItemGroup>
  <PackageReference Include="Your.CustomCode.AnalysisRules" Version="1.2.3" />
</ItemGroup>

Läs mer om att referera till ett kodanalysregelpaket i ett SQL-projekt i paketreferenser.