Simplification code quality
Recipe ID
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplificationCodeQualityArtifactOpenRewrite.Recipes.CSharp.CodeQualitySimplify expressions and patterns in C# code.
Composite recipecsharpsimplificationcode-qualityProprietary
Usage
This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.
mod run . --recipe OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplificationCodeQualityIf the recipe isn’t available locally, install it with:
mod config recipes nuget install OpenRewrite.Recipes.CSharp.CodeQualityDefinition
This recipe runs the following recipes in order.
- Remove redundant boolean literal
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.RemoveRedundantBooleanLiteral - Simplify boolean comparison
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyBooleanComparison - Use compound assignment
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseCompoundAssignment - Simplify logical negation
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyLogicalNegation - Simplify conditional expression
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyConditionalExpression - Use coalesce expression
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseCoalesceExpression - Merge else with nested if
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.MergeElseWithNestedIf - Merge if with parent if
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.MergeIfWithParentIf - Use postfix increment/decrement
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UsePostfixIncrement - Simplify numeric comparison
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyNumericComparison - Use string.StartsWith instead of IndexOf comparison
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseStringStartsWith - Simplify Nullable<T>.HasValue
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyNullableHasValue - Use string interpolation instead of string.Format
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseStringInterpolation - Use conditional access
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseConditionalAccess - Convert 'if' to assignment
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.ConvertIfToAssignment - Use conditional throw expression
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseConditionalExpressionForThrow - Merge consecutive Where calls
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyRedundantWhereWhere - Remove unnecessary braces
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.RemoveUnnecessaryBraces - Simplify nested using statement
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyNestedUsingStatement - Use throw expression
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseThrowExpression - Use switch expression
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseSwitchExpression - Use default literal
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseDefaultLiteral - Simplify do-while(true) to while(true)
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyDoWhileToWhile - Use pattern matching instead of as
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UsePatternMatchingInsteadOfAs - Use pattern matching instead of is
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UsePatternMatchingInsteadOfIs - Simplify lazy initialization
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyLazyInitialization - Use exception filter
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseExceptionFilter - Convert anonymous method to lambda
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.ConvertAnonymousMethodToLambda - Use range operator
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseRangeOperator - Simplify negated is null pattern
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyNegatedIsNull - Use 'not' pattern instead of negation
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseNotPattern - Use string.EndsWith
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseStringEndsWith - Use short-circuit operator
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseShortCircuitOperator - Use ^ operator for boolean inequality
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseXorForBooleanInequality - Merge switch sections with equivalent content
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.MergeSwitchSections - Inline local variable
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.InlineLocalVariable - Use for statement instead of while
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseForInsteadOfWhile - Simplify coalesce expression
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyCoalesceExpression - Expression is always true or false
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.ExpressionAlwaysTrueOrFalse - Convert interpolated string to concatenation
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.ConvertInterpolatedStringToConcatenation - Use string interpolation instead of concatenation
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseStringInterpolationInsteadOfConcat - Simplify code branching
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyCodeBranching - Join string expressions
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.JoinStringExpressions - Use conditional access instead of conditional expression
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseConditionalAccessInsteadOfIf - Simplify Nullable<T> to T?
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.SimplifyNullableToShorthand - Combine 'Enumerable.Where' method chain
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.CombineWhereMethodChain - Unconstrained type parameter checked for null
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UnconstrainedTypeParamNullCheck - Use 'is' operator instead of 'as' operator
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseIsOperatorInsteadOfAs - Use anonymous function or method group
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseAnonymousFunctionOrMethodGroup - Operator is unnecessary
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UnnecessaryOperator - Inline lazy initialization
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.InlineLazyInitialization - Use Guid.Empty
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseGuidEmpty - Use DateTime.UnixEpoch
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseDateTimeUnixEpoch - Use DateTimeOffset.UnixEpoch
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseDateTimeOffsetUnixEpoch - Use TimeSpan.Zero
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseTimeSpanZero - Use string.Equals instead of == for string comparison
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseStringEquals - Use pattern matching for equality comparison
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UsePatternMatchingForEquality - Use pattern matching for inequality comparison
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UsePatternMatchingForInequality - Use pattern matching instead of HasValue
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UsePatternMatchingInsteadOfHasValue - Use 'is' pattern instead of SequenceEqual
OpenRewrite.Recipes.CSharp.CodeQuality.Simplification.UseIsPatternInsteadOfSequenceEqual