public void Analyze(SymbolAnalysisContext context, PXContext pxContext, CodeAnalysisSettings codeAnalysisSettings, EventType eventType) { context.CancellationToken.ThrowIfCancellationRequested(); if (AnalyzedEventTypes.TryGetValue(eventType, out RowChangesAnalysisMode analysisMode)) { var methodSymbol = (IMethodSymbol)context.Symbol; var methodSyntax = methodSymbol.GetSyntax(context.CancellationToken) as MethodDeclarationSyntax; if (methodSyntax != null) { var semanticModel = context.Compilation.GetSemanticModel(methodSyntax.SyntaxTree, true); // Find all variables that are declared and assigned with e.Row inside the analyzed method var variablesWalker = new VariablesWalker(methodSyntax, semanticModel, pxContext, context.CancellationToken); methodSyntax.Accept(variablesWalker); // Perform analysis var diagnosticWalker = new DiagnosticWalker(context, semanticModel, pxContext, variablesWalker.Result, analysisMode, eventType); methodSyntax.Accept(diagnosticWalker); } } }
public PXConnectionScopeVisitor(DiagnosticWalker parent, PXContext pxContext) { parent.ThrowOnNull(nameof(parent)); pxContext.ThrowOnNull(nameof(pxContext)); _parent = parent; _pxContext = pxContext; }
private void DiagnoseRoutine(SourceRoutineSymbol routine) { Contract.ThrowIfNull(routine); DiagnosticWalker <VoidStruct> .Analyse(_diagnostics, routine); }