Example #1
0
        public override LocalList <IDeclaredElement> GetMarkedFunctionsFrom(ITreeNode currentNode, IDeclaredElement containingFunction)
        {
            var result = new LocalList <IDeclaredElement>();

            switch (currentNode)
            {
            case IInvocationExpression invocationExpression when PerformanceCriticalCodeStageUtil.IsInvocationExpensive(invocationExpression):
            case IReferenceExpression referenceExpression when PerformanceCriticalCodeStageUtil.IsCameraMainUsage(referenceExpression):
            case IEqualityExpression equalityExpressionParam when PerformanceCriticalCodeStageUtil.IsNullComparisonWithUnityObject(equalityExpressionParam, out _):
                result.Add(containingFunction);

                break;
            }

            return(result);
        }
Example #2
0
            private void AnalyzeInvocationExpression(IInvocationExpression invocationExpressionParam, HotMethodAnalyzerContext context)
            {
                var reference = (invocationExpressionParam.InvokedExpression as IReferenceExpression)?.Reference;

                if (reference == null)
                {
                    return;
                }

                var declaredElement = reference.Resolve().DeclaredElement as IMethod;

                var containingType = declaredElement?.GetContainingType();

                if (containingType == null)
                {
                    return;
                }

                if (PerformanceCriticalCodeStageUtil.IsInvocationExpensive(invocationExpressionParam))
                {
                    context.MarkCurrentAsCostly();
                    myConsumer.AddHighlighting(new PerformanceInvocationHighlighting(invocationExpressionParam, reference));
                }
            }