Releases: DotNetAnalyzers/StyleCopAnalyzers
1.0.2
Compatibility update for 1.0.0
- Fixes errors when using stylecop.json with .NET Core
See the release notes for 1.0.0 for general information about the 1.0.0 releases.
Acknowledgements
Thank you goes to all of the following users, who contributed feedback, bug reports, code submissions, testing, and reviews which helped in this release. In alphabetical order by username. This list does not include people who contacted us through other channels, but your feedback is no less valuable so we thank you as well.
1.0.1
This release was withdrawn due to #2331
Compatibility update for 1.0.0
- Fixes errors when using stylecop.json with .NET Core
See the release notes for 1.0.0 for general information about the 1.0.0 releases.
Acknowledgements
Thank you goes to all of the following users, who contributed feedback, bug reports, code submissions, testing, and reviews which helped in this release. In alphabetical order by username. This list does not include people who contacted us through other channels, but your feedback is no less valuable so we thank you as well.
1.1.0 Beta 1
Beta Release
Summary
- New rules
- Renumbered rules
- SA1652 → SA0001 (#2030)
- Removed rules
- SA0000 (#2102)
- New code fixes
- New configuration
- SA1027 supports hard tabs via configuration (#2037)
- Added
{fileName}
intrinsic variable for configuring file headers (#2110) - Added
allowConsecutiveUsings
option to configure SA1519 - Added
topLevelTypes
configuration for SA1402 (#1756) - Added
documentationCulture
configuration for documentation text (#1143) - Added
blankLinesBetweenUsingGroups
(#1787)
- Bug fixes
- Readability: SA1101 (#2093, #2174), SA1115 (#1921, #2159), SA1118 (#2200), SA1119 (#2069), SA1120 (#2056)
- Ordering: SA1205 (#2040, #2114), SA1210 (#2026, #2027)
- Naming: SA1305 (#1928, #1930)
- Layout: SA1500 (#2105), SA1513 (#2041), SA1515 (#2176)
- Documentation: SA1605 (#1899), SA1606 (#1944), SA1607 (#1899), SA1608 (#1900), SA1609 (#1901), SA1610 (#1903), SA1611 (#1904), SA1612 (#1905), SA1613 (#1906), SA1614 (#1907) SA1616 (#1908), SA1617 (#1909), SA1618 (#1910), SA1619 (#1911), SA1620 (#1912), SA1621 (#1913), SA1622 (#1914), SA1623 (#2098), SA1624 (#2091), SA1625 (#1915), SA1627 (#1916), SA1642 (#1917), SA1643 (#1918), SA1648 (#1919, #1948), SA1651 (#1920)
- Other
Upgrade notices
Upgrading from StyleCop Classic
📝 This section applies to users upgrading from StyleCop Classic to StyleCop Analyzers.
➡️ We now have a list of known changes in behavior relative to StyleCop Classic.
Upgrading from StyleCop Analyzers 1.0.0
Binaries
Analyzers
Table of Analyzers
The following analyzers are included in this release (all with Warning severity by default).
ID | Title | Code Fix |
---|---|---|
SA0001 ³ | All diagnostics of XML documentation comments has been disabled due to the current project configuration | |
SA0002 ³ | The stylecop.json settings file could not be loaded due to a deserialization error | |
SA1000 | Keywords must be spaced correctly | ✔ |
SA1001 | Commas must be spaced correctly | ✔ |
SA1002 | Semicolons must be spaced correctly | ✔ |
SA1003 | Symbols must be spaced correctly | ✔ |
SA1004 | Documentation lines must begin with single space | ✔ |
SA1005 | Single line comments must begin with single space | ✔ |
SA1006 | Preprocessor keywords must not be preceded by space | ✔ |
SA1007 | Operator keyword must be followed by space | ✔ |
SA1008 | Opening parenthesis must be spaced correctly | ✔ |
SA1009 | Closing parenthesis must be spaced correctly | ✔ |
SA1010 | Opening square brackets must be spaced correctly | ✔ |
SA1011 | Closing square brackets must be spaced correctly | ✔ |
SA1012 | Opening braces must be spaced correctly | ✔ |
SA1013 | Closing braces must be spaced correctly | ✔ |
SA1014 | Opening generic brackets must be spaced correctly | ✔ |
SA1015 | Closing generic brackets must be spaced correctly | ✔ |
SA1016 | Opening attribute brackets must be spaced correctly | ✔ |
SA1017 | Closing attribute brackets must be spaced correctly | ✔ |
SA1018 | Nullable type symbols must be spaced correctly | ✔ |
SA1019 | Member access symbols must be spaced correctly | ✔ |
SA1020 | Increment decrement symbols must be spaced correctly | ✔ |
SA1021 | Negative signs must be spaced correctly | ✔ |
SA1022 | Positive signs must be spaced correctly | ✔ |
SA1023 | Dereference and access of symbols must be spaced correctly | ✔ |
SA1024 | Colons Must Be Spaced Correctly | ✔ |
SA1025 | Code must not contain multiple whitespace in a row | ✔ |
SA1026 | Code must not contain space after new keyword in implicitly typed array allocation | ✔ |
SA1027 | Tabs must not be used | ✔ |
SA1028 ³ | Code must not contain trailing whitespace | ✔ |
SA1100 | Do not prefix calls with base unless local implementation exists | ✔ |
SA1101 | Prefix local calls with this | ✔ |
SA1102 | Query clause must follow previous clause | ✔ |
SA1103 | Query clauses must be on separate lines or all on one line | ✔ |
SA1104 | Query clause must begin on new line when previous clause spans multiple lines | ✔ |
SA1105 | Query clauses spanning multiple lines must begin on own line | ✔ |
SA1106 | Code must not contain empty statements | ✔ |
SA1107 | Code must not contain multiple statements on one line | ✔ |
SA1108 | Block statements must not contain embedded comments | |
SA1110 | Opening parenthesis or bracket must be on declaration line | ✔ |
SA1111 | Closing parenthesis must be on line of last parameter | ✔ |
SA1112 | Closing parenthesis must be on line of opening parenthesis | ✔ |
SA1113 | Comma must be on the same line as previous parameter | ✔ |
SA1114 | Parameter list must follow declaration | |
SA1115 | Parameter must follow comma | |
SA1116 | Split parameters must start on line after declaration | ✔ |
SA1117 | Parameters must be on same line or separate lines | |
SA1118 | Parameter must not span multiple lines | |
SA1119 | Statement must not use unnecessary parenthesis | ✔ |
SA1120 | Comments must contain text | ✔ |
SA1121 | Use built-in type alias | ✔ |
SA1122 | Use string.Empty for empty strings | ✔ |
SA1123 | Do not place regions within elements | ✔ |
SA1124 | Do not use regions | ✔ |
SA1125 | Use shorthand for nullable types | ✔¹ |
SA1127 ³ | Generic type constraints must be on their own line | ✔ |
SA1128 ³ | Put constructor initializers on their own line | ✔ |
SA1129 ³ | Do not use default value type constructor | ✔ |
SA1130 ³ | Use lambda syntax | ✔ |
SA1131 ³ | Use readable conditions | ✔ |
SA1132 ³ | Do not combine fields | ✔ |
SA1133 ³ | Do not combine attributes | ✔ |
SA1134 ³ | Attributes must not share line | ✔ |
SA1136 ³ | Multiple enum values are placed on the same line of code | ✔ |
SA1137 ³ | Elements should have the same indentation | ✔ |
SX1101 ² ³ | Do not prefix local calls with 'this.' | ✔ |
SA1200 | Using directives must be placed within namespace | ✔ |
SA1201 | Elements must appear in the correct order | |
SA1202 | Elements must be ordered by access | |
SA1203 | Constants must appear before fields | |
SA1204 | Static elements must appear before instance elements | |
SA1205 | Partial elements must declare access | ✔ |
SA1206 | Declaration keywords must follow order | |
SA1207 | Protected must come before internal | ✔ |
SA1208 | System using directives must be placed before other using directives | ✔ |
SA1209 | Using alias directives must be placed after other using directives | ✔ |
SA1210 | Using directives must be ordered alphabetically by namespace | ✔ |
SA1211 | Using alias directives must be ordered alphabetically by alias name | ✔ |
SA1212 | Property accessors must follow order | ✔ |
SA1213 | Event accessors must follow order | ✔ |
SA1214 | Readonly fields must appear before non-readonly fields | |
SA1216 ³ | Using static directives must be placed after other using directives | ✔ |
SA1217 ³ | Using static directives must be ordered alphabetically | ✔ |
SA1300 | Element must begin with upper-case letter | ✔ |
SA1302 | Interface names must begin with I | ✔ |
SA1303 | Const field names must begin with upper-case letter | ✔ |
SA1304 | Non-private readonly fields must begin with upper-case letter | ✔ |
SA1305 ⁴ | Field names must not use Hungarian notation | |
SA1306 | Field names must begin with lower-case letter | ✔ |
SA1307 | Accessible fields must begin with upper-case letter | ✔ |
SA1308 | Variable names must not be prefixed | ✔ |
SA1309 | Field names must not begin with underscore | ✔ |
SA1310 | Field names must not contain underscore | ✔ |
SA1311 | Static readonly fields must begin with upper-case letter | ✔ |
SA1312 ³ | Variable names must begin with lower case letter | ✔ |
SA1313 ³ | Parameter names must begin with lower case letter | ✔ |
SA1314 ³ | The name of a C# type parameter does not begin with the capital letter T | ✔ |
SX1309 ² ³ | Field names must begin with underscore | ✔ |
SX1309S ² ³ | Static field names must begin with underscore | ✔ |
SA1400 | Access modifier must be declared | ✔ |
SA1401 | Fields must be private | |
SA1402 | File may only contain a single class | ✔ |
S... |
1.0.0
Summary
This is the first stable release of StyleCop Analyzers. 🎉
Aside from the version numbers, no changes were made since the 1.0.0-rc3 release.
Upgrade notices
Upgrading from StyleCop Classic
📝 This section only applies to users upgrading from StyleCop Classic to StyleCop Analyzers.
A list of known changes in behavior relative to StyleCop Classic is available to aid in the upgrade process.
Upgrading from an alpha or beta release
📝 This section only applies to users with an alpha or beta release of StyleCop Analyzers installed. Users with an RC release or newer do not need to take any special steps during upgrading.
Users upgrading from an earlier alpha or beta release of StyleCop Analyzers should first upgrade to 1.0.0 RC 3 according to those release notes, and then upgrade to this stable release.
Binaries
- NuGet: StyleCop.Analyzers 1.0.0
Analyzers
Table of Analyzers
The following analyzers are included in this release (all with Warning severity by default).
ID | Title | Code Fix |
---|---|---|
SA0000 ³ ⁴ | Workaround incomplete diagnostics in Visual Studio 2015 Update 1 | |
SA1000 | Keywords must be spaced correctly | ✔ |
SA1001 | Commas must be spaced correctly | ✔ |
SA1002 | Semicolons must be spaced correctly | ✔ |
SA1003 | Symbols must be spaced correctly | ✔ |
SA1004 | Documentation lines must begin with single space | ✔ |
SA1005 | Single line comments must begin with single space | ✔ |
SA1006 | Preprocessor keywords must not be preceded by space | ✔ |
SA1007 | Operator keyword must be followed by space | ✔ |
SA1008 | Opening parenthesis must be spaced correctly | ✔ |
SA1009 | Closing parenthesis must be spaced correctly | ✔ |
SA1010 | Opening square brackets must be spaced correctly | ✔ |
SA1011 | Closing square brackets must be spaced correctly | ✔ |
SA1012 | Opening braces must be spaced correctly | ✔ |
SA1013 | Closing braces must be spaced correctly | ✔ |
SA1014 | Opening generic brackets must be spaced correctly | ✔ |
SA1015 | Closing generic brackets must be spaced correctly | ✔ |
SA1016 | Opening attribute brackets must be spaced correctly | ✔ |
SA1017 | Closing attribute brackets must be spaced correctly | ✔ |
SA1018 | Nullable type symbols must be spaced correctly | ✔ |
SA1019 | Member access symbols must be spaced correctly | ✔ |
SA1020 | Increment decrement symbols must be spaced correctly | ✔ |
SA1021 | Negative signs must be spaced correctly | ✔ |
SA1022 | Positive signs must be spaced correctly | ✔ |
SA1023 | Dereference and access of symbols must be spaced correctly | ✔ |
SA1024 | Colons Must Be Spaced Correctly | ✔ |
SA1025 | Code must not contain multiple whitespace in a row | ✔ |
SA1026 | Code must not contain space after new keyword in implicitly typed array allocation | ✔ |
SA1027 | Tabs must not be used | ✔ |
SA1028 ³ | Code must not contain trailing whitespace | ✔ |
SA1100 | Do not prefix calls with base unless local implementation exists | ✔ |
SA1101 | Prefix local calls with this | ✔ |
SA1102 | Query clause must follow previous clause | ✔ |
SA1103 | Query clauses must be on separate lines or all on one line | ✔ |
SA1104 | Query clause must begin on new line when previous clause spans multiple lines | ✔ |
SA1105 | Query clauses spanning multiple lines must begin on own line | ✔ |
SA1106 | Code must not contain empty statements | ✔ |
SA1107 | Code must not contain multiple statements on one line | ✔ |
SA1108 | Block statements must not contain embedded comments | |
SA1110 | Opening parenthesis or bracket must be on declaration line | ✔ |
SA1111 | Closing parenthesis must be on line of last parameter | ✔ |
SA1112 | Closing parenthesis must be on line of opening parenthesis | ✔ |
SA1113 | Comma must be on the same line as previous parameter | ✔ |
SA1114 | Parameter list must follow declaration | |
SA1115 | Parameter must follow comma | |
SA1116 | Split parameters must start on line after declaration | ✔ |
SA1117 | Parameters must be on same line or separate lines | |
SA1118 | Parameter must not span multiple lines | |
SA1119 | Statement must not use unnecessary parenthesis | ✔ |
SA1120 | Comments must contain text | ✔ |
SA1121 | Use built-in type alias | ✔ |
SA1122 | Use string.Empty for empty strings | ✔ |
SA1123 | Do not place regions within elements | ✔ |
SA1124 | Do not use regions | ✔ |
SA1125 | Use shorthand for nullable types | ✔¹ |
SA1127 ³ | Generic type constraints must be on their own line | ✔ |
SA1128 ³ | Put constructor initializers on their own line | ✔ |
SA1129 ³ | Do not use default value type constructor | ✔ |
SA1130 ³ | Use lambda syntax | ✔¹ |
SA1131 ³ | Use readable conditions | ✔ |
SA1132 ³ | Do not combine fields | ✔ |
SA1133 ³ | Do not combine attributes | ✔ |
SA1134 ³ | Attributes must not share line | ✔ |
SX1101 ² ³ | Do not prefix local calls with 'this.' | ✔ |
SA1200 | Using directives must be placed within namespace | ✔ |
SA1201 | Elements must appear in the correct order | |
SA1202 | Elements must be ordered by access | |
SA1203 | Constants must appear before fields | |
SA1204 | Static elements must appear before instance elements | |
SA1205 | Partial elements must declare access | ✔ |
SA1206 | Declaration keywords must follow order | |
SA1207 | Protected must come before internal | ✔ |
SA1208 | System using directives must be placed before other using directives | ✔ |
SA1209 | Using alias directives must be placed after other using directives | ✔ |
SA1210 | Using directives must be ordered alphabetically by namespace | ✔ |
SA1211 | Using alias directives must be ordered alphabetically by alias name | ✔ |
SA1212 | Property accessors must follow order | ✔ |
SA1213 | Event accessors must follow order | ✔ |
SA1214 | Readonly fields must appear before non-readonly fields | |
SA1216 ³ | Using static directives must be placed after other using directives | ✔ |
SA1217 ³ | Using static directives must be ordered alphabetically | ✔ |
SA1300 | Element must begin with upper-case letter | ✔ |
SA1302 | Interface names must begin with I | ✔ |
SA1303 | Const field names must begin with upper-case letter | ✔ |
SA1304 | Non-private readonly fields must begin with upper-case letter | ✔ |
SA1305 ⁴ | Field names must not use Hungarian notation | |
SA1306 | Field names must begin with lower-case letter | ✔ |
SA1307 | Accessible fields must begin with upper-case letter | ✔ |
SA1308 | Variable names must not be prefixed | ✔ |
SA1309 | Field names must not begin with underscore | ✔ |
SA1310 | Field names must not contain underscore | ✔ |
SA1311 | Static readonly fields must begin with upper-case letter | ✔ |
SA1312 ³ | Variable names must begin with lower case letter | ✔ |
SA1313 ³ | Parameter names must begin with lower case letter | ✔ |
SX1309 ² ³ | Field names must begin with underscore | ✔ |
SX1309S ² ³ | Static field names must begin with underscore | ✔ |
SA1400 | Access modifier must be declared | ✔ |
SA1401 | Fields must be private | |
SA1402 | File may only contain a single class | ✔ |
SA1403 | File may only contain a single namespace | |
SA1404 | Code analysis suppression must have justification | ✔ |
SA1405 | Debug.Assert must provide message text | |
SA1406 | Debug.Fail must provide message text | |
SA1407 | Arithmetic expressions must declare precedence | ✔ |
SA1408 | Conditional expressions must declare precedence | ✔ |
SA1410 | Remove delegate parenthesis when possible | ✔ |
SA1411 | Attribute constructor must not use unnecessary parenthesis | ✔ |
SA1412 ³ ⁴ | Store files as UTF-8 | ✔ |
SA1500 | Braces for multi-line statements must not share line | ✔ |
SA1501 | Statement must not be on a single line | ✔ |
SA1502 | Element must not be on a single line | ✔ |
SA1503 | Braces must not be omitted | ✔ |
SA1504 | All accessors must be single-line or multi-line | ✔ |
SA1505 | Opening braces must not be followed by blank line | ✔ |
SA1506 | Element documentation headers must not be followed by blank line | ✔ |
SA1507 | Code must not contain multiple blank lines in a row | ✔ |
SA1508 | Closing braces must not be preceded by blank line | ✔ |
SA1509 | Opening braces must not be preceded by blank line | ✔ |
SA1510 | Chained statement blocks must not be preceded by blank line | ✔ |
SA1511 | While-do footer must not be preceded by blank line | ✔ |
SA1512 | Single-line comments must not be followed by blank line | ✔ |
SA1513 | Closing brace must be followed by blank line | ✔ |
SA1514 | Element documentation header must be preceded by blank line | ✔ |
SA1515 | Single-line comment must be preceded by blank line | ✔ |
SA1516 | Elements must be separated by blank line | ✔ |
SA1517 | Code must not contain blank lines at start of file | ✔ |
SA1518 | Use line endings correctly at end of file | ✔ |
SA1519 ³ | Braces must not be omitted from multi-line child statement | ✔ |
SA1520 ³ | Use braces consistently | ✔ |
SA1600 | Elements must be documented | ✔ |
SA1601 | Partial elements must be documented | |
SA1602 | Enumeration items must be documented | |
SA1604 | Element documentation must have summary | |
SA1605 | Partial element documentation must have summary | |
SA1606 | Element documentation must have summary text | |
SA1607 | Partial element documentation mus... |
1.0.0 RC 3
Release Candidate
Summary
- New rules
- SA0000 (#1979, SA0000Roslyn7446Workaround.md)
- Bug fixes
- Other
- Major performance improvement for Fix All operations inside Visual Studio (#1983)
- Work around incomplete diagnostics in Visual Studio 2015 Update 1 (#1979, dotnet/roslyn#7446)
Upgrade notices
Upgrading from StyleCop Classic
📝 This section applies to users upgrading from StyleCop Classic to StyleCop Analyzers.
➡️ We now have a list of known changes in behavior relative to StyleCop Classic.
Upgrading from 1.0.0-beta014 or 1.0.0-beta015
📝 This section only applies to users upgrading directly to this release from version 1.0.0-beta014 or 1.0.0-beta015.
- Workaround 1: Uninstall the old version of StyleCop.Analyzers from all projects, then install the new version of StyleCop.Analyzers into those projects.
- Workaround 2: Upgrade StyleCop.Analyzers for one project at a time, rather than for multiple projects at once.
Binaries
- NuGet: StyleCop.Analyzers 1.0.0-rc3
Analyzers
Table of Analyzers
The following analyzers are included in this release (all with Warning severity by default).
ID | Title | Code Fix |
---|---|---|
SA0000 ³ ⁴ | Workaround incomplete diagnostics in Visual Studio 2015 Update 1 | |
SA1000 | Keywords must be spaced correctly | ✔ |
SA1001 | Commas must be spaced correctly | ✔ |
SA1002 | Semicolons must be spaced correctly | ✔ |
SA1003 | Symbols must be spaced correctly | ✔ |
SA1004 | Documentation lines must begin with single space | ✔ |
SA1005 | Single line comments must begin with single space | ✔ |
SA1006 | Preprocessor keywords must not be preceded by space | ✔ |
SA1007 | Operator keyword must be followed by space | ✔ |
SA1008 | Opening parenthesis must be spaced correctly | ✔ |
SA1009 | Closing parenthesis must be spaced correctly | ✔ |
SA1010 | Opening square brackets must be spaced correctly | ✔ |
SA1011 | Closing square brackets must be spaced correctly | ✔ |
SA1012 | Opening braces must be spaced correctly | ✔ |
SA1013 | Closing braces must be spaced correctly | ✔ |
SA1014 | Opening generic brackets must be spaced correctly | ✔ |
SA1015 | Closing generic brackets must be spaced correctly | ✔ |
SA1016 | Opening attribute brackets must be spaced correctly | ✔ |
SA1017 | Closing attribute brackets must be spaced correctly | ✔ |
SA1018 | Nullable type symbols must be spaced correctly | ✔ |
SA1019 | Member access symbols must be spaced correctly | ✔ |
SA1020 | Increment decrement symbols must be spaced correctly | ✔ |
SA1021 | Negative signs must be spaced correctly | ✔ |
SA1022 | Positive signs must be spaced correctly | ✔ |
SA1023 | Dereference and access of symbols must be spaced correctly | ✔ |
SA1024 | Colons Must Be Spaced Correctly | ✔ |
SA1025 | Code must not contain multiple whitespace in a row | ✔ |
SA1026 | Code must not contain space after new keyword in implicitly typed array allocation | ✔ |
SA1027 | Tabs must not be used | ✔ |
SA1028 ³ | Code must not contain trailing whitespace | ✔ |
SA1100 | Do not prefix calls with base unless local implementation exists | ✔ |
SA1101 | Prefix local calls with this | ✔ |
SA1102 | Query clause must follow previous clause | ✔ |
SA1103 | Query clauses must be on separate lines or all on one line | ✔ |
SA1104 | Query clause must begin on new line when previous clause spans multiple lines | ✔ |
SA1105 | Query clauses spanning multiple lines must begin on own line | ✔ |
SA1106 | Code must not contain empty statements | ✔ |
SA1107 | Code must not contain multiple statements on one line | ✔ |
SA1108 | Block statements must not contain embedded comments | |
SA1110 | Opening parenthesis or bracket must be on declaration line | ✔ |
SA1111 | Closing parenthesis must be on line of last parameter | ✔ |
SA1112 | Closing parenthesis must be on line of opening parenthesis | ✔ |
SA1113 | Comma must be on the same line as previous parameter | ✔ |
SA1114 | Parameter list must follow declaration | |
SA1115 | Parameter must follow comma | |
SA1116 | Split parameters must start on line after declaration | ✔ |
SA1117 | Parameters must be on same line or separate lines | |
SA1118 | Parameter must not span multiple lines | |
SA1119 | Statement must not use unnecessary parenthesis | ✔ |
SA1120 | Comments must contain text | ✔ |
SA1121 | Use built-in type alias | ✔ |
SA1122 | Use string.Empty for empty strings | ✔ |
SA1123 | Do not place regions within elements | ✔ |
SA1124 | Do not use regions | ✔ |
SA1125 | Use shorthand for nullable types | ✔¹ |
SA1127 ³ | Generic type constraints must be on their own line | ✔ |
SA1128 ³ | Put constructor initializers on their own line | ✔ |
SA1129 ³ | Do not use default value type constructor | ✔ |
SA1130 ³ | Use lambda syntax | ✔¹ |
SA1131 ³ | Use readable conditions | ✔ |
SA1132 ³ | Do not combine fields | ✔ |
SA1133 ³ | Do not combine attributes | ✔ |
SA1134 ³ | Attributes must not share line | ✔ |
SX1101 ² ³ | Do not prefix local calls with 'this.' | ✔ |
SA1200 | Using directives must be placed within namespace | ✔ |
SA1201 | Elements must appear in the correct order | |
SA1202 | Elements must be ordered by access | |
SA1203 | Constants must appear before fields | |
SA1204 | Static elements must appear before instance elements | |
SA1205 | Partial elements must declare access | ✔ |
SA1206 | Declaration keywords must follow order | |
SA1207 | Protected must come before internal | ✔ |
SA1208 | System using directives must be placed before other using directives | ✔ |
SA1209 | Using alias directives must be placed after other using directives | ✔ |
SA1210 | Using directives must be ordered alphabetically by namespace | ✔ |
SA1211 | Using alias directives must be ordered alphabetically by alias name | ✔ |
SA1212 | Property accessors must follow order | ✔ |
SA1213 | Event accessors must follow order | ✔ |
SA1214 | Readonly fields must appear before non-readonly fields | |
SA1216 ³ | Using static directives must be placed after other using directives | ✔ |
SA1217 ³ | Using static directives must be ordered alphabetically | ✔ |
SA1300 | Element must begin with upper-case letter | ✔ |
SA1302 | Interface names must begin with I | ✔ |
SA1303 | Const field names must begin with upper-case letter | ✔ |
SA1304 | Non-private readonly fields must begin with upper-case letter | ✔ |
SA1305 ⁴ | Field names must not use Hungarian notation | |
SA1306 | Field names must begin with lower-case letter | ✔ |
SA1307 | Accessible fields must begin with upper-case letter | ✔ |
SA1308 | Variable names must not be prefixed | ✔ |
SA1309 | Field names must not begin with underscore | ✔ |
SA1310 | Field names must not contain underscore | ✔ |
SA1311 | Static readonly fields must begin with upper-case letter | ✔ |
SA1312 ³ | Variable names must begin with lower case letter | ✔ |
SA1313 ³ | Parameter names must begin with lower case letter | ✔ |
SX1309 ² ³ | Field names must begin with underscore | ✔ |
SX1309S ² ³ | Static field names must begin with underscore | ✔ |
SA1400 | Access modifier must be declared | ✔ |
SA1401 | Fields must be private | |
SA1402 | File may only contain a single class | ✔ |
SA1403 | File may only contain a single namespace | |
SA1404 | Code analysis suppression must have justification | ✔ |
SA1405 | Debug.Assert must provide message text | |
SA1406 | Debug.Fail must provide message text | |
SA1407 | Arithmetic expressions must declare precedence | ✔ |
SA1408 | Conditional expressions must declare precedence | ✔ |
SA1410 | Remove delegate parenthesis when possible | ✔ |
SA1411 | Attribute constructor must not use unnecessary parenthesis | ✔ |
SA1412 ³ ⁴ | Store files as UTF-8 | ✔ |
SA1500 | Braces for multi-line statements must not share line | ✔ |
SA1501 | Statement must not be on a single line | ✔ |
SA1502 | Element must not be on a single line | ✔ |
SA1503 | Braces must not be omitted | ✔ |
SA1504 | All accessors must be single-line or multi-line | ✔ |
SA1505 | Opening braces must not be followed by blank line | ✔ |
SA1506 | Element documentation headers must not be followed by blank line | ✔ |
SA1507 | Code must not contain multiple blank lines in a row | ✔ |
SA1508 | Closing braces must not be preceded by blank line | ✔ |
SA1509 | Opening braces must not be preceded by blank line | ✔ |
SA1510 | Chained statement blocks must not be preceded by blank line | ✔ |
SA1511 | ... |
1.0.0 RC 2
Release Candidate
Summary
- Bug fixes
Upgrade notice
➡️ We now have a list of known changes in behavior relative to StyleCop Classic.
- Workaround 1: Uninstall the old version of StyleCop.Analyzers from all projects, then install the new version of StyleCop.Analyzers into those projects.
- Workaround 2: Upgrade StyleCop.Analyzers for one project at a time, rather than for multiple projects at once.
Binaries
- NuGet: StyleCop.Analyzers 1.0.0-rc2
Analyzers
The following analyzers are included in this release (all with Warning severity by default).
ID | Title | Code Fix |
---|---|---|
SA1000 | Keywords must be spaced correctly | ✔ |
SA1001 | Commas must be spaced correctly | ✔ |
SA1002 | Semicolons must be spaced correctly | ✔ |
SA1003 | Symbols must be spaced correctly | ✔ |
SA1004 | Documentation lines must begin with single space | ✔ |
SA1005 | Single line comments must begin with single space | ✔ |
SA1006 | Preprocessor keywords must not be preceded by space | ✔ |
SA1007 | Operator keyword must be followed by space | ✔ |
SA1008 | Opening parenthesis must be spaced correctly | ✔ |
SA1009 | Closing parenthesis must be spaced correctly | ✔ |
SA1010 | Opening square brackets must be spaced correctly | ✔ |
SA1011 | Closing square brackets must be spaced correctly | ✔ |
SA1012 | Opening braces must be spaced correctly | ✔ |
SA1013 | Closing braces must be spaced correctly | ✔ |
SA1014 | Opening generic brackets must be spaced correctly | ✔ |
SA1015 | Closing generic brackets must be spaced correctly | ✔ |
SA1016 | Opening attribute brackets must be spaced correctly | ✔ |
SA1017 | Closing attribute brackets must be spaced correctly | ✔ |
SA1018 | Nullable type symbols must be spaced correctly | ✔ |
SA1019 | Member access symbols must be spaced correctly | ✔ |
SA1020 | Increment decrement symbols must be spaced correctly | ✔ |
SA1021 | Negative signs must be spaced correctly | ✔ |
SA1022 | Positive signs must be spaced correctly | ✔ |
SA1023 | Dereference and access of symbols must be spaced correctly | ✔ |
SA1024 | Colons Must Be Spaced Correctly | ✔ |
SA1025 | Code must not contain multiple whitespace in a row | ✔ |
SA1026 | Code must not contain space after new keyword in implicitly typed array allocation | ✔ |
SA1027 | Tabs must not be used | ✔ |
SA1028 ³ | Code must not contain trailing whitespace | ✔ |
SA1100 | Do not prefix calls with base unless local implementation exists | ✔ |
SA1101 | Prefix local calls with this | ✔ |
SA1102 | Query clause must follow previous clause | ✔ |
SA1103 | Query clauses must be on separate lines or all on one line | ✔ |
SA1104 | Query clause must begin on new line when previous clause spans multiple lines | ✔ |
SA1105 | Query clauses spanning multiple lines must begin on own line | ✔ |
SA1106 | Code must not contain empty statements | ✔ |
SA1107 | Code must not contain multiple statements on one line | ✔ |
SA1108 | Block statements must not contain embedded comments | |
SA1110 | Opening parenthesis or bracket must be on declaration line | ✔ |
SA1111 | Closing parenthesis must be on line of last parameter | ✔ |
SA1112 | Closing parenthesis must be on line of opening parenthesis | ✔ |
SA1113 | Comma must be on the same line as previous parameter | ✔ |
SA1114 | Parameter list must follow declaration | |
SA1115 | Parameter must follow comma | |
SA1116 | Split parameters must start on line after declaration | ✔ |
SA1117 | Parameters must be on same line or separate lines | |
SA1118 | Parameter must not span multiple lines | |
SA1119 | Statement must not use unnecessary parenthesis | ✔ |
SA1120 | Comments must contain text | ✔ |
SA1121 | Use built-in type alias | ✔ |
SA1122 | Use string.Empty for empty strings | ✔ |
SA1123 | Do not place regions within elements | ✔ |
SA1124 | Do not use regions | ✔ |
SA1125 | Use shorthand for nullable types | ✔¹ |
SA1127 ³ | Generic type constraints must be on their own line | ✔ |
SA1128 ³ | Put constructor initializers on their own line | ✔ |
SA1129 ³ | Do not use default value type constructor | ✔ |
SA1130 ³ | Use lambda syntax | ✔¹ |
SA1131 ³ | Use readable conditions | ✔ |
SA1132 ³ | Do not combine fields | ✔ |
SA1133 ³ | Do not combine attributes | ✔ |
SA1134 ³ | Attributes must not share line | ✔ |
SX1101 ² ³ | Do not prefix local calls with 'this.' | ✔ |
SA1200 | Using directives must be placed within namespace | ✔ |
SA1201 | Elements must appear in the correct order | |
SA1202 | Elements must be ordered by access | |
SA1203 | Constants must appear before fields | |
SA1204 | Static elements must appear before instance elements | |
SA1205 | Partial elements must declare access | ✔ |
SA1206 | Declaration keywords must follow order | |
SA1207 | Protected must come before internal | ✔ |
SA1208 | System using directives must be placed before other using directives | ✔ |
SA1209 | Using alias directives must be placed after other using directives | ✔ |
SA1210 | Using directives must be ordered alphabetically by namespace | ✔ |
SA1211 | Using alias directives must be ordered alphabetically by alias name | ✔ |
SA1212 | Property accessors must follow order | ✔ |
SA1213 | Event accessors must follow order | ✔ |
SA1214 | Readonly fields must appear before non-readonly fields | |
SA1216 ³ | Using static directives must be placed after other using directives | ✔ |
SA1217 ³ | Using static directives must be ordered alphabetically | ✔ |
SA1300 | Element must begin with upper-case letter | ✔ |
SA1302 | Interface names must begin with I | ✔ |
SA1303 | Const field names must begin with upper-case letter | ✔ |
SA1304 | Non-private readonly fields must begin with upper-case letter | ✔ |
SA1305 ⁴ | Field names must not use Hungarian notation | |
SA1306 | Field names must begin with lower-case letter | ✔ |
SA1307 | Accessible fields must begin with upper-case letter | ✔ |
SA1308 | Variable names must not be prefixed | ✔ |
SA1309 | Field names must not begin with underscore | ✔ |
SA1310 | Field names must not contain underscore | ✔ |
SA1311 | Static readonly fields must begin with upper-case letter | ✔ |
SA1312 ³ | Variable names must begin with lower case letter | ✔ |
SA1313 ³ | Parameter names must begin with lower case letter | ✔ |
SX1309 ² ³ | Field names must begin with underscore | ✔ |
SX1309S ² ³ | Static field names must begin with underscore | ✔ |
SA1400 | Access modifier must be declared | ✔ |
SA1401 | Fields must be private | |
SA1402 | File may only contain a single class | ✔ |
SA1403 | File may only contain a single namespace | |
SA1404 | Code analysis suppression must have justification | ✔ |
SA1405 | Debug.Assert must provide message text | |
SA1406 | Debug.Fail must provide message text | |
SA1407 | Arithmetic expressions must declare precedence | ✔ |
SA1408 | Conditional expressions must declare precedence | ✔ |
SA1410 | Remove delegate parenthesis when possible | ✔ |
SA1411 | Attribute constructor must not use unnecessary parenthesis | ✔ |
SA1412 ³ ⁴ | Store files as UTF-8 | ✔ |
SA1500 | Braces for multi-line statements must not share line | ✔ |
SA1501 | Statement must not be on a single line | ✔ |
SA1502 | Element must not be on a single line | ✔ |
SA1503 | Braces must not be omitted | ✔ |
SA1504 | All accessors must be single-line or multi-line | ✔ |
SA1505 | Opening braces must not be followed by blank line | ✔ |
SA1506 | Element documentation headers must not be followed by blank line | ✔ |
SA1507 | Code must not contain multiple blank lines in a row | ✔ |
SA1508 | Closing braces must not be preceded by blank line | ✔ |
SA1509 | Opening braces must not be preceded by blank line | ✔ |
SA1510 | Chained statement blocks must not be preceded by blank line | ✔ |
SA1511 | While-do footer must not be preceded by blank line | ✔ |
SA1512 | Single-line comments must not be followed by blank line | ✔ |
SA1513 | Closing brace must be followed by blank line | ✔ |
SA1514 | Element documentation header must be preceded by blank line | ✔ |
SA1515 | Single-line comment must be preceded by blank line | ✔ |
SA1516 | Elements must be separated by blank line | ✔ |
SA1517 | Code must not contain blank lines at start of file | ✔ |
SA1518 | Use line endings correctly at end of file | ✔ |
SA1519 ³ | Braces must not be omitted from multi-line child statement | ✔ |
SA1520 ³ | Use braces consistently | ✔ |
SA1600 | Elements must be documented | ✔ |
SA1601 | Partial elements must be documented | |
SA1602 | Enumeration items must be documented | |
SA1604 | Element documentation must have summary | |
SA1605 | Partial element documentation must have summary | |
SA1606 | Element documentation must have summary text | |
SA1607 | Partial element documentation must have summary text | |
SA1608 | Element documentation must not have default summary | |
SA1609 ⁴ | Property documentation must have value | ✔ |
SA1610 | Property do... |
1.0.0 RC 1
Release Candidate
Summary
- New rules
- Readability: SA1134
- Documentation: SA1625
- New code fixes
- Readability: SA1134
- Bug fixes
- Other
- SA1300 now applies to enum members (#1859)
- Disable ElementOrderCodeFixProvider until we can improve its reliability
- Rule set editor now only shows diagnostics which have been implemented and are ready to use
Upgrade notice
➡️ We now have a list of known changes in behavior relative to StyleCop Classic.
- Workaround 1: Uninstall the old version of StyleCop.Analyzers from all projects, then install the new version of StyleCop.Analyzers into those projects.
- Workaround 2: Upgrade StyleCop.Analyzers for one project at a time, rather than for multiple projects at once.
Binaries
- NuGet: StyleCop.Analyzers 1.0.0-rc1
Analyzers
The following analyzers are included in this release (all with Warning severity by default).
ID | Title | Code Fix |
---|---|---|
SA1000 | Keywords must be spaced correctly | ✔ |
SA1001 | Commas must be spaced correctly | ✔ |
SA1002 | Semicolons must be spaced correctly | ✔ |
SA1003 | Symbols must be spaced correctly | ✔ |
SA1004 | Documentation lines must begin with single space | ✔ |
SA1005 | Single line comments must begin with single space | ✔ |
SA1006 | Preprocessor keywords must not be preceded by space | ✔ |
SA1007 | Operator keyword must be followed by space | ✔ |
SA1008 | Opening parenthesis must be spaced correctly | ✔ |
SA1009 | Closing parenthesis must be spaced correctly | ✔ |
SA1010 | Opening square brackets must be spaced correctly | ✔ |
SA1011 | Closing square brackets must be spaced correctly | ✔ |
SA1012 | Opening braces must be spaced correctly | ✔ |
SA1013 | Closing braces must be spaced correctly | ✔ |
SA1014 | Opening generic brackets must be spaced correctly | ✔ |
SA1015 | Closing generic brackets must be spaced correctly | ✔ |
SA1016 | Opening attribute brackets must be spaced correctly | ✔ |
SA1017 | Closing attribute brackets must be spaced correctly | ✔ |
SA1018 | Nullable type symbols must be spaced correctly | ✔ |
SA1019 | Member access symbols must be spaced correctly | ✔ |
SA1020 | Increment decrement symbols must be spaced correctly | ✔ |
SA1021 | Negative signs must be spaced correctly | ✔ |
SA1022 | Positive signs must be spaced correctly | ✔ |
SA1023 | Dereference and access of symbols must be spaced correctly | ✔ |
SA1024 | Colons Must Be Spaced Correctly | ✔ |
SA1025 | Code must not contain multiple whitespace in a row | ✔ |
SA1026 | Code must not contain space after new keyword in implicitly typed array allocation | ✔ |
SA1027 | Tabs must not be used | ✔ |
SA1028 ³ | Code must not contain trailing whitespace | ✔ |
SA1100 | Do not prefix calls with base unless local implementation exists | ✔ |
SA1101 | Prefix local calls with this | ✔ |
SA1102 | Query clause must follow previous clause | ✔ |
SA1103 | Query clauses must be on separate lines or all on one line | ✔ |
SA1104 | Query clause must begin on new line when previous clause spans multiple lines | ✔ |
SA1105 | Query clauses spanning multiple lines must begin on own line | ✔ |
SA1106 | Code must not contain empty statements | ✔ |
SA1107 | Code must not contain multiple statements on one line | ✔ |
SA1108 | Block statements must not contain embedded comments | |
SA1110 | Opening parenthesis or bracket must be on declaration line | ✔ |
SA1111 | Closing parenthesis must be on line of last parameter | ✔ |
SA1112 | Closing parenthesis must be on line of opening parenthesis | ✔ |
SA1113 | Comma must be on the same line as previous parameter | ✔ |
SA1114 | Parameter list must follow declaration | |
SA1115 | Parameter must follow comma | |
SA1116 | Split parameters must start on line after declaration | ✔ |
SA1117 | Parameters must be on same line or separate lines | |
SA1118 | Parameter must not span multiple lines | |
SA1119 | Statement must not use unnecessary parenthesis | ✔ |
SA1120 | Comments must contain text | ✔ |
SA1121 | Use built-in type alias | ✔ |
SA1122 | Use string.Empty for empty strings | ✔ |
SA1123 | Do not place regions within elements | ✔ |
SA1124 | Do not use regions | ✔ |
SA1125 | Use shorthand for nullable types | ✔¹ |
SA1127 ³ | Generic type constraints must be on their own line | ✔ |
SA1128 ³ | Put constructor initializers on their own line | ✔ |
SA1129 ³ | Do not use default value type constructor | ✔ |
SA1130 ³ | Use lambda syntax | ✔¹ |
SA1131 ³ | Use readable conditions | ✔ |
SA1132 ³ | Do not combine fields | ✔ |
SA1133 ³ | Do not combine attributes | ✔ |
SA1134 ³ | Attributes must not share line | ✔ |
SX1101 ² ³ | Do not prefix local calls with 'this.' | ✔ |
SA1200 | Using directives must be placed within namespace | ✔ |
SA1201 | Elements must appear in the correct order | |
SA1202 | Elements must be ordered by access | |
SA1203 | Constants must appear before fields | |
SA1204 | Static elements must appear before instance elements | |
SA1205 | Partial elements must declare access | ✔ |
SA1206 | Declaration keywords must follow order | |
SA1207 | Protected must come before internal | ✔ |
SA1208 | System using directives must be placed before other using directives | ✔ |
SA1209 | Using alias directives must be placed after other using directives | ✔ |
SA1210 | Using directives must be ordered alphabetically by namespace | ✔ |
SA1211 | Using alias directives must be ordered alphabetically by alias name | ✔ |
SA1212 | Property accessors must follow order | ✔ |
SA1213 | Event accessors must follow order | ✔ |
SA1214 | Readonly fields must appear before non-readonly fields | |
SA1216 ³ | Using static directives must be placed after other using directives | ✔ |
SA1217 ³ | Using static directives must be ordered alphabetically | ✔ |
SA1300 | Element must begin with upper-case letter | ✔ |
SA1302 | Interface names must begin with I | ✔ |
SA1303 | Const field names must begin with upper-case letter | ✔ |
SA1304 | Non-private readonly fields must begin with upper-case letter | ✔ |
SA1305 ⁴ | Field names must not use Hungarian notation | |
SA1306 | Field names must begin with lower-case letter | ✔ |
SA1307 | Accessible fields must begin with upper-case letter | ✔ |
SA1308 | Variable names must not be prefixed | ✔ |
SA1309 | Field names must not begin with underscore | ✔ |
SA1310 | Field names must not contain underscore | ✔ |
SA1311 | Static readonly fields must begin with upper-case letter | ✔ |
SA1312 ³ | Variable names must begin with lower case letter | ✔ |
SA1313 ³ | Parameter names must begin with lower case letter | ✔ |
SX1309 ² ³ | Field names must begin with underscore | ✔ |
SX1309S ² ³ | Static field names must begin with underscore | ✔ |
SA1400 | Access modifier must be declared | ✔ |
SA1401 | Fields must be private | |
SA1402 | File may only contain a single class | ✔ |
SA1403 | File may only contain a single namespace | |
SA1404 | Code analysis suppression must have justification | ✔ |
SA1405 | Debug.Assert must provide message text | |
SA1406 | Debug.Fail must provide message text | |
SA1407 | Arithmetic expressions must declare precedence | ✔ |
SA1408 | Conditional expressions must declare precedence | ✔ |
SA1410 | Remove delegate parenthesis when possible | ✔ |
SA1411 | Attribute constructor must not use unnecessary parenthesis | ✔ |
SA1412 ³ ⁴ | Store files as UTF-8 | ✔ |
SA1500 | Braces for multi-line statements must not share line | ✔ |
SA1501 | Statement must not be on a single line | ✔ |
SA1502 | Element must not be on a single line | ✔ |
SA1503 | Braces must not be omitted | ✔ |
SA1504 | All accessors must be single-line or multi-line | ✔ |
SA1505 | Opening braces must not be followed by blank line | ✔ |
SA1506 | Element documentation headers must not be followed by blank line | ✔ |
SA1507 | Code must not contain multiple blank lines in a row | ✔ |
SA1508 | Closing braces must not be preceded by blank line | ✔ |
SA1509 | Opening braces must not be preceded by blank line | ✔ |
SA1510 | Chained statement blocks must not be preceded by blank line | ✔ |
SA1511 | While-do footer must not be preceded by blank line | ✔ |
SA1512 | Single-line comments must not be followed by blank line | ✔ |
SA1513 | Closing brace must be followed by blank line | ✔ |
SA1514 | Element documentation header must be preceded by blank line | ✔ |
SA1515 | Single-line comment must be preceded by blank line | ✔ |
SA1516 | Elements must be separated by blank line | ✔ |
SA1517 | Code must not contain blank lines at start of file | ✔ |
SA1518 | Use line endings correctly at end of file | ✔ |
SA15... |
1.0.0 Beta 17
Feature and Bug Fix Update
Summary
- New rules
- Readability: SA1133
- Documentation: SA1623, SA1624
- New code fixes
- Readability: SA1133
- Documentation: SA1623, SA1624
- Features
- Added ordering option
elementOrder
- Added ordering option
systemUsingDirectivesFirst
- Added layout option
newlineAtEndOfFile
- Added ordering option
- Bug fixes
- Other
- SA1215 was removed; former violations of this rule are now reported as SA1214
Upgrade notice
➡️ We now have a list of known changes in behavior relative to StyleCop Classic.
Binaries
Analyzers
The following analyzers are included in this release (all with Warning severity by default).
ID | Title | Code Fix |
---|---|---|
SA1000 | Keywords must be spaced correctly | ✔ |
SA1001 | Commas must be spaced correctly | ✔ |
SA1002 | Semicolons must be spaced correctly | ✔ |
SA1003 | Symbols must be spaced correctly | ✔ |
SA1004 | Documentation lines must begin with single space | ✔ |
SA1005 | Single line comments must begin with single space | ✔ |
SA1006 | Preprocessor keywords must not be preceded by space | ✔ |
SA1007 | Operator keyword must be followed by space | ✔ |
SA1008 | Opening parenthesis must be spaced correctly | ✔ |
SA1009 | Closing parenthesis must be spaced correctly | ✔ |
SA1010 | Opening square brackets must be spaced correctly | ✔ |
SA1011 | Closing square brackets must be spaced correctly | ✔ |
SA1012 | Opening braces must be spaced correctly | ✔ |
SA1013 | Closing braces must be spaced correctly | ✔ |
SA1014 | Opening generic brackets must be spaced correctly | ✔ |
SA1015 | Closing generic brackets must be spaced correctly | ✔ |
SA1016 | Opening attribute brackets must be spaced correctly | ✔ |
SA1017 | Closing attribute brackets must be spaced correctly | ✔ |
SA1018 | Nullable type symbols must be spaced correctly | ✔ |
SA1019 | Member access symbols must be spaced correctly | ✔ |
SA1020 | Increment decrement symbols must be spaced correctly | ✔ |
SA1021 | Negative signs must be spaced correctly | ✔ |
SA1022 | Positive signs must be spaced correctly | ✔ |
SA1023 | Dereference and access of symbols must be spaced correctly | ✔ |
SA1024 | Colons Must Be Spaced Correctly | ✔ |
SA1025 | Code must not contain multiple whitespace in a row | ✔ |
SA1026 | Code must not contain space after new keyword in implicitly typed array allocation | ✔ |
SA1027 | Tabs must not be used | ✔ |
SA1028 ³ | Code must not contain trailing whitespace | ✔ |
SA1100 | Do not prefix calls with base unless local implementation exists | ✔ |
SA1101 | Prefix local calls with this | ✔ |
SA1102 | Query clause must follow previous clause | ✔ |
SA1103 | Query clauses must be on separate lines or all on one line | ✔ |
SA1104 | Query clause must begin on new line when previous clause spans multiple lines | ✔ |
SA1105 | Query clauses spanning multiple lines must begin on own line | ✔ |
SA1106 | Code must not contain empty statements | ✔ |
SA1107 | Code must not contain multiple statements on one line | ✔ |
SA1108 | Block statements must not contain embedded comments | |
SA1110 | Opening parenthesis or bracket must be on declaration line | ✔ |
SA1111 | Closing parenthesis must be on line of last parameter | ✔ |
SA1112 | Closing parenthesis must be on line of opening parenthesis | ✔ |
SA1113 | Comma must be on the same line as previous parameter | ✔ |
SA1114 | Parameter list must follow declaration | |
SA1115 | Parameter must follow comma | |
SA1116 | Split parameters must start on line after declaration | ✔ |
SA1117 | Parameters must be on same line or separate lines | |
SA1118 | Parameter must not span multiple lines | |
SA1119 | Statement must not use unnecessary parenthesis | ✔ |
SA1120 | Comments must contain text | ✔ |
SA1121 | Use built-in type alias | ✔ |
SA1122 | Use string.Empty for empty strings | ✔ |
SA1123 | Do not place regions within elements | ✔ |
SA1124 | Do not use regions | ✔ |
SA1125 | Use shorthand for nullable types | ✔¹ |
SA1127 ³ | Generic type constraints must be on their own line | ✔ |
SA1128 ³ | Put constructor initializers on their own line | ✔ |
SA1129 ³ | Do not use default value type constructor | ✔ |
SA1130 ³ | Use lambda syntax | ✔¹ |
SA1131 ³ | Use readable conditions | ✔ |
SA1132 ³ | Do not combine fields | ✔ |
SA1133 ³ ⁴ | Do not combine attributes | ✔ |
SX1101 ² ³ | Do not prefix local calls with 'this.' | ✔ |
SA1200 | Using directives must be placed within namespace | ✔ |
SA1201 | Elements must appear in the correct order | ✔ |
SA1202 | Elements must be ordered by access | ✔ |
SA1203 | Constants must appear before fields | ✔ |
SA1204 | Static elements must appear before instance elements | ✔ |
SA1205 | Partial elements must declare access | ✔ |
SA1206 | Declaration keywords must follow order | |
SA1207 | Protected must come before internal | ✔ |
SA1208 | System using directives must be placed before other using directives | ✔ |
SA1209 | Using alias directives must be placed after other using directives | ✔ |
SA1210 | Using directives must be ordered alphabetically by namespace | ✔ |
SA1211 | Using alias directives must be ordered alphabetically by alias name | ✔ |
SA1212 | Property accessors must follow order | ✔ |
SA1213 | Event accessors must follow order | ✔ |
SA1214 | Readonly fields must appear before non-readonly fields | ✔ |
SA1216 ³ | Using static directives must be placed after other using directives | ✔ |
SA1217 ³ | Using static directives must be ordered alphabetically | ✔ |
SA1300 | Element must begin with upper-case letter | ✔ |
SA1302 | Interface names must begin with I | ✔ |
SA1303 | Const field names must begin with upper-case letter | ✔ |
SA1304 | Non-private readonly fields must begin with upper-case letter | ✔ |
SA1305 ⁴ | Field names must not use Hungarian notation | |
SA1306 | Field names must begin with lower-case letter | ✔ |
SA1307 | Accessible fields must begin with upper-case letter | ✔ |
SA1308 | Variable names must not be prefixed | ✔ |
SA1309 | Field names must not begin with underscore | ✔ |
SA1310 | Field names must not contain underscore | ✔ |
SA1311 | Static readonly fields must begin with upper-case letter | ✔ |
SA1312 ³ | Variable names must begin with lower case letter | ✔ |
SA1313 ³ | Parameter names must begin with lower case letter | ✔ |
SX1309 ² ³ | Field names must begin with underscore | ✔ |
SX1309S ² ³ | Static field names must begin with underscore | ✔ |
SA1400 | Access modifier must be declared | ✔ |
SA1401 | Fields must be private | |
SA1402 | File may only contain a single class | ✔ |
SA1403 | File may only contain a single namespace | |
SA1404 | Code analysis suppression must have justification | ✔ |
SA1405 | Debug.Assert must provide message text | |
SA1406 | Debug.Fail must provide message text | |
SA1407 | Arithmetic expressions must declare precedence | ✔ |
SA1408 | Conditional expressions must declare precedence | ✔ |
SA1410 | Remove delegate parenthesis when possible | ✔ |
SA1411 | Attribute constructor must not use unnecessary parenthesis | ✔ |
SA1412 ³ ⁴ | Store files as UTF-8 | ✔ |
SA1500 | Braces for multi-line statements must not share line | ✔ |
SA1501 | Statement must not be on a single line | ✔ |
SA1502 | Element must not be on a single line | ✔ |
SA1503 | Braces must not be omitted | ✔ |
SA1504 | All accessors must be single-line or multi-line | ✔ |
SA1505 | Opening braces must not be followed by blank line | ✔ |
SA1506 | Element documentation headers must not be followed by blank line | ✔ |
SA1507 | Code must not contain multiple blank lines in a row | ✔ |
SA1508 | Closing braces must not be preceded by blank line | ✔ |
SA1509 | Opening braces must not be preceded by blank line | ✔ |
SA1510 | Chained statement blocks must not be preceded by blank line | ✔ |
SA1511 | While-do footer must not be preceded by blank line | ✔ |
SA1512 | Single-line comments must not be followed by blank line | ✔ |
SA1513 | Closing brace must be followed by blank line | ✔ |
SA1514 | Element documentation header must be preceded by blank line | ✔ |
SA1515 | Single-line comment must be preceded by blank line | ✔ |
SA1516 | Elements must be separated by blank line | ✔ |
SA1517 | Code must not contain blank lines at start of file | ✔ |
SA1518 | Code must not contain blank lines at end of file | ✔ |
SA1519 ³ | Braces must not be omitted from multi-line child statement | ✔ |
SA1520 ³ | Use braces consistently | ✔ |
SA1600 | Elements must be documented | ✔ |
SA1601 | Partial elements must be documented | |
SA1602 | Enumeration items must be documented | |
SA1604 | Element documentation must have summary | |
SA1605 | Partial element documentation must have summary | |
SA1606 | Element documentation must have summary text | |
SA1607 | Partial element documentation must have summary text | |
SA1608 | Element documentation must not... |
1.0.0 Beta 16
Feature and Bug Fix Update
Summary
- Features
- Added configuration option
usingDirectivesPlacement
- Added configuration option
- Bug fixes
- Spacing: SA1001 (#1663), SA1003 (#1748, #1764, #1776)
- Readability: SA1111 (#1688), SA1113 (#1654), SA1120 (#1708), SA1129 (#1668), SX1101 (#1706, #1707, #1709, #1719)
- Ordering: SA1200 (#1733), SA1202 (#1507)
- Layout: SA1500 (#1679), SA1502 (#1677), SA1506 (#1681), SA1513 (#1713), SA1514 (#1682)
- Documentation: SA1611 (#1678), SA1627 (#1692), SA1633 (#1781), SA1648 (#1680), SA1649 (#1730)
- Other:
- Work around Roslyn performance bug (#1736)
- Use the standard term 'brace' instead of 'curly bracket'
- Remove MSBuild integration which attempted to add stylecop.json to the build automatically (see note that follows)
Breaking changes
Binaries
Analyzers
The following analyzers are included in this release (all with Warning severity by default).
ID | Title | Code Fix |
---|---|---|
SA1000 | Keywords must be spaced correctly | ✔ |
SA1001 | Commas must be spaced correctly | ✔ |
SA1002 | Semicolons must be spaced correctly | ✔ |
SA1003 | Symbols must be spaced correctly | ✔ |
SA1004 | Documentation lines must begin with single space | ✔ |
SA1005 | Single line comments must begin with single space | ✔ |
SA1006 | Preprocessor keywords must not be preceded by space | ✔ |
SA1007 | Operator keyword must be followed by space | ✔ |
SA1008 | Opening parenthesis must be spaced correctly | ✔ |
SA1009 | Closing parenthesis must be spaced correctly | ✔ |
SA1010 | Opening square brackets must be spaced correctly | ✔ |
SA1011 | Closing square brackets must be spaced correctly | ✔ |
SA1012 | Opening braces must be spaced correctly | ✔ |
SA1013 | Closing braces must be spaced correctly | ✔ |
SA1014 | Opening generic brackets must be spaced correctly | ✔ |
SA1015 | Closing generic brackets must be spaced correctly | ✔ |
SA1016 | Opening attribute brackets must be spaced correctly | ✔ |
SA1017 | Closing attribute brackets must be spaced correctly | ✔ |
SA1018 | Nullable type symbols must be spaced correctly | ✔ |
SA1019 | Member access symbols must be spaced correctly | ✔ |
SA1020 | Increment decrement symbols must be spaced correctly | ✔ |
SA1021 | Negative signs must be spaced correctly | ✔ |
SA1022 | Positive signs must be spaced correctly | ✔ |
SA1023 | Dereference and access of symbols must be spaced correctly | ✔ |
SA1024 | Colons Must Be Spaced Correctly | ✔ |
SA1025 | Code must not contain multiple whitespace in a row | ✔ |
SA1026 | Code must not contain space after new keyword in implicitly typed array allocation | ✔ |
SA1027 | Tabs must not be used | ✔ |
SA1028 ³ | Code must not contain trailing whitespace | ✔ |
SA1100 | Do not prefix calls with base unless local implementation exists | ✔ |
SA1101 | Prefix local calls with this | ✔ |
SA1102 | Query clause must follow previous clause | ✔ |
SA1103 | Query clauses must be on separate lines or all on one line | ✔ |
SA1104 | Query clause must begin on new line when previous clause spans multiple lines | ✔ |
SA1105 | Query clauses spanning multiple lines must begin on own line | ✔ |
SA1106 | Code must not contain empty statements | ✔ |
SA1107 | Code must not contain multiple statements on one line | ✔ |
SA1108 | Block statements must not contain embedded comments | |
SA1110 | Opening parenthesis or bracket must be on declaration line | ✔ |
SA1111 | Closing parenthesis must be on line of last parameter | ✔ |
SA1112 | Closing parenthesis must be on line of opening parenthesis | ✔ |
SA1113 | Comma must be on the same line as previous parameter | ✔ |
SA1114 | Parameter list must follow declaration | |
SA1115 | Parameter must follow comma | |
SA1116 | Split parameters must start on line after declaration | ✔ |
SA1117 | Parameters must be on same line or separate lines | |
SA1118 | Parameter must not span multiple lines | |
SA1119 | Statement must not use unnecessary parenthesis | ✔ |
SA1120 | Comments must contain text | ✔ |
SA1121 | Use built-in type alias | ✔ |
SA1122 | Use string.Empty for empty strings | ✔ |
SA1123 | Do not place regions within elements | ✔ |
SA1124 | Do not use regions | ✔ |
SA1125 | Use shorthand for nullable types | ✔¹ |
SA1127 ³ | Generic type constraints must be on their own line | ✔ |
SA1128 ³ | Put constructor initializers on their own line | ✔ |
SA1129 ³ | Do not use default value type constructor | ✔ |
SA1130 ³ | Use lambda syntax | ✔¹ |
SA1131 ³ | Use readable conditions | ✔ |
SA1132 ³ | Do not combine fields | ✔ |
SX1101 ² ³ | Do not prefix local calls with 'this.' | ✔ |
SA1200 | Using directives must be placed within namespace | ✔ |
SA1201 | Elements must appear in the correct order | ✔ |
SA1202 | Elements must be ordered by access | ✔ |
SA1203 | Constants must appear before fields | ✔ |
SA1204 | Static elements must appear before instance elements | ✔ |
SA1205 | Partial elements must declare access | ✔ |
SA1206 | Declaration keywords must follow order | |
SA1207 | Protected must come before internal | ✔ |
SA1208 | System using directives must be placed before other using directives | ✔ |
SA1209 | Using alias directives must be placed after other using directives | ✔ |
SA1210 | Using directives must be ordered alphabetically by namespace | ✔ |
SA1211 | Using alias directives must be ordered alphabetically by alias name | ✔ |
SA1212 | Property accessors must follow order | ✔ |
SA1213 | Event accessors must follow order | ✔ |
SA1214 | Static readonly elements must appear before static non-readonly elements | ✔ |
SA1215 | Instance readonly elements must appear before instance non-readonly elements | ✔ |
SA1216 ³ | Using static directives must be placed after other using directives | ✔ |
SA1217 ³ | Using static directives must be ordered alphabetically | ✔ |
SA1300 | Element must begin with upper-case letter | ✔ |
SA1302 | Interface names must begin with I | ✔ |
SA1303 | Const field names must begin with upper-case letter | ✔ |
SA1304 | Non-private readonly fields must begin with upper-case letter | ✔ |
SA1305 ⁴ | Field names must not use Hungarian notation | |
SA1306 | Field names must begin with lower-case letter | ✔ |
SA1307 | Accessible fields must begin with upper-case letter | ✔ |
SA1308 | Variable names must not be prefixed | ✔ |
SA1309 | Field names must not begin with underscore | ✔ |
SA1310 | Field names must not contain underscore | ✔ |
SA1311 | Static readonly fields must begin with upper-case letter | ✔ |
SA1312 ³ | Variable names must begin with lower case letter | ✔ |
SA1313 ³ | Parameter names must begin with lower case letter | ✔ |
SX1309 ² ³ | Field names must begin with underscore | ✔ |
SX1309S ² ³ | Static field names must begin with underscore | ✔ |
SA1400 | Access modifier must be declared | ✔ |
SA1401 | Fields must be private | |
SA1402 | File may only contain a single class | ✔ |
SA1403 | File may only contain a single namespace | |
SA1404 | Code analysis suppression must have justification | ✔ |
SA1405 | Debug.Assert must provide message text | |
SA1406 | Debug.Fail must provide message text | |
SA1407 | Arithmetic expressions must declare precedence | ✔ |
SA1408 | Conditional expressions must declare precedence | ✔ |
SA1410 | Remove delegate parenthesis when possible | ✔ |
SA1411 | Attribute constructor must not use unnecessary parenthesis | ✔ |
SA1412 ³ ⁴ | Store files as UTF-8 | ✔ |
SA1500 | Braces for multi-line statements must not share line | ✔ |
SA1501 | Statement must not be on a single line | ✔ |
SA1502 | Element must not be on a single line | ✔ |
SA1503 | Braces must not be omitted | ✔ |
SA1504 | All accessors must be single-line or multi-line | ✔ |
SA1505 | Opening braces must not be followed by blank line | ✔ |
SA1506 | Element documentation headers must not be followed by blank line | ✔ |
SA1507 | Code must not contain multiple blank lines in a row | ✔ |
SA1508 | Closing braces must not be preceded by blank line | ✔ |
SA1509 | Opening braces must not be preceded by blank line | ✔ |
SA1510 | Chained statement blocks must not be preceded by blank line | ✔ |
SA1511 | While-do footer must not be preceded by blank line | ✔ |
SA1512 | Single-line comments must not be followed by blank line | ✔ |
SA1513 | Closing brace must be followed by blank line | ✔ |
SA1514 | Element documentation header must be preceded by blank line | ✔ |
SA1515 | Single-line comment must be preceded by blank line | ✔ |
SA1516 | Elements must be separated by blank line | ✔ |
SA1517 | Code must not contain blank lines at start of file | ✔ |
SA1518 | Code must not contain blank lines at end of file | ✔ |
SA1519 ³ | Braces must not be omitted from multi-line child statement | ✔ |
SA1520 ³ | Use braces consistently | ✔ |
SA1600 | Elements must be documented | ✔ |
SA1601 | Partial elements must be documented | |
SA1602 | Enumeration items must be documented | |
SA1604 | Element documentation must have summary | |
SA1605 | Partial element documentation must have summary | |
SA1606 | Element documentation must have summary text | |
SA1607 | Partial element documentation must have summary text | |
SA1608 | Element documentation must not have default summary | |
SA1609 ⁴ | Property documentation must have value | ✔ |
SA1610 | Prop... |
1.0.0 Beta 15
Feature and Bug Fix Update
Summary
- New rules
- Readability rules: SX1101
- Documentation rules: SA1627
- New code fixes
- Readability rules: SX1101
- Features
- Other: Performance improvements
- Bug fixes
Binaries
Analyzers
The following analyzers are included in this release (all with Warning severity by default).
ID | Title | Code Fix |
---|---|---|
SA1000 | Keywords must be spaced correctly | ✔ |
SA1001 | Commas must be spaced correctly | ✔ |
SA1002 | Semicolons must be spaced correctly | ✔ |
SA1003 | Symbols must be spaced correctly | ✔ |
SA1004 | Documentation lines must begin with single space | ✔ |
SA1005 | Single line comments must begin with single space | ✔ |
SA1006 | Preprocessor keywords must not be preceded by space | ✔ |
SA1007 | Operator keyword must be followed by space | ✔ |
SA1008 | Opening parenthesis must be spaced correctly | ✔ |
SA1009 | Closing parenthesis must be spaced correctly | ✔ |
SA1010 | Opening square brackets must be spaced correctly | ✔ |
SA1011 | Closing square brackets must be spaced correctly | ✔ |
SA1012 | Opening curly brackets must be spaced correctly | ✔ |
SA1013 | Closing curly brackets must be spaced correctly | ✔ |
SA1014 | Opening generic brackets must be spaced correctly | ✔ |
SA1015 | Closing generic brackets must be spaced correctly | ✔ |
SA1016 | Opening attribute brackets must be spaced correctly | ✔ |
SA1017 | Closing attribute brackets must be spaced correctly | ✔ |
SA1018 | Nullable type symbols must be spaced correctly | ✔ |
SA1019 | Member access symbols must be spaced correctly | ✔ |
SA1020 | Increment decrement symbols must be spaced correctly | ✔ |
SA1021 | Negative signs must be spaced correctly | ✔ |
SA1022 | Positive signs must be spaced correctly | ✔ |
SA1023 | Dereference and access of symbols must be spaced correctly | ✔ |
SA1024 | Colons Must Be Spaced Correctly | ✔ |
SA1025 | Code must not contain multiple whitespace in a row | ✔ |
SA1026 | Code must not contain space after new keyword in implicitly typed array allocation | ✔ |
SA1027 | Tabs must not be used | ✔ |
SA1028 ³ | Code must not contain trailing whitespace | ✔ |
SA1100 | Do not prefix calls with base unless local implementation exists | ✔ |
SA1101 | Prefix local calls with this | ✔ |
SA1102 | Query clause must follow previous clause | ✔ |
SA1103 | Query clauses must be on separate lines or all on one line | ✔ |
SA1104 | Query clause must begin on new line when previous clause spans multiple lines | ✔ |
SA1105 | Query clauses spanning multiple lines must begin on own line | ✔ |
SA1106 | Code must not contain empty statements | ✔ |
SA1107 | Code must not contain multiple statements on one line | ✔ |
SA1108 | Block statements must not contain embedded comments | |
SA1110 | Opening parenthesis or bracket must be on declaration line | ✔ |
SA1111 | Closing parenthesis must be on line of last parameter | ✔ |
SA1112 | Closing parenthesis must be on line of opening parenthesis | ✔ |
SA1113 | Comma must be on the same line as previous parameter | ✔ |
SA1114 | Parameter list must follow declaration | |
SA1115 | Parameter must follow comma | |
SA1116 | Split parameters must start on line after declaration | ✔ |
SA1117 | Parameters must be on same line or separate lines | |
SA1118 | Parameter must not span multiple lines | |
SA1119 | Statement must not use unnecessary parenthesis | ✔ |
SA1120 | Comments must contain text | ✔ |
SA1121 | Use built-in type alias | ✔ |
SA1122 | Use string.Empty for empty strings | ✔ |
SA1123 | Do not place regions within elements | ✔ |
SA1124 | Do not use regions | ✔ |
SA1125 | Use shorthand for nullable types | ✔¹ |
SA1127 ³ | Generic type constraints must be on their own line | ✔ |
SA1128 ³ | Put constructor initializers on their own line | ✔ |
SA1129 ³ | Do not use default value type constructor | ✔ |
SA1130 ³ | Use lambda syntax | ✔¹ |
SA1131 ³ | Use readable conditions | ✔ |
SA1132 ³ | Do not combine fields | ✔ |
SX1101 ² ³ | Do not prefix local calls with 'this.' | ✔ |
SA1200 | Using directives must be placed within namespace | ✔ |
SA1201 | Elements must appear in the correct order | ✔ |
SA1202 | Elements must be ordered by access | ✔ |
SA1203 | Constants must appear before fields | ✔ |
SA1204 | Static elements must appear before instance elements | ✔ |
SA1205 | Partial elements must declare access | ✔ |
SA1206 | Declaration keywords must follow order | |
SA1207 | Protected must come before internal | ✔ |
SA1208 | System using directives must be placed before other using directives | ✔ |
SA1209 | Using alias directives must be placed after other using directives | ✔ |
SA1210 | Using directives must be ordered alphabetically by namespace | ✔ |
SA1211 | Using alias directives must be ordered alphabetically by alias name | ✔ |
SA1212 | Property accessors must follow order | ✔ |
SA1213 | Event accessors must follow order | ✔ |
SA1214 | Static readonly elements must appear before static non-readonly elements | ✔ |
SA1215 | Instance readonly elements must appear before instance non-readonly elements | ✔ |
SA1216 ³ | Using static directives must be placed after other using directives | ✔ |
SA1217 ³ | Using static directives must be ordered alphabetically | ✔ |
SA1300 | Element must begin with upper-case letter | ✔ |
SA1302 | Interface names must begin with I | ✔ |
SA1303 | Const field names must begin with upper-case letter | ✔ |
SA1304 | Non-private readonly fields must begin with upper-case letter | ✔ |
SA1305 ⁴ | Field names must not use Hungarian notation | |
SA1306 | Field names must begin with lower-case letter | ✔ |
SA1307 | Accessible fields must begin with upper-case letter | ✔ |
SA1308 | Variable names must not be prefixed | ✔ |
SA1309 | Field names must not begin with underscore | ✔ |
SA1310 | Field names must not contain underscore | ✔ |
SA1311 | Static readonly fields must begin with upper-case letter | ✔ |
SA1312 ³ | Variable names must begin with lower case letter | ✔ |
SA1313 ³ | Parameter names must begin with lower case letter | ✔ |
SX1309 ² ³ | Field names must begin with underscore | ✔ |
SX1309S ² ³ | Static field names must begin with underscore | ✔ |
SA1400 | Access modifier must be declared | ✔ |
SA1401 | Fields must be private | |
SA1402 | File may only contain a single class | ✔ |
SA1403 | File may only contain a single namespace | |
SA1404 | Code analysis suppression must have justification | ✔ |
SA1405 | Debug.Assert must provide message text | |
SA1406 | Debug.Fail must provide message text | |
SA1407 | Arithmetic expressions must declare precedence | ✔ |
SA1408 | Conditional expressions must declare precedence | ✔ |
SA1410 | Remove delegate parenthesis when possible | ✔ |
SA1411 | Attribute constructor must not use unnecessary parenthesis | ✔ |
SA1412 ³ ⁴ | Store files as UTF-8 | ✔ |
SA1500 | Curly brackets for multi-line statements must not share line | ✔ |
SA1501 | Statement must not be on a single line | ✔ |
SA1502 | Element must not be on a single line | ✔ |
SA1503 | Curly brackets must not be omitted | ✔ |
SA1504 | All accessors must be single-line or multi-line | ✔ |
SA1505 | Opening curly brackets must not be followed by blank line | ✔ |
SA1506 | Element documentation headers must not be followed by blank line | ✔ |
SA1507 | Code must not contain multiple blank lines in a row | ✔ |
SA1508 | Closing curly brackets must not be preceded by blank line | ✔ |
SA1509 | Opening curly brackets must not be preceded by blank line | ✔ |
SA1510 | Chained statement blocks must not be preceded by blank line | ✔ |
SA1511 | While-do footer must not be preceded by blank line | ✔ |
SA1512 | Single-line comments must not be followed by blank line | ✔ |
SA1513 | Closing curly bracket must be followed by blank line | ✔ |
SA1514 | Element documentation header must be preceded by blank line | ✔ |
SA1515 | Single-line comment must be preceded by blank line | ✔ |
SA1516 | Elements must be separated by blank line | ✔ |
SA1517 | Code must not contain blank lines at start of file | ✔ |
SA1518 | Code must not contain blank lines at end of file | ✔ |
SA1519 ³ | Curly brackets must not be omitted from multi-line child statement | ✔ |
SA1520 ³ | Use curly brackets consistently | ✔ |
SA1600 | Elements must be documented | ✔ |
SA1601 | Partial elements must be documented | |
SA1602 | Enumeration items must be documented | |
SA1604 | Element documentation must have summary | |
SA1605 | Partial element documentation must have summary | |
SA1606 | Element documentation must have summary text | |
SA1607 | Partial element documentation must have summary text | |
SA1608 | Element documentation must not have default summary | |
SA1609 ⁴ | Property documentation must have value | ✔ |
SA1610 | Property documentation must have value text | ✔ |
SA1611 | Element parameters must be documented | |
SA1612 | Element parameter documentation must match element parameters | |
SA1613 | Element parameter documentation must declare parameter name | |
SA1614 | Element parameter documentation must have text | |
SA1615 | Element return value must be documented | ✔ |
SA1616 | Element return value documentation must have text | |
SA1617 | Void return value must not be documented | ✔ |
SA1618 | Generic type parameters must be documented | |
SA1619 | Generic type parameters must be documented partial class | |
SA1620 | Generic type... |