//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 FindCodeIssues(CheckCodeIssuesEventArgs ea) { var resolveScope = ea.ResolveScope(); foreach (IMethodElement element in resolveScope.GetElementEnumerator(ea.Scope,new ElementTypeFilter(LanguageElementType.Method))) { if (MethodHasIssue(element)) { foreach (TextRange range in element.Ranges) { ea.AddIssue(IssueType, (SourceRange)range, IssueMessage); } } } }
public void AddViolationIssue(CheckCodeIssuesEventArgs ea, ISourceCode sourceCode, Violation violation) { var message = string.Format("{0}: {1}", violation.Rule.CheckId, violation.Message); var csElement = violation.Element as CsElement; if (csElement == null) { ea.AddSmell(new SourceRange(violation.Line, 1, violation.Line, sourceCode.LengthOfLine(violation.Line) + 1), message, violation, 10); return; } foreach (var styleCopCodeIssue in this.issueLocator.GetCodeIssues(sourceCode, filter => ea.GetEnumerable(ea.Scope, filter), violation, csElement)) { ea.AddIssue(styleCopCodeIssue.IssueType, styleCopCodeIssue.Range, message, violation); } }
//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); } }