icsharpcode/NRefactory — pull request #101 by fightangel (2012-08-22 11:24:50+00:00)
Title: GSoC Project

This is my gsoc work.

## Things included are:

# Code Actions:
1. Concatenate string (convert concatenation of strings and objects to string.Format)
2. Convert explicit to implicit implementation (and reverse)
3. Convert 'if' statement to 'switch' statement (and reverse)
4. Convert 'if' statement to ternary expression (and reverse, if <=> a ? b : c)
5. Extract anonymous method to method of the containing type
6. Create overload without the selected parameter
7. Merge two nested 'if' statements
8. Put IDisposable inside 'using' construct
9. Split declaration list
10. Implement custom event accessors
11. Convert ‘as’ to type cast (and reverse)
12. Converts statement of lambda body to expression.
13. Converts expression of lambda body to statement.
14. Negate an relational expression
15. Join string literals
16. Join local variable declaration and assignment

# Code Issue Inspectors
1. Access to closure variable from anonymous method when the variable is disposed
2. Access to closure variable from anonymous method when the variable is modified externally
3. Local variable is never used
4. Parameter is never used
5. Type parameter is never used
6. Local variable is assigned but its value is never used.
7. Parameter is assigned but its value is never used.
8. Bitwise operation on enum which is not marked by [Flags] attribute
9. Compare of float numbers with equality operator
10. Local variable has the same name as a member and hides it.
11. Method parameter has the same name as a member and hides it.
12. Value assigned to a local variable or parameter is not used in any execution path.
13. Redundant 'else' keyword
14. Initializing field with default value is redundant
15. 'for' loop control variable is never modified. Usually this indicates mistype in code.
16. Possible multiple enumeration of IEnumerable
17. CS0162:Code is unreachable
18. Condition is always true or false
19. CS1717:Assignment made to same variable
20. Identical conditional branches
21. Type cast can be safely removed.
22. 'Object.ReferenceEquals' is always false because it is called with value type
23. CS0183:Given expression is always of the provided type
24. CS0184:Given expression is never of the provided type
25. Comparison of a boolean value with 'true' or 'false' constant.
26. Negative relational expression
27. Possible cast expression of incompatible type
28. Double negation is meaningless
29. Parentheses are redundant if attribute has no arguments
30. Redundant comma in array initializer
31. Function does not reach its end or a 'return' statement by any of possible execution paths.
32. 'case' label statement is redundant
33. When object creation uses object or collection initializer, empty argument list is redundant
34. Redundant empty object or collection initializer
35. Method with optional parameter is hidden by overload