示例#1
0
 protected override void Analyze(IReferenceExpression referenceExpression, IDaemonProcess daemonProcess, DaemonProcessKind kind,
                                 IHighlightingConsumer consumer)
 {
     if (PerformanceCriticalCodeStageUtil.IsCameraMainUsage(referenceExpression))
     {
         consumer.AddHighlighting(new UnityPerformanceCameraMainWarning(referenceExpression));
     }
 }
示例#2
0
 protected override void Analyze(IReferenceExpression referenceExpression,
                                 IHighlightingConsumer consumer, IReadOnlyCallGraphContext context)
 {
     if (PerformanceCriticalCodeStageUtil.IsCameraMainUsage(referenceExpression))
     {
         consumer.AddHighlighting(new UnityPerformanceCameraMainWarning(referenceExpression));
     }
 }
示例#3
0
 public override void ProcessBeforeInterior(ITreeNode element)
 {
     switch (element)
     {
     case IInvocationExpression invocationExpression when
         PerformanceCriticalCodeStageUtil.IsInvocationExpensive(invocationExpression):
     case IReferenceExpression referenceExpression when
         PerformanceCriticalCodeStageUtil.IsCameraMainUsage(referenceExpression):
     {
         ProcessingIsFinished = true;
         break;
     }
     }
 }
        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 IAttributesOwner attributesOwner when PerformanceCriticalCodeStageUtil.HasPerformanceSensitiveAttribute(attributesOwner):
                result.Add(containingFunction);

                break;
            }

            return(result);
        }
示例#5
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 _):
            case IFunctionDeclaration functionDeclaration when PerformanceCriticalCodeStageUtil.HasPerformanceSensitiveAttribute(functionDeclaration):
                result.Add(containingFunction);

                break;
            }

            return(result);
        }
 public void ProcessBeforeInterior(ITreeNode element)
 {
     switch (element)
     {
     case IInvocationExpression invocationExpression when
         PerformanceCriticalCodeStageUtil.IsInvocationExpensive(invocationExpression):
     case IReferenceExpression referenceExpression when
         PerformanceCriticalCodeStageUtil.IsCameraMainUsage(referenceExpression):
     case IAttributesOwnerDeclaration attributesOwnerDeclaration when
         attributesOwnerDeclaration.DeclaredElement is IAttributesOwner attributesOwner &&
         PerformanceCriticalCodeStageUtil.HasPerformanceSensitiveAttribute(attributesOwner):
     {
         IsExpensiveCodeFound = true;
         break;
     }
     }
 }