示例#1
0
        //public bool AreEqual(bool p1, bool p2)
        //{
        //	if (p1 = p2)
        //		return true;
        //	p1 = p2;
        //	return p2 = p1;
        //}

        private void ipAssignmentIntended_CheckCodeIssues(object sender, CheckCodeIssuesEventArgs ea)
        {
            // Not inside the UI thread anymore.
            // Don't use CodeRush.Source.Xxxxx, in fact, don't use any CodeRush.Xxxxxx is my recommendation.
            ElementTypeFilter      assignmentExpressionFilter = new ElementTypeFilter(LanguageElementType.AssignmentExpression);
            IEnumerable <IElement> enumerable = ea.GetEnumerable(ea.Scope, assignmentExpressionFilter);

            foreach (IElement element in enumerable)
            {
                // For every LanguageElement type, there is a corresponding interface, that starts with an I.
                IAssignmentExpression assignmentExpression = element as IAssignmentExpression;
                if (assignmentExpression == null)
                {
                    continue;
                }
                TextPoint   start = assignmentExpression.LeftSide.FirstNameRange.Start;
                TextPoint   end   = assignmentExpression.RightSide.FirstNameRange.End;
                SourceRange range = new SourceRange(start, end);
                ea.AddIssue(CodeIssueType.Warning, range, cpAssignmentExpressionToEqualityCheck.CodeIssueMessage);

                // Other code we were playing with...
                //AssignmentExpression assignmentExpressionReal = LanguageElementRestorer.ConvertToLanguageElement(element) as AssignmentExpression;
                //assignmentExpressionReal.OperatorRange
                //ea.AddIssue(CodeIssueType.Warning, assignmentExpression.Range, cpAssignmentExpressionToEqualityCheck.CodeIssueMessage);
            }
        }
        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" );
                }
            }
        }
		//public bool AreEqual(bool p1, bool p2)
		//{
		//	if (p1 = p2)
		//		return true;
		//	p1 = p2;
		//	return p2 = p1;
		//}

		private void ipAssignmentIntended_CheckCodeIssues(object sender, CheckCodeIssuesEventArgs ea)
		{
			// Not inside the UI thread anymore.
			// Don't use CodeRush.Source.Xxxxx, in fact, don't use any CodeRush.Xxxxxx is my recommendation.
			ElementTypeFilter assignmentExpressionFilter = new ElementTypeFilter(LanguageElementType.AssignmentExpression);
			IEnumerable<IElement> enumerable = ea.GetEnumerable(ea.Scope, assignmentExpressionFilter);
			foreach (IElement element in enumerable)
			{
				// For every LanguageElement type, there is a corresponding interface, that starts with an I.
				IAssignmentExpression assignmentExpression = element as IAssignmentExpression;
				if (assignmentExpression == null)
					continue;
				TextPoint start = assignmentExpression.LeftSide.FirstNameRange.Start;
				TextPoint end = assignmentExpression.RightSide.FirstNameRange.End;
				SourceRange range = new SourceRange(start, end);
				ea.AddIssue(CodeIssueType.Warning, range, cpAssignmentExpressionToEqualityCheck.CodeIssueMessage);

				// Other code we were playing with...
				//AssignmentExpression assignmentExpressionReal = LanguageElementRestorer.ConvertToLanguageElement(element) as AssignmentExpression;
				//assignmentExpressionReal.OperatorRange
				//ea.AddIssue(CodeIssueType.Warning, assignmentExpression.Range, cpAssignmentExpressionToEqualityCheck.CodeIssueMessage);
			}
		}