- RCS1008: disabled by default
- RCS1009: disabled by default
- RCS1010: disabled by default
- RCS1035: disabled by default
- RCS1040: enabled by default
- RCS1073: enabled by default
- RCS1017: from Warning to Info
- RCS1026: from Warning to Info
- RCS1027: from Warning to Info
- RCS1028: from Warning to Info
- RCS1030: from Warning to Info
- RCS1044: from Info to Warning
- RCS1045: from Warning to Info
- RCS1055: from Info to Hidden
- RCS1056: from Warning to Info
- RCS1073: from Hidden to Info
- RCS1076: from Info to Hidden
- RCS1081: from Warning to Info
- RCS1086: from Warning to Info
- RCS1087: from Warning to Info
- RCS1088: from Warning to Info
- RCS1094: from Warning to Info
- RCS1110: from Warning to Info
- RCS1182: from Info to Hidden
- Add analyzer ReplaceInterpolatedStringWithStringConcatenation (RCS1217).
- Add refactoring ReplaceInterpolatedStringWithStringFormat (RR0201).
- Add analyzer UnneccesaryUnsafeContext (RCS1216).
- Improve analyzer ReplaceCommentWithDocumentationComment (RCS1181) - support trailing comment.
- Rename analyzer AddBraces to AddBracesWhenExpressionSpansOverMultipleLines (RCS1001).
- Rename analyzer AddBracesToIfElse to AddBracesToIfElseWhenExpressionSpansOverMultipleLines (RCS1003).
- Rename analyzer AvoidEmbeddedStatement to AddBraces (RCS1007).
- Rename analyzer AvoidEmbeddedStatementInIfElse to AddBracesToIfElse (RCS1126).
- Add refactoring UncommentMultilineComment (RR0200).
- Add support for 'private protected' accessibility.
- Do not report unused parameter (RCS1163) when parameter name consists of underscore(s).
- Add refactoring InlineProperty (RR0198).
- Add refactoring RemoveEnumMemberValue (RR0199).
- Remove, duplicate or comment out local function.
- Change accessibility for selected members.
- Add code fixes for CS0029, CS0133, CS0201, CS0501, CS0527.
- Add analyzer AvoidInterpolatedStringWithNoInterpolatedText (RCS1214).
- Add analyzer ExpressionIsAlwaysEqualToTrueOrFalse (RCS1215).
- Add refactoring InitializeFieldFromConstructor (RR0197).
- Add code fixes for CS1503, CS1751.
- Add analyzer UnusedMemberDeclaration (RCS1213).
- Improve analyzer UnusedParameter
- Report unused parameters of lambda expressions and anonymous methods.
- Add code fixes for CS0030, CS1597.
- Add refactoring AddMemberToInterface (RR0195).
- Add refactoring MergeIfWithParentIf (RR0196).
Add code fix for CS1031 and CS8112.
- Add refactoring ReplaceInterpolatedStringWithConcatenation (RR0193).
- Add refactoring SplitDeclarationAndInitialization (RR0194).
- Add code fixes for CS0246.
- Add analyzer RemoveRedundantAssignment (RCS1212).
- Add refactoring ReplaceCommentWithDocumentationComment (RR0192).
- Add code fixes for CS0216, CS0659, CS0660, CS0661 and CS1526.
- Add analyzer ReturnTaskInsteadOfNull (RCS1210).
- Add analyzer RemoveUnnecessaryElseClause (RCS1211).
- Remove analyzer SimplifyLambdaExpressionParameterList (RCS1022).
- Replace refactoring ChangeMemberTypeAccordingToReturnExpression (RR0019) with code fix.
- Replace refactoring ChangeMemberTypeAccordingToYieldReturnExpression (RR0020) with code fix.
- Replace refactoring AddDefaultValueToReturnStatement (RR0008) with code fix.
- Add code fix for CS0126, CS0139, CS0713 and CS1750.
- Add code fixes for CS0103, CS0192, CS0403 and CS0541.
- Bug fixes.
- Remove analyzer UseCSharp6DictionaryInitializer (RCS1095)
- UseCSharp6DictionaryInitializer (RR0191)
- ReplaceIfElseWithIfReturn (RR0190)
- Add code fix for CS0021.
- ReorderTypeParameterConstraints (RCS1209)
- Add code fixes for CS0077, CS0201, CS0472, CS1623.
- ReduceIfNesting (RCS1208)
- ReduceIfNesting (RR0189)
- Improve code fixes for CS0162, CS1061.
- Add code fix for analyzer ParameterNameDiffersFromBase (RCS1168)
- UseAttributeUsageAttribute (RCS1203)
- UseEventArgsEmpty (RCS1204)
- ReorderNamedArguments (RCS1205)
- UseConditionalAccessInsteadOfConditionalExpression (RCS1206)
- UseMethodGroupInsteadOfAnonymousFunction (RCS1207)
- New code fixes for CS0139, CS0266, CS0592, CS1689.
- SimplifyBooleanExpression (RCS1199)
- CallThenByInsteadOfOrderBy (RCS1200)
- UseMethodChaining (RCS1201)
- UseConditionalAccessToAvoidNullReferenceException (RCS1202)
- New code fixes for CS0115, CS1106, CS1621, CS1988.
- MarkContainingClassAsAbstract (RR0073) has been replaced with code fix.
- FormatWhereConstraint (RR0187)
- ReplaceForEachWithForAndReverseLoop (RR0188)
Code fixes has been added for the following compiler diagnostics:
- NamespaceAlreadyContainsDefinition (CS0101)
- TypeAlreadyContainsDefinition (CS0102)
- TypeOfConditionalExpressionCannotBeDetermined (CS0173)
- OutParameterMustBeAssignedToBeforeControlLeavesCurrentMethod (CS0177)
- NewConstraintMustBeLastConstraintSpecified (CS0401)
- DuplicateConstraintForTypeParameter (CS0405)
- ConstraintClauseHasAlreadyBeenSpecified (CS0409)
- ClassOrStructConstraintMustComeBeforeAnyOtherConstraints (CS0449)
- CannotSpecifyBothConstraintClassAndClassOrStructConstraint (CS0450)
- NewConstraintCannotBeUsedWithStructConstraint (CS0451)
- TypeParameterHasSameNameAsTypeParameterFromOuterType (CS0693)
- StaticTypesCannotBeUsedAsTypeArguments (CS0718)
- PartialMethodCannotHaveAccessModifiersOrVirtualAbstractOverrideNewSealedOrExternModifiers (CS0750)
- NoDefiningDeclarationFoundForImplementingDeclarationOfPartialMethod (CS0759)
- PartialMethodsMustHaveVoidReturnType (CS0766)
- MethodHasParameterModifierThisWhichIsNotOnFirstParameter (CS1100)
- ExtensionMethodMustBeStatic (CS1105)
- ElementsDefinedInNamespaceCannotBeExplicitlyDeclaredAsPrivateProtectedOrProtectedInternal (CS1527)
- AsyncModifierCanOnlyBeUsedInMethodsThatHaveBody (CS1994)
- Add code fixes that fix 80+ compiler diagnostics (like 'CS0001')
-
Following analyzers have been replaced with code fixes:
- ReplaceReturnStatementWithExpressionStatement (RCS1115)
- AddBreakStatementToSwitchSection (RCS1116)
- AddReturnStatementThatReturnsDefaultValue (RCS1117)
- AddMissingSemicolon (RCS1122)
- MarkMemberAsStatic (RCS1125)
- ReplaceReturnWithYieldReturn (RCS1131)
- AddDocumentationComment (RCS1137)
- MarkContainingClassAsAbstract (RCS1144)
- RemoveInapplicableModifier (RCS1147)
- RemoveUnreachableCode (RCS1148)
- RemoveImplementationFromAbstractMember (RCS1149)
- MemberTypeMustMatchOverriddenMemberType (RCS1152)
- OverridingMemberCannotChangeAccessModifiers (RCS1176)
-
Following refactorings have been replaced with code fixes:
- AddBooleanComparison (RR0001)
- ExtractDeclarationFromUsingStatement (RR0042)
- MarkMemberAsStatic (RR0072)
- ReplaceCountWithLengthOrLengthWitCount (RR0122)
- ReplaceStringLiteralWithCharacterLiteral (RR0146)
- ChangeAccessibility (RR0186)
- OptimizeStringBuilderAppendCall (RCS1197)
- AvoidBoxingOfValueType (RCS1198)
- UseRegularStringLiteralInsteadOfVerbatimStringLiteral (RCS1192)
- OverridingMemberCannotChangeParamsModifier (RCS1193)
- ImplementExceptionConstructors (RCS1194)
- UseExclusiveOrOperator (RCS1195)
- CallExtensionMethodAsInstanceMethod (RCS1196)
- UseListInsteadOfYield (RR0183)
- SplitIfStatement (RR0184)
- ReplaceObjectCreationWithDefaultValue (RR0185)
- DeclareEnumValueAsCombinationOfNames (RCS1191)
- MergeStringExpressions (RCS1190)
- AddOrRemoveRegionName (RCS1189)
- RemoveRedundantAutoPropertyInitialization (RCS1188)
- MarkFieldAsConst (RCS1187)
- UseRegexInstanceInsteadOfStaticMethod (RCS1186)
- UseStringBuilderInsteadOfConcatenation (RR0182)
- InlineConstant (RR0181)
- Delete analyzer MergeLocalDeclarationWithReturnStatement (RCS1054) - Its functionality is incorporated into analyzer InlineLocalVariable (RCS1124).
- Disable analyzer FormatAccessorList (RCS1024) by default.
- Disable analyzer FormatEmptyBlock (RCS1023) by default.
- Modify analyzer RemoveEmptyRegion (RCS1091) - Change default severity from Info to Hidden.
- Modify analyzer CompositeEnumValueContainsUndefinedFlag (RCS1157) - Change default severity from Warning to Info.
- Modify analyzer RemoveRedundantParentheses (RCS1032) - Exclude following syntaxes from analyzer:
- AssignmentExpression.Right
- ForEachExpression.Expression
- EqualsValueClause.Value
- Modify refactoring CheckExpressionForNull (RR0024) - Do not add empty line.
- A lot of bug fixes and improvements.
- Improve analyzer RemoveInapplicableModifier (RCS1147) - Analyze local function.
- Improve analyzer SimplifyMethodChain (RCS1077) - Merge combination of Where and Any.
- Improve analyzer StaticMemberInGenericTypeShouldUseTypeParameter (RCS1158) - Member must be public, internal or protected internal.
- CallDebugFailInsteadOfDebugAssert (RCS1178)
- UseReturnInsteadOfAssignment (RCS1179)
- InlineLazyInitialization (RCS1180)
- ReplaceCommentWithDocumentationComment (RCS1181)
- RemoveRedundantBaseInterface (RCS1182)
- FormatInitializerWithSingleExpressionOnSingleLine (RCS1183)
- FormatConditionalExpression (RCS1184)
- AvoidSingleLineBlock (RCS1185)
- Add support for configuration file.
- Disable UseVarInsteadOfExplicitTypeWhenTypeIsNotObvious (RCS1176) by default.
- Disable UseVarInsteadOfExplicitTypeInForEach (RCS1177) by default.
- Filter list of refactorings in options.
- Bug fixes.
- Change default severity of AddExceptionToDocumentationComment (RCS1140) from Warning to Hidden.
- Change default severity of EnumMemberShouldDeclareExplicitValue (RCS1161) from Warning to Hidden.
- UseVarInsteadOfExplicitTypeWhenTypeIsNotObvious (RCS1176)
- UseVarInsteadOfExplicitTypeInForEach (RCS1177)
- InlineUsingStatic (RR0180)
- Bug fixes.
- Improved options page with a list of refactorings.
- Refactorings are displayed in WPF control instead of property grid.
- Each refactoring has an identifier 'RR....' to avoid confusion with analyzers.
- UnusedThisParameter
- ImplementIEquatableOfT
- AddTypeParameter
- SimplifyLazilyInitializedProperty
- UseIsOperatorInsteadOfAsOperator
- UseCoalesceOperatorInsteadOfIf
- RemoveRedundantAsyncAwait
- ReplaceHexadecimalLiteralWithDecimalLiteral
- WrapInElseClause
- Analyzer RemoveRedundantBraces was deleted.
- MarkFieldAsReadOnly
- UseReadOnlyAutoProperty
- ParameterNameDiffersFromBase
- OverridingMemberCannotChnageAccessModifiers
- ValueTypeCheckedForNull
- UnconstrainedTypeParameterCheckedForNull
- UnusedTypeParameter
- UnusedParameter
- SortEnumMembers
- UseStringComparison
- UseStringLengthInsteadOfComparisonWithEmptyString
- CompositeEnumValueContainsUndefinedFlag
- AvoidStaticMembersInGenericTypes
- UseGenericEventHandler
- AbstractTypeShouldNotHavePublicConstructors
- EnumMemberShouldDeclareExplicitValue
- AvoidChainOfAssginments
- ReplaceExpressionWithConstantValue
- SimplifyCoalesceExpression
- MarkContainingClassAsAbstract
- RemoveRedundantAsOperator
- UseConditionalAccess
- RemoveInapplicableModifier
- RemoveUnreachableCode
- RemoveImplementationFromAbstractMember
- CallStringConcatInsteadOfStringJoin
- RemoveRedundantCast
- MemberTypeMustMatchOverriddenMemberType
- AddEmptyLineAfterClosingBrace
- SortMemberDeclarations
- ReplaceWhileWithFor
- GenerateEnumValues
- GenerateEnumMember
- GenerateCombinedEnumMember
- BitwiseOperatorOnEnumWithoutFlagsAttribute
- ReplaceReturnWithYieldReturn
- RemoveRedundantOverridenMember
- RemoveRedundantDisposeOrCloseCall
- RemoveRedundantContinueStatement
- DeclareEnumMemberWithZeroValue
- MergeSwitchSectionsWithEquivalentContent
- AddDocumentationComment
- AddSummaryToDocumentationComment
- AddSummaryElementToDocumentationComment
- AddExceptionToDocumentationComment
- AddParameterToDocumentationComment
- AddTypeParameterToDocumentationComment
- ReplaceReturnStatementWithExpressionStatement
- AddBreakStatementToSwitchSection
- AddReturnStatementThatReturnsDefaultValue
- MarkLocalVariableAsConst
- CallFindMethodInsteadOfFirstOrDefaultMethod
- UseElementAccessInsteadOfElementAt
- UseElementAccessInsteadOfFirst
- AddMissingSemicolon
- AddParenthesesAccordingToOperatorPrecedence
- InlineLocalVariable
- MarkMemberAsStatic
- AvoidEmbeddedStatementInIfElse
- MergeLocalDeclarationWithInitialization
- UseCoalesceExpression
- RemoveRedundantFieldInitialization
- Release of package Roslynator.Analyzers 1.2.0
- Release of package CSharpAnalyzers 1.2.0
- Initial release of Roslynator 2017 and Roslynator Refactorings 2017
- MergeStringExpressions
- ReplaceForWithWhile
- MarkContainingClassAsAbstract
- MakeMemberVirtual
- ReplaceStatementWithIfStatement
- NegateIsExpression
- ReplaceCastWithAs
- SplitSwitchLabels
- CheckExpressionForNull
- CallExtensionMethodAsInstanceMethod
- ReplaceMethodGroupWithLambda
- ReplaceIfStatementWithReturnStatement
- IntroduceLocalFromExpressionStatementThatReturnsValue
- CombineEnumerableWhereMethodChain
- UseStringIsNullOrEmptyMethod
- RemoveRedundantDelegateCreation
- AddExceptionToDocumentationComment
- ReplaceNullLiteralExpressionWithDefaultExpression
- RemoveEmptyDestructor
- RemoveRedundantStringToCharArrayCall
- AddStaticModifierToAllPartialClassDeclarations
- UseCastMethodInsteadOfSelectMethod
- DeclareTypeInsideNamespace
- AddBracesToSwitchSectionWithMultipleStatements
- ReplaceEqualsExpressionWithStringIsNullOrEmpty
- ReplaceEqualsExpressionWithStringIsNullOrWhiteSpace
- FormatDocumentationSummaryOnSingleLine
- FormatDocumentationSummaryOnMultipleLines
- MarkClassAsStatic
- SimplifyIfElseStatement
- SimplifyConditionalExpression
- MergeInterpolationIntoInterpolatedString
- MergeInterpolationIntoInterpolatedString
- RemoveRedundantToStringCall
- AvoidNullLiteralExpressionOnLeftSideOfBinaryExpression
- DefaultLabelShouldBeLastLabelInSwitchSection
- IntroduceFieldToLockOn
- UseCSharp6DictionaryInitializer
- UseBitwiseOperationInsteadOfHasFlagMethod
- CopyDocumentationCommentFromBaseMember
- RemoveFileWithNoCode
- DeclareUsingDirectiveOnTopLevel
- RemoveRegion
- ReplaceAsWithCast
- ReplaceEqualsExpressionWithStringEquals
- RemoveUsingAliasDirective
- ReplaceInterpolatedStringWithInterpolationExpression
- AddEmptyLineAfterLastStatementInDoStatement
- ReplaceIfElseWithSwitch
- RemoveAllPreprocessorDirectives
- AddToMethodInvocation
- RemoveEmptyRegion
- GenerateOnEventMethod
- InlineMethod - void method with multiple statements can be inlined.
- CheckParameterForNull - refactoring can be applied to multiple parameters at once.
- AddBraces - braces can be added to if statement in last else-if.
- GenerateBaseConstructors
- PromoteLocalToParameter
- RemoveInterpolation
- UsePostfixUnaryOperatorInsteadOfAssignment
- AddConfigureAwait
- UseLinefeedAsNewline
- UseCarriageReturnAndLinefeedAsNewline
- AvoidUsageOfTab
- ReplaceMethodWithProperty and ReplacePropertyWithMethod refactorings significantly improved.
- ExtractTypeDeclarationToNewFile
- MergeLocalDeclarations
-
Entire project was renamed to Roslynator
-
Visual Studio extension C# Analyzers and Refactorings was renamed to Roslynator
-
Visual Studio extension C# Refactorings was renamed to Roslynator Refactorings
-
Some assemblies were renamed. As a result ruleset files must be updated in a following way:
- replace <Rules AnalyzerId="Pihrtsoft.CodeAnalysis.CSharp" RuleNamespace="Pihrtsoft.CodeAnalysis.CSharp">
- with <Rules AnalyzerId="Roslynator.CSharp.Analyzers" RuleNamespace="Roslynator.CSharp.Analyzers">
- "DeclareEachTypeInSeparateFile" has code fix.
- "ReplacePropertyWithAutoProperty" - property and field must be of equal type.
- "InsertInterpolation" - '{' and '}' are escaped by doubling when creating interpolated string from string literal.
- "UseExplicitTypeInsteadOfVar" and "UseVarInsteadOfExplicitType" allow 'var' for enum member expression.
- "AddDefaultAccessModifier" works with partial classes.
- "AvoidUsageOfUsingAliasDirective" has code fix.
- ReplaceIfElseWithConditionalExpression
- ReplaceConditionalExpressionWithExpression
- "RemoveRedundantEmptyLine" analyzer - empty line is allowed when it is last line in 'do' statement's body (when 'while' token is on the same line as closing brace)
- "UseExplicitTypeInsteadOfVar" and "UseVarInsteadOfExplicitType" analyzers - 'var' is allowed for 'default(T)' expression
- MergeAssignmentExpressionWithReturnStatement
- CollapseToInitializer
- IntroduceAndInitializeField
- IntroduceAndInitializeProperty
- AddRegion
- AddIfDirective
- RemoveAllStatements
- RemoveAllMembers
- AddUsingDirective
- MergeIfStatements
- AddDefaultValueToReturnStatement
- InlineMethod
- AddExpressionFromIfStatement
- RemoveAllSwitchSections
- RemoveStatementsFromSwitchSections
- AddConfigureAwait
- RemovePreprocessorDirectiveAndRelatedDirectives
- ReplaceReturnStatementWithIfStatement
- WrapStatementsInTryCatch
- WrapStatementsInIfStatement
- RemoveMemberDeclarations
- AddIdentifierToVariableDeclaration
- RemoveEmptyLines
- CommentOutMember
- CommentOutStatement
- IntializerLocalWithDefaultValue
- AddDefaultValueToParameter
- refactoring "ChangeTypeAccordingToExpression" works for field declaration
- refactoring "AddCastExpression" works for case label expression
- refactoring "FormatExpressionChain" does not format namespace
- refactoring "ReplacePropertyWithMethod" works for property with setter
- refactoring "ReverseForLoop" works for reversed for loop
- RemoveConditionFromLastElseIf
- RemoveAllXmlComments
- RemoveStatement
- DuplicateStatement
- ReplaceAnonymousMethodWithLambdaExpression
- SplitVariableDeclaration
- ReplaceCountWithLengthOrLengthWithCount
- ChangeMethodReturnTypeToVoid
- refactoring is available only when method body contains at least one statement
- refactoring is not available for async method that returns Task
- IntroduceUsingStaticDirective
- refactoring is available only when class name is selected
- ReplaceDoStatementWithWhileStatement
- ReplaceWhileStatementWithDoStatement
- IntroduceUsingStaticDirective
- ChangeMethodReturnTypeToVoid
- ReplaceEnumHasFlagWithBitwiseOperation
- refactoring "FormatBinaryExpression" is available for bitwise and/or expressions.
- refactorings for argument and argument list are also available for attribute argument and attribute argument list.
- refactorings "RemoveComment" and "RemoveAllComments" are available at comment inside trivia.
- refactoring "AddCastExpressionToArgument" handles properly params parameter.
- refactoring "ExpandPropertyAndAddBackingField" handles properly read-only auto-property.
- many analyzers renamed
- developmentDependency element added to CSharpAnalyzers.nuspec
- AddInterpolation
- SimplifyLambdaExpression
- refactorings can be enabled/disabled in Visual Studio UI (Tools - Options)
- some refactorings are available only when C# 6.0 is available.
- many refactorings renamed
- refactoring "ChangeMemberTypeAccordingToReturnExpression" improved for async method
- refactoring "AddCastToReturnExpression" improved for async method
- refactoring "CheckParameterForNull" is not available for lambda and anonymous method
- refactoring "MarkMemberAsStatic" should not be available for a constant.
- analyzer "MergeIfStatementWithContainedIfStatement" renamed to "MergeIfStatementWithNestedIfStatement"
- MarkMemberAsStatic
- MarkAllMembersAsStatic
- FormatAccessorBracesOnSingleLine
- GenerateSwitchSections
- ConvertStringLiteralToCharacterLiteral
- refactoring "ReverseForLoop" is available within 'for' keyword.
- refactoring "SwapExpressionsInBinaryExpression" is available only for logical and/or expression.
- refactoring "AddCastAccordingToParameterType" can offer more than one cast.
- refactorings "SwapParameters" and "SwapArguments" removed (these are covered by "Change signature..." dialog)
- refactorings "RemoveMember" and "DuplicateMember" are available only at opening/closing brace
- refactoring "RemoveAllRegions" is available inside #endregion directive.
- refactoring "RenameMethodAccordingToTypeName" handles properly async method.
- UseNameOfOperator analyzer:
- only quote marks (and at sign) are faded out.
- analyzer detects property name in property setter.
- SimplifyLambdaExpressionParameterList analyzer - parenthesized lambda with parameter list with a single parameter without type can be simplified to simple lambda
- UseExpressionBodiedMember analyzer
- Duplicate argument
- Add cast to return statement's expression
- Add cast to variable declaration
- Merge string literals
- Merge string literals into multiline string literal
- Convert regular string literal to verbatim string literal
- Convert verbatim string literal to regular string literal
- Convert verbatim string literal to regular string literals
- Use expression-bodied member
- "Extract expression from parentheses" refactoring is available when cursor is on opening/closing parenthesis.
- "Check parameter for null" refactoring is available for lambda expression and anonymous method.
- "Remove comment" and "Remove all comments" refactorings is available when cursor is inside xml documentation comment.
- "Convert foreach to for" refactoring is available for string expression.
- SplitDeclarationIntoMultipleDeclarations
- UseCountOrLengthPropertyInsteadOfCountMethod
- UseAnyMethodInsteadOfCountMethod
- UseCoalesceExpressionInsteadOfConditionalExpression
- UseAutoImplementedProperty
- DeclareExplicitType and DeclareImplicitType analyzers - 'var' is allowed for ThisExpression.
- "RemoveRedundantEmptyLine" analyzer - empty line can be between using directive (or extern alias) inside namespace declaration and first member declaration.
- Expand coalesce expression
- Expand event
- Swap members
- Split attributes
- Merge attributes
- Change method/property/indexer type according to yield return statement
- Notify property changed
- Add cast to assignment expression
- Format accessor braces on multiple lines
- "Remove/duplicate member" refactoring:
- triggers inside header or on closing brace (if any)
- is available for method/constructor/property/indexer/operator/event/namespace/class/struct/interface.
- "Add/remove parameter name" refactoring - argument(s) must be selected.
- "Rename variable/method/property/parameter according to type name" refactorings - predefined types are excluded.
- "Convert method to read-only property" refactoring - triggers only inside method header.
- "Convert property to method" refactoring - triggers only inside property header
- "Make method/property/indexer method" refactoring - triggers only inside method/property/indexer header
- "Convert constant to read-only field" refactoring - static keyword is added if the constant is declared in static class.
- "Convert switch to if-else chain" refactoring - there must be at least one non-default section.
- "Rename parameter according to type name" refactoring - now works for lambda's argument list.
- "Add parentheses" refactoring
- NEW - "RemoveEmptyFinallyClause" analyzer and code fix added
- NEW - "RemoveEmptyArgumentList" analyzer and code fix added
- NEW - "SimplifyLogicalNotExpression" analyzer and code fix added
- NEW - "RemoveUnnecessaryCaseLabel" analyzer and code fix added
- NEW - "RemoveRedundantDefaultSwitchSection" analyzer and code fix added
- NEW - "RemoveRedundantBaseConstructorCall" analyzer and code fix added
- NEW - "RemoveEmptyNamespaceDeclaration" analyzer and code fix added
- NEW - "SimplifyIfStatementToReturnStatement" analyzer and code fix added
- NEW - "RemoveRedundantConstructor" analyzer and code fix added
- NEW - "AvoidEmptyCatchClauseThatCatchesSystemException" analyzer and code fix added
- NEW - "FormatDeclarationBraces" analyzer and code fix added
- NEW - "SimplifyLinqMethodChain" analyzer and code fix added
- NEW - "AvoidUsageOfStringEmpty" analyzer and code fix added
- NEW - "ThrowingOfNewNotImplementedException" analyzer added
- NEW - "UseCountOrLengthPropertyInsteadOfAnyMethod" analyzer and code fix added
-
NEW - "Swap arguments" refactoring added
-
NEW - "Swap expressions" refactoring added
-
NEW - "Swap parameters" refactoring added
-
NEW - "Duplicate parameter" refactoring added
-
NEW - "Access element using '[]' instead of 'First/Last/ElementAt' method" refactoring added
-
NEW - "Introduce constructor from selected member(s)" refactoring added
-
NEW - "Change method/property/indexer type according to return statement" refactoring added
-
"Remove member" refactoring removes xml comment that belongs to a member
-
"Add boolean comparison" refactoring works for return statement in method/property/indexer
-
"Convert string literal to interpolated string" refactoring adds empty interpolation
-
Bug fixed in "Rename field according to property name" refactoring
-
Bug fixed in "Convert foreach to for" refactoring
-
NEW - "UseForStatementToCreateInfiniteLoop" analyzer and code fix added
-
NEW - "UseWhileStatementToCreateInfiniteLoop" analyzer and code fix added
-
NEW - "AvoidUsageOfDoStatementToCreateInfiniteLoop" analyzer and code fix added
-
NEW - UseStringLiteralInsteadOfInterpolatedString analyzer and code fix added
-
"RemoveRedundantEmptyLine" analyzer enhanced
-
"FormatAccessorList" analyzer now works for auto-property accessor list
-
"MergeLocalDeclarationWithReturnStatement" code fix now works when cursor is in return statement
-
"MergeIfStatementWithContainedIfStatement" code fix improved (unnecessary parentheses are not added)
-
bug fixed in "SimplifyAssignmentExpression" analyzer
- "Extract statement(s) from if statement" refactoring now works for topmost if statement that has else clause
- "Format binary expression on multiple lines" refactoring now works for a single binary expression
- "Negate binary expression" refactoring now works properly for a chain of logical and/or expressions
- "Remove parameter name from each argument" refactoring now works when any argument has parameter name
- "Expand property and add backing field" improved (accessor is on a single line)
- NEW - MergeIfStatementWithContainedIfStatement analyzer and code fix added
- NEW - DeclareEachTypeInSeparateFile analyzer added
- NEW - AvoidLockingOnPubliclyAccessibleInstance analyzer and code fix added (without batch fixer)
- NEW - SimplifyAssignmentExpression analyzer and code fix added
- NEW - AddEmptyLinesBetweenDeclarations analyzer and code fix added
- NEW - AvoidUsingAliasDirective analyzer added
- NEW - AvoidSemicolonAtEndOfDeclaration analyzer and code fix added
- UseLogicalNotOperator analyzer renamed to SimplifyBooleanComparison and improved
- RemoveRedundantBooleanLiteral analyzer now works for
&& true
and|| false
- NEW - "Add boolean comparison" refactoring added
- NEW - "Convert interpolated string to string literal" refactoring added
- NEW - "Convert string literal to interpolated string" refactoring added
- NEW - "Change 'Any/All' to 'All/Any'" refactoring added
- "Format all parameters on a single line" refactoring now works for parameter list with a single parameter
- "Convert to constant" refactoring now works only for predefined types (except object)
- "Remove comment/comments" refactorings now work for comments that are inside trivia
- "Make member abstract" refactoring now work only for non-abstract indexer/method/property that are in abstract class
- "Add/remove parameter name (to/from each argument)" refactorings now work when cursor is right behind the parameter
- Bug fixed in "Uncomment" refactoring
- Bug fixes and minor improvements
- Bug fixes
- Initial release