diff --git a/ChangeLog.md b/ChangeLog.md
index ca1e34008f..32bfad2543 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,30 @@
+### 3.0.1 (2020-10-19)
+
+* Add analyzer [RCS0055](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS0055.md) (Fix formatting of a binary expression chain)
+* Add analyzer [RCS0054](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS0054.md) (Fix formatting of a call chain)
+* Add analyzer [RCS0053](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS0053.md) (Fix formatting of a list)
+* Add analyzer [RCS0052](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS0052.md) (Add newline before equals sign instead of after it (or vice versa))
+* Add analyzer [RCS1248](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1248.md) (Use 'is null' pattern instead of comparison (or vice versa)) ([issue](https://github.com/JosefPihrt/Roslynator/issues/458))
+* Add analyzer [RCS1247](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1247.md) (Fix documentation comment tag)
+* Add analyzer option [RCS1207i](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1207i.md) (Convert method group to anonymous function)
+* Add analyzer option [RCS1090i](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1090i.md) (Remove call to 'ConfigureAwait')
+* Add analyzer option [RCS1018i](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1018i.md) (Remove accessibility modifiers) ([issue](https://github.com/JosefPihrt/Roslynator/issues/260))
+* Add analyzer option [RCS1014i](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1014i.md) (Use implicitly typed array)
+* Add analyzer option [RCS1014a](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1014a.md) (Use implicitly typed array (when type is obvious))
+* Add analyzer option [RCS1078i](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1078i.md) (Use string.Empty instead of "")
+* Add analyzer option [RCS1016a](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1016a.md) (Convert expression-body to block body when expression is multi-line)
+* Add analyzer option [RCS1016b](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1016b.md) (Convert expression-body to block body when declaration is multi-line)
+* Disable by default analyzer [RCS1207i](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1207i.md) (Convert method group to anonymous function)
+* Remove analyzer [RCS1219](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1219.md) (Call 'Enumerable.Skip' and 'Enumerable.Any' instead of 'Enumerable.Count')
+* Rename analyzer "Avoid 'null' on left side of binary expression" to "Constant values should be placed on right side of comparisons" [RCS1098](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1098.md)
+* Rename analyzer "Simplify boolean expression" to "Unncessary null check" [RCS1199](https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1199.md) ([issue](https://github.com/JosefPihrt/Roslynator/issues/373))
+
+* More syntax is considered as having obvious type:
+ * string literal
+ * character literal
+ * boolean literal
+ * implicit array creation that contains only expressions whose type is obvious
+
### 3.0.0 (2020-06-16)
* Update references to Roslyn API to 3.5.0
diff --git a/docs/analyzers/RCS0047.md b/docs/analyzers/RCS0047.md
index d36c2df3d4..f186213c74 100644
--- a/docs/analyzers/RCS0047.md
+++ b/docs/analyzers/RCS0047.md
@@ -1,4 +1,4 @@
-# RCS0047: Wrap and indent each node in list
+# RCS0047: \[deprecated\] Wrap and indent each node in list
| Property | Value |
| -------- | ---------- |
@@ -6,6 +6,10 @@
| Category | Formatting |
| Severity | None |
+## Summary
+
+This analyzer has been deprecated. Use analyzer [RCS0053](RCS0053.md) instead.
+
## Examples
### Code with Diagnostic
diff --git a/docs/analyzers/RCS0052.md b/docs/analyzers/RCS0052.md
new file mode 100644
index 0000000000..0474ec6989
--- /dev/null
+++ b/docs/analyzers/RCS0052.md
@@ -0,0 +1,39 @@
+# RCS0052: Add newline before equals sign instead of after it \(or vice versa\)
+
+| Property | Value |
+| -------- | ---------- |
+| Id | RCS0052 |
+| Category | Formatting |
+| Severity | None |
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+string s = // RCS0052
+ new string(' ', 4);
+```
+
+### Code with Fix
+
+```csharp
+string s
+ = new string(' ', 4);
+```
+
+## Options
+
+* [RCS0052i](RCS0052i.md) \- Add newline after equals sign instead of before it\.
+
+## Applies to
+
+* [Roslynator.Formatting.Analyzers](https://www.nuget.org/packages/Roslynator.Formatting.Analyzers)
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS0052i.md b/docs/analyzers/RCS0052i.md
new file mode 100644
index 0000000000..bc864cd64f
--- /dev/null
+++ b/docs/analyzers/RCS0052i.md
@@ -0,0 +1,37 @@
+# RCS0052i: Add newline after equals sign instead of before it
+
+| Property | Value |
+| -------- | -------------- |
+| Id | RCS0052i |
+| Category | AnalyzerOption |
+| Severity | None |
+
+This option modifies behavior of analyzer [RCS0052](RCS0052.md)\. It requires [RCS0052](RCS0052.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+string s // [|Id|]
+ = new string(' ', 4);
+```
+
+### Code with Fix
+
+```csharp
+string s =
+ new string(' ', 4);
+```
+
+## Applies to
+
+* [Roslynator.Formatting.Analyzers](https://www.nuget.org/packages/Roslynator.Formatting.Analyzers)
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS0053.md b/docs/analyzers/RCS0053.md
new file mode 100644
index 0000000000..39338279ee
--- /dev/null
+++ b/docs/analyzers/RCS0053.md
@@ -0,0 +1,133 @@
+# RCS0053: Fix formatting of a list
+
+| Property | Value |
+| -------- | ---------- |
+| Id | RCS0053 |
+| Category | Formatting |
+| Severity | None |
+
+## Summary
+
+
+ This analyzer:
+* fixes indentation of argument/parameter list and similar lists
+* formats each item in a multi-line list on a separate line
+
+Following formats are considered as valid (for a parameter list):
+```cs
+void M(object x, object y)
+{
+}
+```
+```cs
+void M(
+ object x, object y)
+{
+}
+```
+```cs
+void M(
+ object x,
+ object y)
+{
+}
+```
+
+
+## Examples
+
+### Code with Diagnostic
+
+```csharp
+void M(
+ object x,
+ object y)
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+void M(
+ object x,
+ object y)
+{
+}
+```
+
+- - -
+
+### Code with Diagnostic
+
+```csharp
+void M(object x,
+ object y)
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+void M(
+ object x,
+ object y)
+{
+}
+```
+
+- - -
+
+### Code with Diagnostic
+
+```csharp
+void M(object x,
+ object y)
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+void M(
+ object x,
+ object y)
+{
+}
+```
+
+- - -
+
+### Code with Diagnostic
+
+```csharp
+void M(
+ object x,
+ object y, object z)
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+void M(
+ object x,
+ object y,
+ object z)
+{
+}
+```
+
+## Applies to
+
+* [Roslynator.Formatting.Analyzers](https://www.nuget.org/packages/Roslynator.Formatting.Analyzers)
+
+## See Also
+
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS0054.md b/docs/analyzers/RCS0054.md
new file mode 100644
index 0000000000..73195adc23
--- /dev/null
+++ b/docs/analyzers/RCS0054.md
@@ -0,0 +1,60 @@
+# RCS0054: Fix formatting of a call chain
+
+| Property | Value |
+| -------- | ---------- |
+| Id | RCS0054 |
+| Category | Formatting |
+| Severity | None |
+
+## Summary
+
+This analyzer:
+* fixes indentation of multi-line call chain
+* formats each call on a separate line
+
+
+## Examples
+
+### Code with Diagnostic
+
+```csharp
+return [|x.M1() // RCS0054
+ .M2().M3()|];
+```
+
+### Code with Fix
+
+```csharp
+return [|x.M1()
+ .M2()
+ .M3()|];
+```
+
+- - -
+
+### Code with Diagnostic
+
+```csharp
+return [|x.M1() // RCS0054
+.M2()
+.M3()|];
+```
+
+### Code with Fix
+
+```csharp
+return [|x.M1()
+ .M2()
+ .M3()|];
+```
+
+## Applies to
+
+* [Roslynator.Formatting.Analyzers](https://www.nuget.org/packages/Roslynator.Formatting.Analyzers)
+
+## See Also
+
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS0055.md b/docs/analyzers/RCS0055.md
new file mode 100644
index 0000000000..1d5336d4c1
--- /dev/null
+++ b/docs/analyzers/RCS0055.md
@@ -0,0 +1,68 @@
+# RCS0055: Fix formatting of a binary expression chain
+
+| Property | Value |
+| -------- | ---------- |
+| Id | RCS0055 |
+| Category | Formatting |
+| Severity | None |
+
+## Summary
+
+This analyzer:
+ * fixes indentation of multi-line binary expression chain
+ * formats each expression on a separate line
+
+
+## Examples
+
+### Code with Diagnostic
+
+```csharp
+if (x && y // RCS0055
+ && z)
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+if (x
+ && y
+ && z)
+{
+}
+```
+
+- - -
+
+### Code with Diagnostic
+
+```csharp
+if (x // RCS0055
+&& y
+&& z)
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+if (x
+ && y
+ && z)
+{
+}
+```
+
+## Applies to
+
+* [Roslynator.Formatting.Analyzers](https://www.nuget.org/packages/Roslynator.Formatting.Analyzers)
+
+## See Also
+
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1014.md b/docs/analyzers/RCS1014.md
index 1ca4a85954..ca5410f21d 100644
--- a/docs/analyzers/RCS1014.md
+++ b/docs/analyzers/RCS1014.md
@@ -1,4 +1,4 @@
-# RCS1014: Avoid implicitly\-typed array
+# RCS1014: Use explicitly typed array \(or vice versa\)
| Property | Value |
| -------- | ----------- |
@@ -11,17 +11,23 @@
### Code with Diagnostic
```csharp
-var items = new[] { "" };
+var items = new[] { "a", B };
```
### Code with Fix
```csharp
-var items = new string[] { "" };
+var items = new string[] { "a", B };
```
+## Options
+
+* [RCS1014a](RCS1014a.md) \- Use implicitly typed array \(when type is obvious\)\.
+* [RCS1014i](RCS1014i.md) \- Use implicitly typed array\.
+
## See Also
+* [Analyzer Options](../AnalyzerOptions.md)
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1014a.md b/docs/analyzers/RCS1014a.md
new file mode 100644
index 0000000000..e089ffc435
--- /dev/null
+++ b/docs/analyzers/RCS1014a.md
@@ -0,0 +1,31 @@
+# RCS1014a: Use implicitly typed array \(when type is obvious\)
+
+| Property | Value |
+| -------- | -------------- |
+| Id | RCS1014a |
+| Category | AnalyzerOption |
+| Severity | None |
+
+This option modifies behavior of analyzer [RCS1014](RCS1014.md)\. It requires [RCS1014](RCS1014.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+var items = new string[] { "a", "b" };
+```
+
+### Code with Fix
+
+```csharp
+var items = new[] { "a", "b" };
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1014i.md b/docs/analyzers/RCS1014i.md
new file mode 100644
index 0000000000..b55c531b08
--- /dev/null
+++ b/docs/analyzers/RCS1014i.md
@@ -0,0 +1,31 @@
+# RCS1014i: Use implicitly typed array
+
+| Property | Value |
+| -------- | -------------- |
+| Id | RCS1014i |
+| Category | AnalyzerOption |
+| Severity | None |
+
+This option modifies behavior of analyzer [RCS1014](RCS1014.md)\. It requires [RCS1014](RCS1014.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+var items = new string[] { A, B };
+```
+
+### Code with Fix
+
+```csharp
+var items = new[] { A, B };
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1016.md b/docs/analyzers/RCS1016.md
index 6be2ab18eb..41d69d4b05 100644
--- a/docs/analyzers/RCS1016.md
+++ b/docs/analyzers/RCS1016.md
@@ -1,4 +1,4 @@
-# RCS1016: Use expression\-bodied member
+# RCS1016: Convert block body to expression\-body \(or vice versa\)
| Property | Value |
| ------------------------ | ------- |
@@ -12,20 +12,26 @@
### Code with Diagnostic
```csharp
-public object Foo()
+public string Foo()
{ // RCS1016
- return null;
+ return "";
}
```
### Code with Fix
```csharp
-public object Foo() => null;
+public string Foo() => "";
```
+## Options
+
+* [RCS1016a](RCS1016a.md) \- Convert expression\-body to block body when expression is multi\-line\.
+* [RCS1016b](RCS1016b.md) \- Convert expression\-body to block body when declaration is multi\-line\.
+
## See Also
+* [Analyzer Options](../AnalyzerOptions.md)
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1016a.md b/docs/analyzers/RCS1016a.md
new file mode 100644
index 0000000000..d164d63f8c
--- /dev/null
+++ b/docs/analyzers/RCS1016a.md
@@ -0,0 +1,45 @@
+# RCS1016a: Convert expression\-body to block body when expression is multi\-line
+
+| Property | Value |
+| ------------------------ | -------------- |
+| Id | RCS1016a |
+| Category | AnalyzerOption |
+| Severity | None |
+| Minimal Language Version | 6\.0 |
+
+This option modifies behavior of analyzer [RCS1016](RCS1016.md)\. It requires [RCS1016](RCS1016.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+public string[] Foo() => new string[] // [|Id|]
+{
+ "a",
+ "b",
+ "c"
+};
+```
+
+### Code with Fix
+
+```csharp
+public string[] Foo()
+{
+ return new string[]
+ {
+ "a",
+ "b",
+ "c"
+ };
+}
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1016b.md b/docs/analyzers/RCS1016b.md
new file mode 100644
index 0000000000..363b52e299
--- /dev/null
+++ b/docs/analyzers/RCS1016b.md
@@ -0,0 +1,41 @@
+# RCS1016b: Convert expression\-body to block body when declaration is multi\-line
+
+| Property | Value |
+| ------------------------ | -------------- |
+| Id | RCS1016b |
+| Category | AnalyzerOption |
+| Severity | None |
+| Minimal Language Version | 6\.0 |
+
+This option modifies behavior of analyzer [RCS1016](RCS1016.md)\. It requires [RCS1016](RCS1016.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+public string[] Foo(
+ string a,
+ string b,
+ string c) => new string[] { a, b, c }; // [|Id|]
+```
+
+### Code with Fix
+
+```csharp
+public string[] Foo(
+ string a,
+ string b,
+ string c)
+{
+ return new string[] { a, b, c };
+}
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1017.md b/docs/analyzers/RCS1017.md
index 76dd24a6e0..c7c91819d9 100644
--- a/docs/analyzers/RCS1017.md
+++ b/docs/analyzers/RCS1017.md
@@ -1,4 +1,4 @@
-# RCS1017: Avoid multiline expression body
+# RCS1017: \[deprecated\] Avoid multiline expression body
| Property | Value |
| -------- | ------- |
@@ -6,6 +6,10 @@
| Category | Style |
| Severity | None |
+## Summary
+
+This analyzer has been deprecated. Use analyzer [RCS1016a](RCS1016a.md) instead.
+
## Example
### Code with Diagnostic
diff --git a/docs/analyzers/RCS1018.md b/docs/analyzers/RCS1018.md
index 834fdf8132..d5e0290384 100644
--- a/docs/analyzers/RCS1018.md
+++ b/docs/analyzers/RCS1018.md
@@ -1,4 +1,4 @@
-# RCS1018: Add accessibility modifiers
+# RCS1018: Add accessibility modifiers \(or vice versa\)
| Property | Value |
| -------- | ----------- |
@@ -30,8 +30,13 @@ internal class Foo
}
```
+## Options
+
+* [RCS1018i](RCS1018i.md) \- Remove accessibility modifiers\.
+
## See Also
+* [Analyzer Options](../AnalyzerOptions.md)
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1018i.md b/docs/analyzers/RCS1018i.md
new file mode 100644
index 0000000000..285e724833
--- /dev/null
+++ b/docs/analyzers/RCS1018i.md
@@ -0,0 +1,41 @@
+# RCS1018i: Remove accessibility modifiers
+
+| Property | Value |
+| -------- | -------------- |
+| Id | RCS1018i |
+| Category | AnalyzerOption |
+| Severity | None |
+
+This option modifies behavior of analyzer [RCS1018](RCS1018.md)\. It requires [RCS1018](RCS1018.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+internal class Foo // [|Id|]
+{
+ private void Bar() // [|Id|]
+ {
+ }
+}
+```
+
+### Code with Fix
+
+```csharp
+class Foo
+{
+ void Bar()
+ {
+ }
+}
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1021.md b/docs/analyzers/RCS1021.md
index 6cf7d4fc57..e227a97887 100644
--- a/docs/analyzers/RCS1021.md
+++ b/docs/analyzers/RCS1021.md
@@ -1,4 +1,4 @@
-# RCS1021: Simplify lambda expression
+# RCS1021: Convert lambda expression body to expression\-body
| Property | Value |
| -------- | -------------- |
diff --git a/docs/analyzers/RCS1058.md b/docs/analyzers/RCS1058.md
index f65e7907eb..7da0e34ef5 100644
--- a/docs/analyzers/RCS1058.md
+++ b/docs/analyzers/RCS1058.md
@@ -1,27 +1,44 @@
# RCS1058: Use compound assignment
-| Property | Value |
-| -------- | -------------- |
-| Id | RCS1058 |
-| Category | Simplification |
-| Severity | Info |
+| Property | Value |
+| ------------------------ | --------------------- |
+| Id | RCS1058 |
+| Category | Simplification |
+| Severity | Info |
+| Minimal Language Version | 8\.0 \(??= operator\) |
-## Example
+## Examples
### Code with Diagnostic
```csharp
-i = i + 2;
+x = x + 2;
```
### Code with Fix
```csharp
-i += 2;
+x += 2;
+```
+
+- - -
+
+### Code with Diagnostic
+
+```csharp
+x ?? (x = M())
+```
+
+### Code with Fix
+
+```csharp
+x ??= M()
```
## See Also
+* [Compound assignment](https://docs.microsoft.com/cs-cz/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment)
+* [?? and ??= operators](https://docs.microsoft.com/dotnet/csharp/language-reference/operators/null-coalescing-operator)
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1077.md b/docs/analyzers/RCS1077.md
index ac0e0e84fc..9c6b406011 100644
--- a/docs/analyzers/RCS1077.md
+++ b/docs/analyzers/RCS1077.md
@@ -218,6 +218,20 @@ enumerable.SelectMany(f => f.Items).Count()
enumerable.Sum(f => f.Items.Count)
```
+- - -
+
+### Code with Diagnostic
+
+```csharp
+listOfT.Select(f => M(f)).ToList()
+```
+
+### Code with Fix
+
+```csharp
+listOfT.ConvertAll(f => M(f))
+```
+
## See Also
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1078.md b/docs/analyzers/RCS1078.md
index a086a1dc43..5dea86b0de 100644
--- a/docs/analyzers/RCS1078.md
+++ b/docs/analyzers/RCS1078.md
@@ -1,4 +1,4 @@
-# RCS1078: Use "" instead of string\.Empty
+# RCS1078: Use "" instead of string\.Empty \(or vice versa\)
| Property | Value |
| -------- | ------- |
@@ -20,8 +20,13 @@ string s = string.Empty;
string s = "";
```
+## Options
+
+* [RCS1078i](RCS1078i.md) \- Use string\.Empty instead of ""\.
+
## See Also
+* [Analyzer Options](../AnalyzerOptions.md)
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1078i.md b/docs/analyzers/RCS1078i.md
new file mode 100644
index 0000000000..fb6657c7c8
--- /dev/null
+++ b/docs/analyzers/RCS1078i.md
@@ -0,0 +1,31 @@
+# RCS1078i: Use string\.Empty instead of ""
+
+| Property | Value |
+| -------- | -------------- |
+| Id | RCS1078i |
+| Category | AnalyzerOption |
+| Severity | None |
+
+This option modifies behavior of analyzer [RCS1078](RCS1078.md)\. It requires [RCS1078](RCS1078.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+string s = "";
+```
+
+### Code with Fix
+
+```csharp
+string s = string.Empty;
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1090.md b/docs/analyzers/RCS1090.md
index 5c6f51d8e2..9e4458519f 100644
--- a/docs/analyzers/RCS1090.md
+++ b/docs/analyzers/RCS1090.md
@@ -1,4 +1,4 @@
-# RCS1090: Call 'ConfigureAwait\(false\)'
+# RCS1090: Add call to 'ConfigureAwait' \(or vice versa\)
| Property | Value |
| -------- | ------- |
@@ -26,8 +26,13 @@ public async Task FooAsync()
}
```
+## Options
+
+* [RCS1090i](RCS1090i.md) \- Remove call to 'ConfigureAwait'\.
+
## See Also
+* [Analyzer Options](../AnalyzerOptions.md)
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1090i.md b/docs/analyzers/RCS1090i.md
new file mode 100644
index 0000000000..70bad99512
--- /dev/null
+++ b/docs/analyzers/RCS1090i.md
@@ -0,0 +1,37 @@
+# RCS1090i: Remove call to 'ConfigureAwait'
+
+| Property | Value |
+| -------- | -------------- |
+| Id | RCS1090i |
+| Category | AnalyzerOption |
+| Severity | None |
+
+This option modifies behavior of analyzer [RCS1090](RCS1090.md)\. It requires [RCS1090](RCS1090.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+public async Task FooAsync()
+{
+ await GetValueAsync().ConfigureAwait(false); // [|Id|]
+}
+```
+
+### Code with Fix
+
+```csharp
+public async Task FooAsync()
+{
+ await GetValueAsync();
+}
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1098.md b/docs/analyzers/RCS1098.md
index 9a350d04c1..f5dfa9664d 100644
--- a/docs/analyzers/RCS1098.md
+++ b/docs/analyzers/RCS1098.md
@@ -1,4 +1,4 @@
-# RCS1098: Avoid 'null' on the left side of a binary expression
+# RCS1098: Constant values should be placed on right side of comparisons
| Property | Value |
| -------- | ----------- |
@@ -12,7 +12,7 @@
```csharp
if (null == x) // RCS1098
-{
+{
}
```
diff --git a/docs/analyzers/RCS1179.md b/docs/analyzers/RCS1179.md
index 59622abf79..4f77dfb273 100644
--- a/docs/analyzers/RCS1179.md
+++ b/docs/analyzers/RCS1179.md
@@ -1,4 +1,4 @@
-# RCS1179: Use 'return' instead of assignment
+# RCS1179: Unnecessary assignment
| Property | Value |
| -------- | -------------- |
diff --git a/docs/analyzers/RCS1199.md b/docs/analyzers/RCS1199.md
index 8eb52416ba..15a332a21e 100644
--- a/docs/analyzers/RCS1199.md
+++ b/docs/analyzers/RCS1199.md
@@ -1,12 +1,12 @@
-# RCS1199: Simplify boolean expression
+# RCS1199: Unncessary null check
-| Property | Value |
-| -------- | -------------- |
-| Id | RCS1199 |
-| Category | Simplification |
-| Severity | Info |
+| Property | Value |
+| -------- | ---------- |
+| Id | RCS1199 |
+| Category | Redundancy |
+| Severity | Info |
-## Example
+## Examples
### Code with Diagnostic
@@ -28,6 +28,29 @@ if (x == true)
}
```
+- - -
+
+### Code with Diagnostic
+
+```csharp
+bool? x = null;
+bool y = false;
+
+// ...
+
+if (x != null && x.Value == y) // RCS1199
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+if (x == y)
+{
+}
+```
+
## See Also
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1207.md b/docs/analyzers/RCS1207.md
index d453dcf171..4ea34725fe 100644
--- a/docs/analyzers/RCS1207.md
+++ b/docs/analyzers/RCS1207.md
@@ -1,10 +1,10 @@
-# RCS1207: Convert anonymous function to method group
+# RCS1207: Convert anonymous function to method group \(or vice versa\)
| Property | Value |
| -------- | -------------- |
| Id | RCS1207 |
| Category | Simplification |
-| Severity | Hidden |
+| Severity | None |
## Example
@@ -20,8 +20,13 @@ var x = items.Select(f => Foo(f));
var x = items.Select(Foo);
```
+## Options
+
+* [RCS1207i](RCS1207i.md) \- Convert method group to anonymous function\.
+
## See Also
+* [Analyzer Options](../AnalyzerOptions.md)
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1207i.md b/docs/analyzers/RCS1207i.md
new file mode 100644
index 0000000000..2ddb7f35f0
--- /dev/null
+++ b/docs/analyzers/RCS1207i.md
@@ -0,0 +1,31 @@
+# RCS1207i: Convert method group to anonymous function
+
+| Property | Value |
+| -------- | -------------- |
+| Id | RCS1207i |
+| Category | AnalyzerOption |
+| Severity | None |
+
+This option modifies behavior of analyzer [RCS1207](RCS1207.md)\. It requires [RCS1207](RCS1207.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+var x = items.Select(Foo);
+```
+
+### Code with Fix
+
+```csharp
+var x = items.Select(f => Foo(f));
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1210.md b/docs/analyzers/RCS1210.md
index 2fd01a8069..281fa131b9 100644
--- a/docs/analyzers/RCS1210.md
+++ b/docs/analyzers/RCS1210.md
@@ -1,4 +1,4 @@
-# RCS1210: Return Task\.FromResult instead of returning null
+# RCS1210: Return completed task instead of returning null
| Property | Value |
| -------- | ------- |
diff --git a/docs/analyzers/RCS1219.md b/docs/analyzers/RCS1219.md
index c5cfc1411a..8bc9e372ae 100644
--- a/docs/analyzers/RCS1219.md
+++ b/docs/analyzers/RCS1219.md
@@ -1,4 +1,4 @@
-# RCS1219: Call 'Enumerable\.Skip' and 'Enumerable\.Any' instead of 'Enumerable\.Count'
+# \[deprecated\] RCS1219: Call 'Enumerable\.Skip' and 'Enumerable\.Any' instead of 'Enumerable\.Count'
| Property | Value |
| -------- | ----------- |
diff --git a/docs/analyzers/RCS1232.md b/docs/analyzers/RCS1232.md
index f8c57cb672..f4ab0b5f00 100644
--- a/docs/analyzers/RCS1232.md
+++ b/docs/analyzers/RCS1232.md
@@ -14,7 +14,7 @@
class C
{
///
- /// RCS1232
+ /// // RCS1232
///
///
void M(object p1, object p2, object p3)
diff --git a/docs/analyzers/RCS1233.md b/docs/analyzers/RCS1233.md
index 592310f3fc..4c934517ee 100644
--- a/docs/analyzers/RCS1233.md
+++ b/docs/analyzers/RCS1233.md
@@ -11,7 +11,7 @@
### Code with Diagnostic
```csharp
-boolExpr1 & boolExpr2 RCS1233
+boolExpr1 & boolExpr2
```
### Code with Fix
@@ -25,7 +25,7 @@ boolExpr1 && boolExpr2
### Code with Diagnostic
```csharp
-boolExpr1 | boolExpr2 RCS1233
+boolExpr1 | boolExpr2
```
### Code with Fix
diff --git a/docs/analyzers/RCS1234.md b/docs/analyzers/RCS1234.md
index 06ab4ee70e..50a5560eef 100644
--- a/docs/analyzers/RCS1234.md
+++ b/docs/analyzers/RCS1234.md
@@ -15,7 +15,7 @@ enum E
{
A = 1,
B = 2,
- C = 2, RCS1234
+ C = 2, // RCS1234
}
```
diff --git a/docs/analyzers/RCS1236.md b/docs/analyzers/RCS1236.md
index 30cfecabb9..7ac4da58e2 100644
--- a/docs/analyzers/RCS1236.md
+++ b/docs/analyzers/RCS1236.md
@@ -38,9 +38,22 @@ catch (Exception ex) when (ex is InvalidOperationException)
}
```
+## Remarks
+
+The accepted [answer](https://stackoverflow.com/a/28879616) from Stack Overflow states:
+>"If there is an exception thrown within the filter, then that exception will be silently swallowed and the filter simply fails."
+
+It is impossible to definitely detect if an exception can be thrown within an expression.
+
+So the expression is considered as the one that can throw an exception if it contains method call that meets one of the following requirements:
+
+* Its name starts with `ThrowIf`.
+* Its XML comment contains `` element.
+
## See Also
* [What's New in C# 6.0 - Exception Filters](https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-6#exception-filters)
+* [Exception filters in C# 6: their biggest advantage is not what you think](https://thomaslevesque.com/2015/06/21/exception-filters-in-c-6/)
* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
diff --git a/docs/analyzers/RCS1240.md b/docs/analyzers/RCS1240.md
index 9d8f113c06..4c4d1df086 100644
--- a/docs/analyzers/RCS1240.md
+++ b/docs/analyzers/RCS1240.md
@@ -11,7 +11,7 @@
### Code with Diagnostic
```csharp
-array.Length <= 0 RCS1240
+array.Length <= 0
```
### Code with Fix
diff --git a/docs/analyzers/RCS1241.md b/docs/analyzers/RCS1241.md
index 77433df5f0..6cad24912b 100644
--- a/docs/analyzers/RCS1241.md
+++ b/docs/analyzers/RCS1241.md
@@ -22,7 +22,7 @@ public class C
{
}
-public abstract class Comparable : IComparable RCS1241
+public abstract class Comparable : IComparable // RCS1241
{
public abstract int CompareTo(C other);
}
@@ -72,7 +72,7 @@ public class C
{
}
-public abstract class Comparer : IComparer RCS1241
+public abstract class Comparer : IComparer // RCS1241
{
public abstract int Compare(C x, C y);
}
@@ -139,7 +139,7 @@ public class C
{
}
-public abstract class EqualityComparer : IEqualityComparer RCS1241
+public abstract class EqualityComparer : IEqualityComparer // RCS1241
{
public abstract bool Equals(C x, C y);
diff --git a/docs/analyzers/RCS1244.md b/docs/analyzers/RCS1244.md
index 05e333ffeb..7bf1e376c5 100644
--- a/docs/analyzers/RCS1244.md
+++ b/docs/analyzers/RCS1244.md
@@ -16,9 +16,9 @@ This analyzer is similar to [IDE0034](https://docs.microsoft.com/visualstudio/id
### Code with Diagnostic
```csharp
-Foo M(Foo foo = default(Foo)) RCS1244
+Foo M(Foo foo = default(Foo)) // RCS1244
{
- return default(Foo); RCS1244
+ return default(Foo); // RCS1244
}
```
diff --git a/docs/analyzers/RCS1247.md b/docs/analyzers/RCS1247.md
new file mode 100644
index 0000000000..629f2bad21
--- /dev/null
+++ b/docs/analyzers/RCS1247.md
@@ -0,0 +1,69 @@
+# RCS1247: Fix documentation comment tag
+
+| Property | Value |
+| -------- | ----------- |
+| Id | RCS1247 |
+| Category | Readability |
+| Severity | Info |
+
+## Examples
+
+### Code with Diagnostic
+
+```csharp
+///
+/// null
// RCS1247
+///
+void M()
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+///
+/// null
+///
+void M()
+{
+}
+```
+
+- - -
+
+### Code with Diagnostic
+
+```csharp
+///
+/// // RCS1247
+/// if (x == null)
+/// x = new object();
+///
+///
+void M()
+{
+}
+```
+
+### Code with Fix
+
+```csharp
+///
+///
+/// if (x == null)
+/// x = new object();
+///
+///
+void M()
+{
+}
+```
+
+## See Also
+
+* [Recommended tags for documentation comments (C# programming guide)](https://docs.microsoft.com/dotnet/csharp/programming-guide/xmldoc/recommended-tags-for-documentation-comments)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1248.md b/docs/analyzers/RCS1248.md
new file mode 100644
index 0000000000..bf40934a54
--- /dev/null
+++ b/docs/analyzers/RCS1248.md
@@ -0,0 +1,35 @@
+# RCS1248: Use 'is null' pattern instead of comparison \(or vice versa\)
+
+| Property | Value |
+| ------------------------ | ------- |
+| Id | RCS1248 |
+| Category | Style |
+| Severity | None |
+| Minimal Language Version | 7\.0 |
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+x == null
+```
+
+### Code with Fix
+
+```csharp
+x is null
+```
+
+## Options
+
+* [RCS1248a](RCS1248a.md) \- Use 'is null' pattern instead of '\!=' operator\.
+* [RCS1248i](RCS1248i.md) \- Use comparison instead of 'is null' pattern\.
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1248a.md b/docs/analyzers/RCS1248a.md
new file mode 100644
index 0000000000..171883d4d2
--- /dev/null
+++ b/docs/analyzers/RCS1248a.md
@@ -0,0 +1,32 @@
+# RCS1248a: Use 'is null' pattern instead of '\!=' operator
+
+| Property | Value |
+| ------------------------ | -------------- |
+| Id | RCS1248a |
+| Category | AnalyzerOption |
+| Severity | None |
+| Minimal Language Version | 7\.0 |
+
+This option modifies behavior of analyzer [RCS1248](RCS1248.md)\. It requires [RCS1248](RCS1248.md) to be enabled\.
+
+## Example
+
+### Code with Diagnostic
+
+```csharp
+x != null
+```
+
+### Code with Fix
+
+```csharp
+!(x is null)
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/analyzers/RCS1248i.md b/docs/analyzers/RCS1248i.md
new file mode 100644
index 0000000000..c5966b454f
--- /dev/null
+++ b/docs/analyzers/RCS1248i.md
@@ -0,0 +1,46 @@
+# RCS1248i: Use comparison instead of 'is null' pattern
+
+| Property | Value |
+| ------------------------ | -------------- |
+| Id | RCS1248i |
+| Category | AnalyzerOption |
+| Severity | None |
+| Minimal Language Version | 7\.0 |
+
+This option modifies behavior of analyzer [RCS1248](RCS1248.md)\. It requires [RCS1248](RCS1248.md) to be enabled\.
+
+## Examples
+
+### Code with Diagnostic
+
+```csharp
+x is null
+```
+
+### Code with Fix
+
+```csharp
+x == null
+```
+
+- - -
+
+### Code with Diagnostic
+
+```csharp
+!(x is null)
+```
+
+### Code with Fix
+
+```csharp
+x != null
+```
+
+## See Also
+
+* [Analyzer Options](../AnalyzerOptions.md)
+* [How to Suppress a Diagnostic](../HowToConfigureAnalyzers.md#how-to-suppress-a-diagnostic)
+
+
+*\(Generated with [DotMarkdown](http://github.com/JosefPihrt/DotMarkdown)\)*
\ No newline at end of file
diff --git a/docs/refactorings/RR0037.md b/docs/refactorings/RR0037.md
index 743714ed13..0329665482 100644
--- a/docs/refactorings/RR0037.md
+++ b/docs/refactorings/RR0037.md
@@ -1,15 +1,15 @@
-## Expand expression body
+## Convert expression\-body to block body
-| Property | Value |
-| ------------------ | ---------------------- |
-| Id | RR0037 |
-| Title | Expand expression body |
-| Syntax | expression body |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | -------------------------------------- |
+| Id | RR0037 |
+| Title | Convert expression\-body to block body |
+| Syntax | expression body |
+| Enabled by Default | ✓ |
### Usage
-![Expand expression body](../../images/refactorings/ExpandExpressionBody.png)
+![Convert expression-body to block body](../../images/refactorings/ConvertExpressionBodyToBlockBody.png)
## See Also
diff --git a/docs/refactorings/RR0039.md b/docs/refactorings/RR0039.md
index a513458540..3efac87d47 100644
--- a/docs/refactorings/RR0039.md
+++ b/docs/refactorings/RR0039.md
@@ -1,16 +1,16 @@
-## Expand lambda expression body
+## Convert lambda expression body to block body
-| Property | Value |
-| ------------------ | ----------------------------- |
-| Id | RR0039 |
-| Title | Expand lambda expression body |
-| Syntax | lambda expression |
-| Span | body |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | -------------------------------------------- |
+| Id | RR0039 |
+| Title | Convert lambda expression body to block body |
+| Syntax | lambda expression's expression body |
+| Span | body |
+| Enabled by Default | ✓ |
### Usage
-![Expand lambda expression body](../../images/refactorings/ExpandLambdaExpressionBody.png)
+![Convert lambda expression body to block body](../../images/refactorings/ConvertLambdaExpressionBodyToBlockBody.png)
## See Also
diff --git a/docs/refactorings/RR0048.md b/docs/refactorings/RR0048.md
index dba2e8e15b..a11f48863b 100644
--- a/docs/refactorings/RR0048.md
+++ b/docs/refactorings/RR0048.md
@@ -1,17 +1,45 @@
-## Format argument list
+## Wrap arguments
-| Property | Value |
-| ------------------ | -------------------- |
-| Id | RR0048 |
-| Title | Format argument list |
-| Syntax | argument list |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | -------------- |
+| Id | RR0048 |
+| Title | Wrap arguments |
+| Syntax | argument list |
+| Enabled by Default | ✓ |
### Usage
-![Format argument list](../../images/refactorings/FormatEachArgumentOnSeparateLine.png)
+#### Before
-![Format argument list](../../images/refactorings/FormatAllArgumentsOnSingleLine.png)
+```csharp
+M(x, y, z);
+```
+
+#### After
+
+```csharp
+M(
+ x,
+ y,
+ z);
+```
+
+- - -
+
+#### Before
+
+```csharp
+void M(
+ x,
+ y,
+ z);
+```
+
+#### After
+
+```csharp
+void M(x, y, z);
+```
## See Also
diff --git a/docs/refactorings/RR0049.md b/docs/refactorings/RR0049.md
index 86d1c8388b..5b24c4f9ae 100644
--- a/docs/refactorings/RR0049.md
+++ b/docs/refactorings/RR0049.md
@@ -1,15 +1,51 @@
-## Format binary expression
+## Wrap binary expression
| Property | Value |
| ------------------ | ---------------------------------------------------- |
| Id | RR0049 |
-| Title | Format binary expression |
+| Title | Wrap binary expression |
| Syntax | logical and/or expression, bitwise and/or expression |
| Enabled by Default | ✓ |
### Usage
-![Format binary expression](../../images/refactorings/FormatBinaryExpression.png)
+#### Before
+
+```csharp
+if (x && y && z)
+{
+}
+```
+
+#### After
+
+```csharp
+if (x
+ && y
+ && z)
+{
+}
+```
+
+- - -
+
+#### Before
+
+```csharp
+if (x
+ && y
+ && z)
+{
+}
+```
+
+#### After
+
+```csharp
+if (x && y && z)
+{
+}
+```
## See Also
diff --git a/docs/refactorings/RR0050.md b/docs/refactorings/RR0050.md
index 4f2e661a9d..a680048ecd 100644
--- a/docs/refactorings/RR0050.md
+++ b/docs/refactorings/RR0050.md
@@ -1,17 +1,27 @@
-## Format conditional expression
+## Wrap conditional expression
-| Property | Value |
-| ------------------ | ----------------------------- |
-| Id | RR0050 |
-| Title | Format conditional expression |
-| Syntax | conditional expression |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | --------------------------- |
+| Id | RR0050 |
+| Title | Wrap conditional expression |
+| Syntax | conditional expression |
+| Enabled by Default | ✓ |
### Usage
-![Format conditional expression](../../images/refactorings/FormatConditionalExpressionOnMultipleLines.png)
+#### Before
-![Format conditional expression](../../images/refactorings/FormatConditionalExpressionOnSingleLine.png)
+```csharp
+x ? y : z
+```
+
+#### After
+
+```csharp
+x
+ ? y
+ : z
+```
## See Also
diff --git a/docs/refactorings/RR0051.md b/docs/refactorings/RR0051.md
index 3d1e9e7b09..413b30d52b 100644
--- a/docs/refactorings/RR0051.md
+++ b/docs/refactorings/RR0051.md
@@ -1,17 +1,45 @@
-## Format expression chain
+## Wrap call chain
-| Property | Value |
-| ------------------ | ----------------------- |
-| Id | RR0051 |
-| Title | Format expression chain |
-| Syntax | expression chain |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | --------------- |
+| Id | RR0051 |
+| Title | Wrap call chain |
+| Syntax | call chain |
+| Enabled by Default | ✓ |
### Usage
-![Format expression chain](../../images/refactorings/FormatExpressionChainOnMultipleLines.png)
+#### Before
-![Format expression chain](../../images/refactorings/FormatExpressionChainOnSingleLine.png)
+```csharp
+x.M().N().O()
+```
+
+#### After
+
+```csharp
+x
+ .M()
+ .N()
+ .O()
+```
+
+- - -
+
+#### Before
+
+```csharp
+x
+ .M()
+ .N()
+ .O()
+```
+
+#### After
+
+```csharp
+x.M().N().O()
+```
## See Also
diff --git a/docs/refactorings/RR0052.md b/docs/refactorings/RR0052.md
index 9964eaa6d5..6e6b0779e3 100644
--- a/docs/refactorings/RR0052.md
+++ b/docs/refactorings/RR0052.md
@@ -1,17 +1,49 @@
-## Format initializer
+## Wrap initializer expressions
-| Property | Value |
-| ------------------ | ------------------ |
-| Id | RR0052 |
-| Title | Format initializer |
-| Syntax | initializer |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | ---------------------------- |
+| Id | RR0052 |
+| Title | Wrap initializer expressions |
+| Syntax | initializer |
+| Enabled by Default | ✓ |
### Usage
-![Format initializer](../../images/refactorings/FormatInitializerOnMultipleLines.png)
+#### Before
-![Format initializer](../../images/refactorings/FormatInitializerOnSingleLine.png)
+```csharp
+var x = new string[] { "a", "b", "c" }
+```
+
+#### After
+
+```csharp
+var x = new string[]
+{
+ "a",
+ "b",
+ "c"
+}
+```
+
+- - -
+
+#### Before
+
+```csharp
+var x = new string[]
+{
+ "a",
+ "b",
+ "c"
+}
+```
+
+#### After
+
+```csharp
+var x = new string[] { "a", "b", "c" }
+```
## See Also
diff --git a/docs/refactorings/RR0053.md b/docs/refactorings/RR0053.md
index c4c6eca785..37ad27ed8e 100644
--- a/docs/refactorings/RR0053.md
+++ b/docs/refactorings/RR0053.md
@@ -1,17 +1,53 @@
-## Format parameter list
+## Wrap parameters
-| Property | Value |
-| ------------------ | --------------------- |
-| Id | RR0053 |
-| Title | Format parameter list |
-| Syntax | parameter list |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | --------------- |
+| Id | RR0053 |
+| Title | Wrap parameters |
+| Syntax | parameter list |
+| Enabled by Default | ✓ |
### Usage
-![Format parameter list](../../images/refactorings/FormatEachParameterOnSeparateLine.png)
-
-![Format parameter list](../../images/refactorings/FormatAllParametersOnSingleLine.png)
+#### Before
+
+```csharp
+void M(object x, object y, object z)
+{
+}
+```
+
+#### After
+
+```csharp
+void M(
+ object x,
+ object y,
+ object z)
+{
+}
+```
+
+- - -
+
+#### Before
+
+```csharp
+void M(
+ object x,
+ object y,
+ object z)
+{
+}
+```
+
+#### After
+
+```csharp
+void M(object x, object y, object z)
+{
+}
+```
## See Also
diff --git a/docs/refactorings/RR0137.md b/docs/refactorings/RR0137.md
index 52f94ef1d6..a7c25d9c26 100644
--- a/docs/refactorings/RR0137.md
+++ b/docs/refactorings/RR0137.md
@@ -1,11 +1,11 @@
-## Replace method group with lambda
-
-| Property | Value |
-| ------------------ | -------------------------------- |
-| Id | RR0137 |
-| Title | Replace method group with lambda |
-| Syntax | method group |
-| Enabled by Default | ✓ |
+## Convert method group to lambda
+
+| Property | Value |
+| ------------------ | ------------------------------ |
+| Id | RR0137 |
+| Title | Convert method group to lambda |
+| Syntax | method group |
+| Enabled by Default | ✓ |
### Usage
diff --git a/docs/refactorings/RR0152.md b/docs/refactorings/RR0152.md
index 6b8e03634e..6c3a8a9aa0 100644
--- a/docs/refactorings/RR0152.md
+++ b/docs/refactorings/RR0152.md
@@ -1,15 +1,15 @@
-## Reverse 'for' loop
+## Reverse 'for' statement
-| Property | Value |
-| ------------------ | ------------------ |
-| Id | RR0152 |
-| Title | Reverse 'for' loop |
-| Syntax | for statement |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | ----------------------- |
+| Id | RR0152 |
+| Title | Reverse 'for' statement |
+| Syntax | for statement |
+| Enabled by Default | ✓ |
### Usage
-![Reverse 'for' loop](../../images/refactorings/ReverseForLoop.png)
+![Reverse 'for' statement](../../images/refactorings/ReverseForStatement.png)
## See Also
diff --git a/docs/refactorings/RR0154.md b/docs/refactorings/RR0154.md
index 209cfd6904..779bfab745 100644
--- a/docs/refactorings/RR0154.md
+++ b/docs/refactorings/RR0154.md
@@ -1,16 +1,16 @@
-## Simplify lambda expression
+## Convert lambda expression body to expression\-body
-| Property | Value |
-| ------------------ | --------------------------------------------------------------- |
-| Id | RR0154 |
-| Title | Simplify lambda expression |
-| Syntax | lambda expression with block with single single\-line statement |
-| Span | body |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | -------------------------------------------------------------------- |
+| Id | RR0154 |
+| Title | Convert lambda expression body to expression\-body |
+| Syntax | lambda expression with block body with single single\-line statement |
+| Span | body |
+| Enabled by Default | ✓ |
### Usage
-![Simplify lambda expression](../../images/refactorings/SimplifyLambdaExpression.png)
+![Convert lambda expression body to expression-body](../../images/refactorings/ConvertLambdaExpressionBodyToExpressionBody.png)
## See Also
diff --git a/docs/refactorings/RR0169.md b/docs/refactorings/RR0169.md
index 235b3fad16..a1dd2253e9 100644
--- a/docs/refactorings/RR0169.md
+++ b/docs/refactorings/RR0169.md
@@ -1,16 +1,16 @@
-## Use expression\-bodied member
+## Convert block body to expression\-body
-| Property | Value |
-| ------------------ | ----------------------------------- |
-| Id | RR0169 |
-| Title | Use expression\-bodied member |
-| Syntax | method, property, indexer, operator |
-| Span | body or accessor list |
-| Enabled by Default | ✓ |
+| Property | Value |
+| ------------------ | -------------------------------------- |
+| Id | RR0169 |
+| Title | Convert block body to expression\-body |
+| Syntax | method, property, indexer, operator |
+| Span | body or accessor list |
+| Enabled by Default | ✓ |
### Usage
-![Use expression-bodied member](../../images/refactorings/UseExpressionBodiedMember.png)
+![Convert block body to expression-body](../../images/refactorings/ConvertBlockBodyToExpressionBody.png)
## See Also
diff --git a/docs/refactorings/RR0187.md b/docs/refactorings/RR0187.md
index 21fc88981b..9e7365d356 100644
--- a/docs/refactorings/RR0187.md
+++ b/docs/refactorings/RR0187.md
@@ -1,9 +1,9 @@
-## Format constraint clauses
+## Wrap constraint clauses
| Property | Value |
| ------------------ | -------------------------------- |
| Id | RR0187 |
-| Title | Format constraint clauses |
+| Title | Wrap constraint clauses |
| Syntax | type parameter constraint clause |
| Enabled by Default | ✓ |
diff --git a/docs/refactorings/Refactorings.md b/docs/refactorings/Refactorings.md
index b3ad837155..906d79bb82 100644
--- a/docs/refactorings/Refactorings.md
+++ b/docs/refactorings/Refactorings.md
@@ -424,6 +424,12 @@ else
}
```
+#### Convert block body to expression\-body \(RR0169\)
+
+* **Syntax**: method, property, indexer, operator
+* **Span**: body or accessor list
+![Convert block body to expression-body](../../images/refactorings/ConvertBlockBodyToExpressionBody.png)
+
#### Convert comment to documentation comment \(RR0192\)
* **Syntax**: single\-line comment
@@ -469,6 +475,11 @@ while (condition)
}
```
+#### Convert expression\-body to block body \(RR0037\)
+
+* **Syntax**: expression body
+![Convert expression-body to block body](../../images/refactorings/ConvertExpressionBodyToBlockBody.png)
+
#### Convert 'for' to 'foreach' \(RR0130\)
* **Syntax**: for statement
@@ -601,6 +612,34 @@ $"name: {name,0:f}, value: {value}"
string.Format("name: {0,0:f} value: {1}", name, value)
```
+#### Convert lambda expression body to block body \(RR0039\)
+
+* **Syntax**: lambda expression's expression body
+* **Span**: body
+![Convert lambda expression body to block body](../../images/refactorings/ConvertLambdaExpressionBodyToBlockBody.png)
+
+#### Convert lambda expression body to expression\-body \(RR0154\)
+
+* **Syntax**: lambda expression with block body with single single\-line statement
+* **Span**: body
+![Convert lambda expression body to expression-body](../../images/refactorings/ConvertLambdaExpressionBodyToExpressionBody.png)
+
+#### Convert method group to lambda \(RR0137\)
+
+* **Syntax**: method group
+
+#### Before
+
+```csharp
+Func