public override void Analyze(SymbolAnalysisContext context, PXContext pxContext, PXGraphSemanticModel pxGraph) { context.CancellationToken.ThrowIfCancellationRequested(); var walker = new WalkerForGraphAnalyzer(context, pxContext, Descriptors.PX1086_ThrowingSetupNotEnteredExceptionInLongRunningOperation); CheckProcessingDelegates(pxGraph, walker, context.CancellationToken); CheckLongOperationStartDelegates(pxGraph.Symbol, walker, pxContext, context.Compilation, context.CancellationToken); }
private void CheckLongOperationStartDelegates(ISymbol symbol, WalkerForGraphAnalyzer walker, PXContext pxContext, Compilation compilation, CancellationToken cancellation) { cancellation.ThrowIfCancellationRequested(); var longOperationDelegates = GetLongOperationStartDelegates(symbol, pxContext, compilation, cancellation); foreach (var loDel in longOperationDelegates) { cancellation.ThrowIfCancellationRequested(); walker.Visit(loDel); } }
public override void Analyze(SymbolAnalysisContext context, PXContext pxContext, PXGraphSemanticModel pxGraph) { context.CancellationToken.ThrowIfCancellationRequested(); var walker = new WalkerForGraphAnalyzer(context, pxContext, Descriptors.PX1090_ThrowingSetupNotEnteredExceptionInActionHandlers); var delegateNodes = pxGraph.DeclaredActionHandlers .Where(h => h.Node != null) .Select(h => h.Node); foreach (var node in delegateNodes) { context.CancellationToken.ThrowIfCancellationRequested(); walker.Visit(node); } }
private void CheckProcessingDelegates(PXGraphSemanticModel pxGraph, WalkerForGraphAnalyzer walker, CancellationToken cancellation) { cancellation.ThrowIfCancellationRequested(); if (!pxGraph.IsProcessing) { return; } var processingViews = pxGraph.Views.Where(v => v.IsProcessing); foreach (var viewDel in processingViews) { var finallyDelegates = viewDel.FinallyProcessDelegates.Where(d => d.Node != null); foreach (var finDel in finallyDelegates) { cancellation.ThrowIfCancellationRequested(); walker.Visit(finDel.Node); } var parametersDelegates = viewDel.ParametersDelegates.Where(d => d.Node != null); foreach (var parDel in parametersDelegates) { cancellation.ThrowIfCancellationRequested(); walker.Visit(parDel.Node); } var processDelegates = viewDel.ProcessDelegates.Where(d => d.Node != null); foreach (var processDel in processDelegates) { cancellation.ThrowIfCancellationRequested(); walker.Visit(processDel.Node); } } }