public void Scan()
 {
     _ElementType = LanguageElementType.Unknown;
     _ElementsFound = 0;
     _TopNode = null;
     CodeRush.Source.IterateNodesInSelection(NodeIterator);
 }
        private static bool elementIsLocal(IMemberElement element)
        {
            LanguageElementType elementType = element.ElementType;

            return((elementType == LanguageElementType.Variable) ||
                   (elementType == LanguageElementType.InitializedVariable) ||
                   (elementType == LanguageElementType.ImplicitVariable) ||
                   (elementType == LanguageElementType.Parameter) ||
                   (elementType == LanguageElementType.Const));
        }
        private static bool elementIsNested(IMemberElement element)
        {
            LanguageElementType elementType = element.ElementType;

            //if we are on a static field (or a constant that is not local), the element type is Variable, so we have to check if its a local variable
            //or not (if it's not, we have to treat the element as a nested element)
            if ((elementType == LanguageElementType.Variable) && (element is IFieldElement) && !(element as IFieldElement).IsLocal)
            {
                return(true);
            }

            return((elementType == LanguageElementType.Property) ||
                   (elementType == LanguageElementType.Method));
        }
 private static bool elementTypeIsSupported(LanguageElementType elementType)
 {
     return((elementType == LanguageElementType.Class) ||
            (elementType == LanguageElementType.Interface) ||
            (elementType == LanguageElementType.Method) ||
            (elementType == LanguageElementType.Property) ||
            (elementType == LanguageElementType.Struct) ||
            (elementType == LanguageElementType.Variable) ||
            (elementType == LanguageElementType.Parameter) ||
            (elementType == LanguageElementType.Const) ||
            (elementType == LanguageElementType.InitializedVariable) ||
            (elementType == LanguageElementType.ObjectCreationExpression) ||
            (elementType == LanguageElementType.ImplicitVariable));
 }
Пример #5
0
        private Member GetActiveMember(LanguageElement element)
        {
            if (element == null)
            {
                return(null);
            }
            Member member = element as Member;

            if (member != null)
            {
                LanguageElementType type = member.ElementType;
                if (((type == LanguageElementType.Method) || (type == LanguageElementType.Property)) || (type == LanguageElementType.Event))
                {
                    return(member);
                }
            }
            return(element.GetParent(LanguageElementType.Method, new LanguageElementType[] { LanguageElementType.Property, LanguageElementType.Event }) as Member);
        }
 private void NodeIterator(NodeIterationEventArgs ea)
 {
     if (_TopNode == null)
     {
         _TopNode = ea.LanguageElement;
         _ElementType = _TopNode.ElementType;
         _ElementsFound++;
     }
     else if (_TopNode.IsSibling(ea.LanguageElement))
     {
         if (IsComment(_TopNode.ElementType))
         {
             // Prioritize any other element type over comments.
             _TopNode = ea.LanguageElement;
             _ElementType = _TopNode.ElementType;
         }
         else if (_ElementType != ea.LanguageElement.ElementType && !IsComment(ea.LanguageElement.ElementType))
             _ElementType = LanguageElementType.Unknown;		// Different element types within the range.
         _ElementsFound++;
     }
 }
        public void CheckCodeIssue( CheckCodeIssuesEventArgs eventArg )
        {
            var types = new LanguageElementType[] { LanguageElementType.MethodCall };
            var elementFilter = new ElementTypeFilter( types );
            var enumerable = eventArg.GetEnumerable( eventArg.Scope, elementFilter );
            foreach ( var element in enumerable )
            {
                IMethodCallStatement methodCall = element as IMethodCallStatement;
                if ( methodCall == null )
                    continue;

                IMethodElement methodDeclaration = methodCall.GetDeclaration() as IMethodElement;
                if ( methodDeclaration == null )
                    continue;

                if ( methodDeclaration.MethodType == MethodTypeEnum.Function )
                {
                    eventArg.AddHint( methodCall.FirstNameRange, "Return value is not used" );
                }
            }
        }
Пример #8
0
        private void QueueAdd(TextDocument activeTextDocument, TypeDeclaration activeType, MultiSelect multiSelect, LanguageElementType elementType)
        {
            string codeToGenerate = GetCode(multiSelect, elementType);
            if (codeToGenerate == String.Empty)
                return;

            // TODO: Change RelativeLocation.After, DefaultLocation.Bottom parameters to instead reference fields populated from the MultiSelect options.
            SourcePoint insertionPoint = GetInsertionPoint(activeType, elementType, RelativeLocation.After, DefaultLocation.Bottom);
            activeTextDocument.QueueInsert(insertionPoint, codeToGenerate);
        }
Пример #9
0
        private SourcePoint GetInsertionPoint(TypeDeclaration activeType, LanguageElementType elementType, RelativeLocation relativeLocation, DefaultLocation defaultLocation)
        {
            LanguageElementType[] elementTypes;
            if (elementType == LanguageElementType.Variable)
            {
                elementTypes = new LanguageElementType[2];
                elementTypes[0] = LanguageElementType.Variable;
                elementTypes[1] = LanguageElementType.InitializedVariable;
            }
            else
            {
                elementTypes = new LanguageElementType[1];
                elementTypes[0] = elementType;
            }

            ElementEnumerable elementEnumerable = new ElementEnumerable(activeType, elementTypes);

            LanguageElement lastElement = null;
            foreach (LanguageElement element in elementEnumerable)
            {
                if (relativeLocation == RelativeLocation.Before)
                    return element.GetFullBlockCutRange().Top;
                else	// RelativeLocation.After...
                    lastElement = element;
            }
            if (lastElement != null)
                return lastElement.GetFullBlockCutRange().Bottom;
            if (defaultLocation == DefaultLocation.Top)
                return activeType.BlockCodeRange.Top;
            else  // Bottom...
                return activeType.BlockCodeRange.Bottom;
        }
Пример #10
0
        private string GetCode(MultiSelect multiSelect, LanguageElementType elementType)
        {
            string result = String.Empty;

            MultiSelectEnumerator allElements = new MultiSelectEnumerator(multiSelect, elementType);
            while (allElements.MoveNext())
            {
                PartialSelection partialSelection = allElements.Current as PartialSelection;
                if (partialSelection != null)
                {
                    result += partialSelection.Text;
                    partialSelection.Generated = true; // Prevents this from coming in later when LanguageElementType.Unknown is passed in.
                }
            }
            return result;
        }
 private LanguageElement FindNthElement(NodeList nodes, int count, LanguageElementType elementType)
 {
     LanguageElement lastElementFound = null;
       if (nodes == null)
         return null;
     int numFound = 0;
       foreach (LanguageElement element in nodes)
     {
         if (element.ElementType == elementType)
         {
             numFound++;
             if (numFound == count)
                 return element;
             lastElementFound = element;
         }
     }
     return lastElementFound;
 }
 private static bool elementTypeIsSupported(LanguageElementType elementType)
 {
     return (elementType == LanguageElementType.Class) ||
     (elementType == LanguageElementType.Interface) ||
     (elementType == LanguageElementType.Method) ||
     (elementType == LanguageElementType.Property) ||
     (elementType == LanguageElementType.Struct) ||
     (elementType == LanguageElementType.Variable) ||
     (elementType == LanguageElementType.Parameter) ||
     (elementType == LanguageElementType.Const) ||
     (elementType == LanguageElementType.InitializedVariable) ||
     (elementType == LanguageElementType.ObjectCreationExpression) ||
     (elementType == LanguageElementType.ImplicitVariable);
 }
 private static bool elementIsReference(LanguageElementType elementType)
 {
     return (elementType == LanguageElementType.TypeReferenceExpression) ||
     (elementType == LanguageElementType.ElementReferenceExpression) ||
     (elementType == LanguageElementType.MethodReferenceExpression);
 }
 private static bool elementIsReference(LanguageElementType elementType)
 {
     return((elementType == LanguageElementType.TypeReferenceExpression) ||
            (elementType == LanguageElementType.ElementReferenceExpression) ||
            (elementType == LanguageElementType.MethodReferenceExpression));
 }
Пример #15
0
 public static bool IsComment(LanguageElementType elementType)
 {
     return elementType == LanguageElementType.Comment || elementType == LanguageElementType.XmlDocComment;
 }
 public MultiSelectEnumerator(MultiSelect multiSelect, LanguageElementType elementType)
 {
     _MultiSelect = multiSelect;
     _ElementType = elementType;
     Reset();
 }
 public static LanguageElement FindParentByElementType(this LanguageElement current, LanguageElementType parentType)
 {
     return current.GetParents().FirstOrDefault(p => p.ElementType == parentType);            
 }
 public TypeInRangeFilter(LanguageElementType languageElementType, SourceRange selectRange)
 {
     _languageElementType = languageElementType;
     _selectRange = selectRange;
 }