Delen via


Overzicht van uitbreidbaarheid van regels voor codeanalyse

De verstrekte regels voor codeanalyse geven een rapport over ontwerp-, naamgevings- en prestatiewaarschuwingen in uw Transact-SQL databasecode. Als de ingebouwde regels voor codeanalyse geen dekking bevatten voor een specifiek T-SQL-probleem of antipatroon dat u automatisch wilt detecteren, kunt u aangepaste regels voor databasecodeanalyse maken.

U kunt bijvoorbeeld een aangepaste regel maken die het gebruik van de WAITFOR DELAY-instructie vermijdt, zoals is weergegeven in Auteur aangepaste codeanalyseregels. Als u aangepaste regels voor databasecodeanalyse wilt maken, gebruikt u de klassen in de CodeAnalysis naamruimte.

Dit overzicht heeft betrekking op de basisarchitectuur van de verschillende onderdelen van regels voor databasecodeanalyse.

Onderdelen van databasecodeanalyseregels

In het volgende diagram ziet u hoe onderdelen van databasecodeanalyseregels worden verwerkt:

schermopname van de verwerkingsstroom voor databasecodeanalyse.

Wanneer u de functie regels voor databasecodeanalyse gebruikt, worden alle regels geladen en gebruikt op basis van hoe u ze in uw project hebt geconfigureerd. Voor meer informatie, zie Hoe: Specifieke regels voor statische analyse van databasecode in- en uitschakelen. Met Extension Manager worden ook aangepaste regelassembly's geladen die u hebt gemaakt en geregistreerd.

Een aangepaste regelklasse voor codeanalyse neemt over van SqlCodeAnalysisRule-. De aangepaste regelklasse heeft toegang tot nuttige objecten via de uitvoeringscontext van de regel. Deze objecten zijn onder andere:

  • Metagegevens over de regel zelf.
  • De Dac.Model.TSqlModel die het schema van de database vertegenwoordigt, inclusief alle modelelementen, relaties tussen deze en eventuele eigenschappen van de elementen.
  • Voor regels die specifieke elementen onderzoeken, wordt de Dac.Model.TSqlObject die dat schema-element vertegenwoordigt, in de context van het model opgenomen.
  • Veel schemaobjecten hebben ook een ScriptDom weergave, die toegankelijk is via deze context. Dit is een op AST gebaseerde weergave van een element dat nuttig kan zijn bij het zien van mogelijke syntaxisproblemen, zoals de aanwezigheid van SelectStarExpression-.

Er wordt een Dac.CodeAnalysis.SqlRuleProblem-object gemaakt voor eventuele problemen die door de regel zijn gevonden. Wanneer u dit SqlRuleProblem-object maakt, worden de relevante Dac.Model.TSqlObject en mogelijk een ScriptDom weergave-element doorgegeven aan de constructor. Deze worden gebruikt om de locatie van het probleem in de broncodebestanden vast te stellen. Aan het einde van de analyse worden al deze problemen doorgegeven aan Foutbeheer en weergegeven in de lijst met fouten.

Aangepaste regels opnemen in een SQL-project

Met de SQL-projecten van Microsoft.Build.Sql SDK neemt u aangepaste codeanalyseregels op in het project door een pakketverwijzing toe te voegen die de regels bevat. In het volgende voorbeeld ziet u een pakketreferentie naar een aangepast codeanalyseregelpakket:

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

Meer informatie over het verwijzen naar een codeanalyseregelspakket in een SQL-project in pakketverwijzingen.