private Enums.AsyncDetected DetectCPUAsynchronousUsages(InvocationExpressionSyntax methodCall, IMethodSymbol methodCallSymbol) { var methodCallName = methodCall.Expression.ToString().ToLower(); // DETECT CPU-BOUND ASYNC CALLS if (methodCallSymbol.IsThreadStart()) return Enums.AsyncDetected.Thread; else if (methodCallSymbol.IsThreadPoolQueueUserWorkItem()) return Enums.AsyncDetected.Threadpool; else if (methodCallSymbol.IsAsyncDelegate()) return Enums.AsyncDetected.AsyncDelegate; else if (methodCallSymbol.IsBackgroundWorkerMethod()) return Enums.AsyncDetected.BackgroundWorker; else if (methodCallSymbol.IsTaskCreationMethod()) return Enums.AsyncDetected.Task; else if (methodCallSymbol.IsParallelForEach()) return Enums.AsyncDetected.ParallelForEach; else if (methodCallSymbol.IsParallelFor()) return Enums.AsyncDetected.ParallelFor; else if (methodCallSymbol.IsParallelInvoke()) return Enums.AsyncDetected.ParallelInvoke; else return Enums.AsyncDetected.None; }
private Enums.AsyncDetected DetectAsynchronousUsages(InvocationExpressionSyntax methodCall, IMethodSymbol methodCallSymbol) { var methodCallName = methodCall.Expression.ToString().ToLower(); // DETECT ASYNC CALLS if (methodCallSymbol.IsThreadStart()) return Enums.AsyncDetected.Thread; else if (methodCallSymbol.IsThreadPoolQueueUserWorkItem()) return Enums.AsyncDetected.Threadpool; else if (methodCallSymbol.IsAsyncDelegate()) return Enums.AsyncDetected.AsyncDelegate; else if (methodCallSymbol.IsBackgroundWorkerMethod()) return Enums.AsyncDetected.BackgroundWorker; else if (methodCallSymbol.IsTaskCreationMethod()) return Enums.AsyncDetected.Task; //// DETECT GUI UPDATE CALLS //else if (methodCallSymbol.IsISynchronizeInvokeMethod()) // return Enums.AsyncDetected.ISynchronizeInvoke; //else if (methodCallSymbol.IsControlBeginInvoke()) // return Enums.AsyncDetected.ControlInvoke; //else if (methodCallSymbol.IsDispatcherBeginInvoke()) // return Enums.AsyncDetected.Dispatcher; // DETECT PATTERNS else if (methodCallSymbol.IsAPMBeginMethod()) return Enums.AsyncDetected.APM; else if (methodCall.IsEAPMethod()) return Enums.AsyncDetected.EAP; else if (methodCallSymbol.IsTAPMethod()) return Enums.AsyncDetected.TAP; else return Enums.AsyncDetected.None; }