This is the first stable StyleCop.Analyzers release since 1.1.118. It includes the entire 1.2 beta line and the 1.3 revival: the analyzers now understand C# 8 through the C# 15 previews, many long-standing bugs are fixed, and the project is once again actively maintained. Thank you to everyone who contributed code, reviews, translations and bug reports over the long gap.
Highlights
- C# 8 through C# 15 language support. Rules now understand records and record structs, file-scoped namespaces, global usings, raw and interpolated strings, primary constructors, collection expressions, partial properties, events and constructors,
allows ref struct, C# 14 extension blocks and thefieldkeyword, and C# 15 preview unions with theclosedandsafemodifiers, instead of ignoring that syntax or crashing on it. (#4142, #4139, #4137, #4163, #4148, #4191, #4193) - New rules. SA1143 checks that wrapped conditional (
?:) expressions are laid out consistently, SA1315 requires overriding and implementing parameters to keep their inherited names, SA1317 reports identifiers that use letters outside basic Latin A–Z, SA1653 reports<summary>documentation on more than one part of a partial type, and SA1654 reports escaped generic brackets increfs (for exampleList<T>vsList{T}). SX1412 is an opt-in alternative to SA1412 that requires UTF-8 without a BOM. All of these except SX1412 are on by default as warnings. (#3942, #4299, #4318, #4314, #4315, #4328) - Better code fixes. The member-ordering rules (SA1201, SA1202, SA1203, SA1204 and SA1214) now offer their code fix, including Fix All. Many other rules gained fixes, and existing fixes keep comments, trivia, custom indentation and the document's line endings, and use the compiler's batch Fix All. (#4312, #4076, #4199, #4108, #4229, #4360)
- More configuration. Every setting can be set in
.editorconfig. New settings includeorderingRules.memberKindOrder,orderingRules.accessibilityOrderandlayoutRules.allowBracelessIfStatements(bracelessifs are off by default; the accessibility order default is unchanged). (#4221, #3285, #4324, #4359, #4319) - Fewer false positives and crash fixes. A long backlog of spacing, layout, documentation, naming and maintainability issues was cleared, including several crashes and incorrect code fixes found by fuzzing.
- Localization and documentation. This release adds Simplified Chinese (
zh-CN) resources and documentation, finishes the Czech translations, and includes more translations of code-fix documentation text (Czech, Dutch, Russian and others). Rule documentation and status are published on GitHub Pages. (#4285, #4286, #3374, #3944, #3900, #4220, #4218) - Packaging and engineering. The package has an icon and a README, and PDBs are embedded in the DLLs (there is no separate symbols package). Packages are published from GitHub Actions using nuget.org trusted publishing. CI runs on GitHub Actions on Linux, the build uses the .NET 10 SDK, and Renovate keeps dependencies current. The analyzers still target the same Roslyn version, so they work with the same compilers and IDEs as before. (#4320, #4204, #4173, #4123, #4105, #4126, #4231)
Behavior changes worth knowing about
Upgrading from 1.1.118, or from a 1.2 beta, may produce new or different diagnostics:
- Rules now cover newer syntax. Ordering, layout, spacing and documentation rules now analyze records, primary constructors, collection expressions, extension blocks, unions and other newer constructs. They used to skip these, so expect new warnings in code that uses them.
- New rules on by default: SA1143, SA1315, SA1317, SA1653 and SA1654 are enabled as warnings. SX1412 is off by default.
- Extension members need documentation. SA1600 no longer treats C# 14 extension blocks as private, so their public members must be documented. SA1600 also reports undocumented record primary constructor parameters. (#4163, #4213)
- Partial types and members. For partial methods, properties, indexers, constructors, events and types, documenting one part is enough (SA1600 leaves the check for partial members to SA1601). SA1653 reports a
<summary>on more than one part, but ignores generated partial declarations such as WPF*.g.csfiles. (#4148, #4149, #4152, #4308, #4299, #4393) - SA1500 and SA1137 now check the brackets of multi-line collection expressions. SA1137 accepts aligning a closing bracket with an inline opening bracket (one that follows other code on the same line) or with the opening line's indentation. Both rules offer an alternate, tab-aware code fix that aligns the closing bracket with the opening bracket. (#4396, #4400)
- SA1642 expects "union" wording in constructor summaries of C# 15 union types, for example "Initializes a new instance of the … union.", and "interface" rather than "class" in the standard text for static constructors in interfaces. (#4193, #4386)
- SA1121 reports the built-in type inside a using alias target instead of every use of the alias, and no longer reports
IntPtrandUIntPtrin XML documentationcrefs, or in shared source compiled for targets wherenintisn't equivalent. SA1121 and SA1125 also report System types in using alias targets. (#4287, #4395, #4175) - SA1316 always reports explicitly written tuple element names, even when
includeInferredTupleElementNamesis off. (#4202) - SA1312 no longer reports
_forforeachvariables andusingdeclarations. (#4203) - SA1205 treats the
filemodifier as an access modifier. (#4198) - SA1304 now analyzes
protected readonlyfields when SA1307 is enabled. (#4217) - SA1122 reports empty interpolated and raw string literals, and SA1130 reports anonymous methods whose parameter names differ from the delegate's. (#4178, #4179)
- SA1407 now checks bitwise operators (
&,|,^) and>>>. SA1408 reports??mixed with&&or||without parentheses. (#4289, #4323) - SA1200 reports and moves
extern aliasdirectives using the same placement setting asusingdirectives. (#4313) - SA1017 requires a space after a parameter's or type parameter's attribute list, for example
[NotNullWhen(true)] out string? foo. (#4321) - SA1633: disabling one required-header rule, for example SA1637, no longer turns off the other header checks. (#4276)
- SA1202 treats explicit interface events as public, like other explicit interface members. SA1137 aligns type members to their most common indentation instead of the first member. SA1649 picks the type that names the file according to the
maintainabilityRules.topLevelTypessetting. (#4281, #4301, #4316) - SA1600 respects the
documentInterfacessetting. WithdocumentInterfaces: false, public interfaces and their members are still required whendocumentExposedElementsis on. WithdocumentInterfaces: "exposed", members of interfaces that aren't actually exposed are not reported. (#3140, #4346, #4343) - SA1135 no longer reports using directives that start with an
extern alias. (#4341) - SA1143 allows branches that continue onto more lines, and accepts an expanded conditional whose condition spans several lines when the
?and:lines line up and are indented past the condition's last line. The SA1143 code fix keeps multi-line branches intact. (#4336, #4374, #4392) - The default rule set is complete, so rules that were missing from it are now listed with their default severity. (#4115)
- Packaging: the separate
.symbols.nupkgis gone, because PDBs are now embedded in the DLLs. (#4173)
All changes
Fixes
- Fix SA1504, SA1413, SA1402, SA1135, and blank lines above documentation comments by @AArnott in #4210
- Update SettingsHelper to not throw exception if the settings file can not be read by @bjornhellander in #3935
- SA1316: always check explicit element names in tuple expressions by @AArnott in #4202
- SA1118: apply the multi-line argument exceptions to attribute arguments by @AArnott in #4195
- SA1205: treat the C# 11 file modifier as an access modifier by @AArnott in #4198
- Update SA1623 and SA1624 to not trigger if the summary contains an inheritdoc element by @bjornhellander in #3880
- Fix SA1627/SA1651 crash on with no documented member by @AArnott in #4380
- Fix SA1500 NRE on a top-level block at the start of a file by @AArnott in #4383
- Fix SA1500 code fix infinite loop on unmatched braces by @AArnott in #4382
- Fix SA1642 code fix for static constructors in generic interfaces by @AArnott in #4384
- Fix NRE in using code fix when qualifying alias-any-type usings by @AArnott in #4381
- Fix using code fix rewriting non-generic System.ValueTuple alias by @AArnott in #4385
- Fix collection expression bracket layout in SA1500 and SA1137 by @AArnott in #4396
- SA1137: accept inline collection bracket alignment by @AArnott in #4400
- SA1121: Preserve native integer compatibility in crefs and linked targets by @AArnott in #4395
- SA1653: Ignore summary tags in generated partial declarations by @AArnott in #4393
- SA1143: Preserve multiline branches when aligning closing delimiters by @AArnott in #4392
- Use 'interface' in SA1642 standard text for interface static constructors by @AArnott in #4386
- Fix crashes and code fixes found by syntax fuzzing by @AArnott in #4344
- SA1600: Restore additive interface documentation settings by @AArnott in #4346
- SA1600: Respect effective accessibility in exposed interface documentation by @AArnott in #4343
- SA1601: only require documentation on one part of a partial type by @AArnott in #4308
- SA1121: report using alias targets by @AArnott in #4287
- SA1407: Cover bitwise and unsigned shift operators by @AArnott in #4289
- SA1633: Keep other header checks active for optional headers by @AArnott in #4276
- SA1202: Order explicit interface events as public by @AArnott in #4281
- SA1137: Choose common indentation for type members by @AArnott in #4301
- C# 13: SA1600 leaves partial methods, properties and indexers to SA1601 (stacked on #4148) by @AArnott in #4149
- Handle C# 14 partial constructors and events as partial elements by @AArnott in #4152
- SA1600: report undocumented record primary constructor parameters by @AArnott in #4213
- SA1312: allow _ for foreach variables and using declarations by @AArnott in #4203
- SA1304: analyze protected readonly fields when SA1307 is enabled by @AArnott in #4217
- SA1122: report empty interpolated and raw string literals by @AArnott in #4178
- SA1130: report anonymous methods whose parameter names differ from the delegate's by @AArnott in #4179
- SA1121/SA1125: report System types in using alias targets from C# 12 by @AArnott in #4175
- Issue 3100 - Changed SA1600 and tests to meet new documentInterfaces values by @CPAM34 in #3140
- Complete the default rule set by @alexander-efremov in #4115
- SA1134: exempt attributes on auto-property accessors by @AArnott in #4260
- SA1202: allow dependent fields to vary from access ordering by @AArnott in #4261
- SA1003: handle postfix operators and null forgiveness by @AArnott in #4265
- Allow multiline conditional expressions by @bgrainger in #4336
- SA1143: Allow multiline conditions by @AArnott in #4374
- SA1114: Allow conditional directives before list items by @AArnott in #4356
- SA1009: Allow multiline tuple parenthesis layout by @AArnott in #4358
- Fix for #2918 - Update 'SA1627MessageFormat' in 'DocumentationResources.resx' by @RalfKoban in #2919
- Fixed spacing issue for SA1139 code fix by @vweijsters in #2904
- Fixed issue in UsingCodeFixProvider with ValueTuple definitions under C# 7 by @vweijsters in #2932
- SA1642 - Fix single line summary when changing the reference by @tokarzkj in #2976
- Remove extraneous periods in rule messages by @nnpcYvIVl in #2998
- Update to StyleCop.Analyzers 1.2.0-beta.66 by @sharwell in #3014
- Fix SA1101 requiring 'this' for local functions by @sharwell in #3023
- Added special case to the SA1119 code fix when removing a paren after… by @vweijsters in #3025
- Fix issue in SA1130 code fix with parameterless delegates. by @vweijsters in #3020
- Do not require space before open parenthesis in a range expression (#3040) by @ssg in #3041
- Make SA1500 work with stackalloc arrays (#3047) by @pantosha in #3054
- Do not report SA1141 for single-element tuples by @sharwell in #3060
- Fix spacing after closing brace in patterns by @sharwell in #3061
- Clean up dead test code by @sharwell in #3063
- Make SA1011 work with exclamation (
!) by @pantosha in #3071 - Should SA1307 check verbatim identifiers? by @nxtn in #3070
- Run tests for coverage even if one fails by @sharwell in #3080
- issue #3067 is not reproduced by @pantosha in #3069
- Fix SA1003 handling of colon in format clause by @sharwell in #3077
- Fix spacing of closing parenthesis before range operator by @sharwell in #3078
- Add special cases for the SA1129 code fix by @sharwell in #3079
- Check for trailing commas in multiline switch expressions by @sharwell in #3081
- Fix SA1122 support for constant patterns by @sharwell in #3082
- Fix SA1008 on line end by @pantosha in #3083
- Make SA1519 work with lock and fixed (fix #2885) by @pantosha in #3084
- Add "Returns" as a known prefix for SA1623 by @nxtn in #3090
- Treat ';' and ',' as typos for SA1629 code fix by @nxtn in #3112
- Remove an unused local variable by @nxtn in #3111
- Support for nontraditional casing in namespaces (SA1300) #2923 by @jedidja in #2996
- Switch to MIT license by @sharwell in #3120
- Fix up build.ps1 to allow running from any directory by @AArnott in #3131
- Fix SA1642 cctor doc requirement by @AArnott in #3128
- Update tests by @sharwell in #3145
- Fix the category for SA1413 (UseTrailingCommasInMultiLineInitializers) by @sharwell in #3156
- Fix SA1008 for attributed tuple parameters by @dymanoid in #3158
- Fix SA1008 and SA1012 for pattern matching tuples by @sharwell in #3147
- Fix incorrect handling of types in SA1135 by @dymanoid in #3157
- SA1629 should not ignore enum members by @VitaliAntonov in #3137
- SA1316: allow discards in tuple by @cnshenj in #3148
- Fixes #3133. Ignore inferred tuple element name when explicit name is given by @scottmcginness in #3134
- Exclude null-forgiving operator for SA1013 by @vweijsters in #3177
- Fixed issues by @vweijsters in #3180
- #3173 - SA1611 ignores included documentation by @angelobreuer in #3174
- Improve SA1135 handling of static usings by @VitaliAntonov in #3135
- Workaround for issue #3160 by @vweijsters in #3179
- Update "LICENSE" so that it's recognized as MIT by @xtqqczze in #3182
- Fix status generator by @sharwell in #3190
- Update Microsoft.CodeAnalysis.Analyzers by @sharwell in #3188
- Update to the .NET SDK 3.1 by @sharwell in #3189
- Update SA1000 for target-typed new expressions by @nxtn in #3187
- Update to StyleCop.Analyzers 1.2.0-beta.205 by @sharwell in #3207
- Support tests using net5.0 by @sharwell in #3204
- Fix SA1119 handling of switch expression within member access expressions by @sharwell in #3206
- Fix SA1008 for positional pattern after comma by @sharwell in #3208
- Update SA1101 to support 'with' expressions by @sharwell in #3205
- Update naming rules to support records by @sharwell in #3209
- Update SA1117 tests to show diagnostic locations by @sharwell in #3211
- Make SA1117 work with multiline arguments by @pantosha in #3115
- Update SA1649 to support record types by @sharwell in #3215
- Update SA1118 to support multiline array creation by @pantosha in #3216
- Use IOperation APIs for SA1129 when supported by @sharwell in #3227
- Use IOperation APIs for SA1142 when supported by @sharwell in #3229
- Use code generation for IOperation in the light-up layer by @sharwell in #3231
- Update SA1413 to support with initializer by @pantosha in #3245
- Remove unnecessary usings by @nxtn in #3253
- Fix SA1011 for function pointer unmanaged calling convention list by @nxtn in #3254
- Specify exact language versions by @nxtn in #3255
- Fix SA1023 for C# 9 function pointer parameters by @nxtn in #3252
- Update SA1119 for stackalloc expressions by @nxtn in #3256
- Fix SA1009 handling of record inheritance by @sharwell in #3260
- Fix SA1200 handling of top-level statements by @sharwell in #3261
- Fix SA1516 reporting location for top-level programs by @sharwell in #3262
- Fix SA1119 handling of 'with' expressions by @sharwell in #3263
- Support records in several additional rules by @sharwell in #3264
- Fix SA1008 handling of parenthesized patterns by @sharwell in #3265
- Update references by @sharwell in #3266
- Allow semicolon for record types without a body by @sharwell in #3268
- Check file name for single 'enum' and 'delegate' top-level types by @sharwell in #3269
- Support records without braces by @sharwell in #3274
- Support implicit object creation expressions in SA1129 code fix by @sharwell in #3278
- Added GlobalSuppressions.cs example for SA1649 by @whoward3 in #3303
- Avoid reporting SA1141 (Use tuple syntax) in expression trees by @sharwell in #3306
- Fix handling of pointers to generic types by @sharwell in #3309
- Fix SA1015 handling of '>' followed by ']' by @sharwell in #3313
- SA1648 throws an exception on delegates that use the tag by @angelobreuer in #3292
- Consolidate tests by @sharwell in #3316
- Update SA1118 to allow 'with' expressions by @sharwell in #3317
- Fix handling of on fields by @sharwell in #3315
- Update SA1305 doc to mention allowedHungarianPrefixes in stylecop.json by @Youssef1313 in #3321
- Implement custom fix all providers by @sharwell in #3322
- Handle new() syntax on SA1118 by @BlythMeister in #3340
- Set TLS defaults for testing by @sharwell in #3342
- Issue #2801: SA1500 fires for the while clause of do/while statement by @Kevin-Andrew in #3196
- Update System.Collections.Immutable in the status generator by @sharwell in #3362
- SA1130: Handle optional named arguments correctly by @wdolek in #3289
- Add C# 10 test project by @sharwell in #3398
- Support C# 10 'record struct' by @sharwell in #3401
- Update SA1116 and SA1117 to handle target-typed new (C# 9) by @bjornhellander in #3408
- Use reference assemblies for index and range by @sharwell in #3417
- Update SA1119 to support C# Ranges by @pantosha in #3372
- Allow object initializers and switch expressions in throw statements by @sharwell in #3418
- Update to Roslyn 4, .NET SDK 6.0.100 by @sharwell in #3416
- Update SA1135 to support file-scoped namespaces by @sharwell in #3419
- Update SA1003 and SA1008 to not require space before a cast inside a range expression by @bjornhellander in #3409
- Increase test coverage for records in SA1500, SA1502, and SA1508 by @sharwell in #3421
- Add 'allowDoWhileOnClosingBrace' configuration to the JSON schema by @sharwell in #3423
- Use CultureInfo.InvariantCulture for en-US by @sharwell in #3426
- Allow direct use of explicit parameterless constructors by @sharwell in #3432
- Support file-scoped namespaces in SA1649 and SA1402 by @sharwell in #3436
- Add file-scoped namespace support to SA1208 in #3438
- Expand support for file scoped namespaces by @sharwell in #3446
- Insert blank line before using directives in file-scoped namespace by @sharwell in #3447
- Update SA1600 to show inheritance example. by @codajo in #3385
- Enable nullable reference types by default by @sharwell in #3455
- Disable SA0002 (Invalid settings file) for empty projects by @sharwell in #3456
- Support awaiting a parenthesized 'switch' or 'with' expression by @sharwell in #3462
- Fix support for object initializers in interpolations by @sharwell in #3463
- Map dotnet_separate_import_directive_groups=false to OptionSetting.Allow by @sharwell in #3484
- Support extended property patterns in SA1101 by @sharwell in #3483
- Fix false positive in SA1516 between global statements by @maxkoshevoi in #3482
- Fix handling of generic delegates in file type name by @sharwell in #3485
- Collect incremental state without passing compilation to output stage by @sharwell in #3452
- Updated code fix name for SA1027 to be ok regardless of the 'useTabs' setting by @bjornhellander in #3490
- Updated SA1009 to forbid space after a closing parenthesis in a method reference contained in single quotes by @bjornhellander in #3497
- Added a new test project for c# 11 by @bjornhellander in #3491
- Remove same values at SA1201ElementsMustAppearInTheCorrectOrder.MemberNames by @eliseevev in #3496
- Updated SA1015 analyzer to handle generic attributes (c# 11 preview) by @bjornhellander in #3494
- Updated SA1008 to handle tuples in logical patterns by @bjornhellander in #3495
- Update to StyleCop.Analyzers 1.2.0-beta.435 by @sharwell in #3499
- Use GetText instead of ToFullString by @sharwell in #3514
- Keep tracked nodes in a list by @sharwell in #3525
- Remove unnecessary nullable directives by @sharwell in #3530
- Remove hard-coded language versions in test projects for c# 8, 9 and 10 by @bjornhellander in #3528
- Update SA1515 to not let one range of trivia affect another by @bjornhellander in #3529
- Mentioned VS 2022 by @twojnarowski in #3549
- Remove byte order mark from schema file by @martincostello in #3562
- Update SA1012 to expect no space between a property pattern's opening brace and an enclosing list pattern's opening bracket by @bjornhellander in #3511
- Update Microsoft.CodeAnalysis.CSharp.Workspaces to version 4.4.0 for the c# 11 test project by @bjornhellander in #3580
- Update SA1008 to handle positional patterns inside property patterns by @bjornhellander in #3579
- Update SA1000 to trigger after keywords is, or, and, not by @bjornhellander in #3585
- Update SA1313 to also allow incorrect names in explicitly implemented methods from interfaces by @bjornhellander in #3569
- Update SA1023 to not trigger first in line, inside a foreach without braces by @bjornhellander in #3543
- Update SA1400 to recognize access modifier "file" by @bjornhellander in #3590
- Update SA1206 to recognize modifier "file" by @bjornhellander in #3591
- Update SA1000 to handle checked operator declarations correctly by @bjornhellander in #3505
- Update SA1402 to handle records and record structs by @bjornhellander in #3570
- Update to the latest version of the testing library by @sharwell in #3601
- Update so that SA1600 tests will be run with the expected language version in test projects for c# 8 and above by @bjornhellander in #3614
- Update reading of file_header_template and stylecop.documentation.copyrightText to allow multiple lines by @bjornhellander in #3617
- Update SA1015 to require trailing space after an explicit generic return type in a lambda expression by @bjornhellander in #3625
- Update to Microsoft.CodeAnalysis.Analyzers 3.3.5-beta1.23205.2 by @sharwell in #3628
- Update SA1206 to handle c# 11 modifier "required" by @bjornhellander in #3535
- Preparations for SettingsHelper optimizations by @bjornhellander in #3635
- Correct SA1515 to not fire on the second line of a file header by @bjornhellander in #3633
- Update AnalyzersExtensions and SettingsHelper to use cached JsonValue objects where possible by @bjornhellander in #3642
- Update SA1010 to not trigger on list patterns by @bjornhellander in #3507
- Update NamingSettings and DocumentationSettings to keep one Regex instance instead of calling Regex.IsMatch by @bjornhellander in #3639
- Use ResxSourceGenerator for resource generation by @sharwell in #3343
- Make XmlCommentHelper faster by @ninedan in #3651
- Update RenameToUpperCaseCodeFixProvider to not offer a code fix if the identifier only consists of underscores by @bjornhellander in #3637
- Don't emit SA1414 for interface implementations by @CollinAlpert in #3644
- Support file-scoped namespaces in SA1516 by @JakubLinhart in #3513
- Update SA1137 to also consider init accessors by @bjornhellander in #3669
- Update SA1500 to also consider init accessors by @bjornhellander in #3670
- Update SA1513 to not trigger before an init accessor by @bjornhellander in #3666
- Update SA1212 to also trigger for an init accessor before a getter by @bjornhellander in #3661
- Update SA1513 codefix to use the existing newline character sequence by @bjornhellander in #3607
- Correct code fix for SA1130 when delegate expression is part of a cast expression by @bjornhellander in #3516
- Update so that c# 7 tests will be run with the expected language version in test projects for c# 8 and above by @bjornhellander in #3616
- SA1629 should allow full-sentence links instead of forcing the period to glow white by @jnm2 in #3371
- Update SA1011 to forbid trailing space before the end of a switch case by @bjornhellander in #3674
- Rewrite IOperationWrapper as a wrapper structure around IOperation by @sharwell in #3611
- Update SA1202 to support interfaces (C# 8) and records (C# 9, 10) by @sharwell in #3694
- Update SA1642 and its code fix to handle record structs correctly by @bjornhellander in #3696
- Update SA1011 to not require space before a range operator by @bjornhellander in #3709
- Update SA1131 to treat methods as constants by @bjornhellander in #3710
- Avoid allocations in CanWrap... methods by @martin-strecker-sonarsource in #3711
- Update SA1648 to accept inheritdoc on members implemented from static abstract/virtual interface members by @bjornhellander in #3715
- Update SA1600 to also handle records by @bjornhellander in #3725
- Update SA1119 to allow parenthesis around a ref ternary conditional expression when it is the left-hand side of an assigment by @bjornhellander in #3737
- Update SA1119 to allow parenthesized switch expressions followed by an invocation by @bjornhellander in #3733
- Run tests in parallel jobs by @sharwell in #3740
- Update SA1010 to accept whitespace before collection initializers by @bjornhellander in #3745
- Update SA1513 to not require a blank line if the closing brace is at the end of a collection expression by @bjornhellander in #3746
- Update SA1118 to allow multi-line collection expressions by @bjornhellander in #3749
- Update SA1009 to require a space after the closing parenthesis if it is followed by ++ or -- from a prefix unary expression by @bjornhellander in #3750
- Update SA1008 to allow space before the opening parenthesis of a using alias definition of a tuple type by @bjornhellander in #3748
- Update SA1008 to not crash if there is no previous token by @bjornhellander in #3741
- Change default value of test property CodeActionValidationMode to SemanticStructure instead of None and update so that tests still pass by @bjornhellander in #3753
- Allow inheritdoc for class constructors with base types by @MartyIX in #3719
- Fix that SA1134 Fix All maybe non-deterministic by @pdelvo in #2853
- Coverage improvements by @bjornhellander in #3675
- Fix SA1131 to not treat "complex" expressions as a literal by @bjornhellander in #3760
- Update to StyleCop.Analyzers 1.2.0-beta.556 by @sharwell in #3761
- Set version numbers in CI by @sharwell in #3203
- Fix csharp_using_directive_placement setting retrieval by @kvpt in #3762
- Remove VSIX project and unnecessary build outputs by @sharwell in #3763
- Update SA1025 documentation to reflect handling of multiple spaces preceding a symbol by @bjornhellander in #3765
- Update SA1515 to not require a blank line before a comment at the start of a collection expression by @bjornhellander in #3768
- Update analyzers for better design time support by @sharwell in #3773
- Fix SA1611 not triggering on class primary constructors by @SapiensAnatis in #3777
- Update to use a custom fixer for SA1629 by @bjornhellander in #3767
- Update SA1012 to forbid space before a property pattern, when it is preceeded by an opening parenthesis. Previously only handled positional patterns correctly. by @bjornhellander in #3813
- Update SA1110 to also check the parameter list in primary constructors by @bjornhellander in #3800
- Update SA1111 to also check the parameter list in primary constructors by @bjornhellander in #3791
- Update SA1513 to not require a blank line before linq 'into' keyword by @DoobieAsDave in #3820
- Update SA1003 to handle the null-coalescing assignment operator, the unsigned right-shift operator, the unsigned right-shift assignment operator and the null-forgiving operator by @bjornhellander in #3823
- Update some tests to not use a fixed language version by @bjornhellander in #3832
- Update SA1612 to also check primary constructor parameters by @bjornhellander in #3833
- Update SA1404 to not crash when attribute uses a namespace alias by @bjornhellander in #3830
- Update
stylecop.jsonschema to have correct default forheaderDecoration. by @alexrp in #3842 - Update SA1004 to allow doc comments to start with the in, out and ref keywords by @bjornhellander in #3836
- Corrected SA1604 documentation to include a relevant example by @bjornhellander in #3855
- Update SA1015 to not care about trailing spaces in a number of cases: typically last in dictionary initializer items, collection initializers and collection expressions. #3856 by @bjornhellander in #3857
- Correct SA1629 to add a period if the documentation ends in an xml entity. Previously replaced the semicolon in the xml entity. by @bjornhellander in #3859
- SA1642: Allow Tags in Constructor Documentation by @MattFromRVA in #3861
- Faster settings by @sharwell in #3885
- Added SyntaxKinds related to Patterns and InitOnlySetters by @csaba-sagi-sonarsource in #3356
- Correct property standard text for ru-RU culture by @ds1709 in #3335
- Update SA1316 to not trigger in tuple types which are part of a member's signature, if that member is an override by @bjornhellander in #3782
- added dutch document culture by @JEFFTheDev in #3333
- Skip Warnings for Commas After Conditional Directives by @MattFromRVA in #3839
- Fix SA1514: Do not report when documenting types declared in the global namespace by @MattFromRVA in #3863
- Update the code analysis nuget in the c# 13 test project to the official 4.12.0 version by @bjornhellander in #3908
- Exempt file-local types from SA1402 [resolves #3803] by @6bee in #3879
- Optimize SA1141 by @sharwell in #3610
- Update SA1121 and SA1404 to detect global using aliases, using GetImportScopes and compiling expression trees by @bjornhellander in #3678
- Use existing constant SyntaxKind.GlobalKeyword by @sharwell in #3963
- Update SA1200UsingDirectivesMustBePlacedCorrectly to not trigger in files with only global using directives by @bjornhellander in #3938
- Do not report SA1516 for two consecutive single line properties by @FantasyTeddy in #3936
- Update SA1008 to require a space before the opening parenthesis if it's the left operand of a range expression by @bjornhellander in #3895
- update SA1518 to ignore empty (0 bytes) files by @DWIAltonaAnalytics in #3927
- Update SA1008OpeningParenthesisMustBeSpacedCorrectly to disallow a leading space before a lambda in a collection expression by @bjornhellander in #3934
- Update SA1503 and SA1106 tests for using declarations by @sharwell in #4033
- Update for nullable types in C# 8 by @sharwell in #4039
- Update known changes documentation by @sharwell in #4047
- Support static local functions from C# 8 by @sharwell in #4036
- Support indices and ranges from C# 8 by @sharwell in #4038
- Update to support default interface members by @sharwell in #4034
- Support testing on Linux by @sharwell in #4048
- Support async streams from C# 8 by @sharwell in #4037
- Update rules for pattern matching in C# 8 by @sharwell in #4035
- Only build net6.0 test targets on Linux by @sharwell in #4050
- Downgrade Nerdbank.GitVersioning for net6.0 runtime by @sharwell in #4051
- Update rules for target-typed new in C# 9 by @sharwell in #4061
- Update tests for target-typed conditional expressions by @sharwell in #4055
- Update tests for lambda discard parameters by @sharwell in #4056
- Update for init-only setters by @sharwell in #4053
- Support relational and logical patterns from C# 9 by @sharwell in #4058
- Update for native integers in C# 9 by @sharwell in #4060
- Updates for covariant return types in C# 9 by @sharwell in #4062
- Update for top-level statements by @sharwell in #4054
- Update for static anonymous functions in C# 9 by @sharwell in #4064
- Update for partial methods in C# 9 by @sharwell in #4063
- Update for function pointers in C# 9 by @sharwell in #4059
- Update SA1516 documentation for file-scoped namespaces by @sharwell in #4075
- Update for extended property patterns in C# 10 by @sharwell in #4072
- Update for lambda natural types in C# 10 by @sharwell in #4073
- Update SA1500 and SA1513 for property initializers after accessor lists (C# 14 field-backed properties) by @AArnott in #4118
- Update for property initializer in C# 14 by @EdwinEngelen in #4077
- Update SA1101 and SA1201 for C# 14 extension members by @AArnott in #4119
- Update SA1515SingleLineCommentMustBePrecededByBlankLine to not require a blank line at the start of an expression body by @bjornhellander in #3940
- Update SA1135UsingDirectivesMustBeQualified to not crash on a UsingDirectiveSyntax without a Name by @bjornhellander in #3883
- Describe all constructs SA1413 reports in its message by @alexander-efremov in #4113
- Require a blank line after a closing brace inside a lambda passed as an argument in SA1513 by @alexander-efremov in #4112
- Expand aliases in alias targets when using directives move into a namespace by @alexander-efremov in #4109
- Indent the whole first argument when SA1116 moves it to its own line by @alexander-efremov in #4107
- Indent the whole statement when the SA1503, SA1519 and SA1520 code fix adds braces by @alexander-efremov in #4108
- Turn a stray comment inside documentation into a documentation line in the SA1626 code fix by @alexander-efremov in #4111
- Use the right article in SA1201 messages by @alexander-efremov in #4114
- Report empty documentation text when inheritdoc has nothing to inherit by @alexander-efremov in #4110
- Walk the tokens of a syntax tree once for the spacing and layout rules by @alexander-efremov in #4106
- Update for global usings in C# 10 by @AArnott in #4121
- Update for global usings in C# 10 by @sharwell in #4071
- Updates for record structs by @AArnott in #4122
- Updates for record structs by @sharwell in #4074
- Update for null-forgiving operator at end of line by @EdwinEngelen in #4080
- Fixes 13 instances of IDE00250 and IDE0251 by @jsrustad in #3958
- Fixes 9 instance of code causing IDE0038 by @jsrustad in #3952
- Update SA1649CodeFixProvider to fix problems related to linked files by @bjornhellander in #3862
- Add a C# 15 preview test project by @AArnott in #4125
- Fix SA1649 for C# 15 union declarations and C# 14 extension blocks by @AArnott in #4127
- Fix SA1649 for C# 15 union declarations by @verdie-g in #4096
- Support the C# 10 #line span directive format (supersedes #4079) by @AArnott in #4128
- Update tests for new line pragma format in C# 10 by @sharwell in #4079
- Fixes IDE0052 and IDE0270 by @jsrustad in #3960
- Update SA1133 and SA1134 for attributes on lambda expressions (C# 10) by @AArnott in #4131
- Fix SA1130 for anonymous methods with a natural type by @AArnott in #4133
- Allow a closing brace followed by the end of an interpolation in SA1500 by @AArnott in #4134
- Update SA1000 for the C# 11 scoped keyword by @AArnott in #4135
- Update SA1413 to check collection expressions by @AArnott in #4138
- Fix SA1023 false positive for pointer types in using aliases by @AArnott in #4140
- Add C# 12 language feature audit tests by @AArnott in #4141
- C# 13: add 'allows ref struct' tests (with .NET 9 reference assemblies) by @AArnott in #4146
- Update SA1500 to handle C# 14 extension blocks by @AArnott in #4154
- Update SA1502 to handle C# 14 extension blocks by @AArnott in #4155
- Update SA1505 to handle C# 14 extension blocks by @AArnott in #4156
- Update SA1508 to handle C# 14 extension blocks by @AArnott in #4157
- Update SA1516 to handle C# 14 extension blocks by @AArnott in #4158
- Update SA1106 to handle C# 14 extension blocks by @AArnott in #4159
- Update SA1110 to handle C# 14 extension blocks by @AArnott in #4160
- Update SA1111 to handle C# 14 extension blocks by @AArnott in #4161
- Update SA1137 to handle C# 14 extension blocks by @AArnott in #4162
- Speed up the CI jobs with server GC for the tests and less MSBuild and NuGet overhead by @alexander-efremov in #4153
- Add C# 11 language feature audit tests by @AArnott in #4136
- C# 14: add audit tests (lambda parameter modifiers, compound assignment operators, null-conditional assignment, nameof unbound generics) by @AArnott in #4151
- C# 13: SA1130 handles params collections by @AArnott in #4147
- Add C# 10 language feature audit tests by @AArnott in #4132
- C# 13: add audit tests (escape sequence, implicit index, params collections, ref struct interfaces) by @AArnott in #4145
- Fix or suppress IDE0079 warnings (rebuild of #3962 on current master) by @AArnott in #4168
- Fixed or suppressed IDE0079 warnings as appropriate. by @jsrustad in #3962
- C# 14: add extension block tests for rules that already handle them by @AArnott in #4164
- Apply SA1201, SA1202 and SA1204 inside C# 14 extension blocks by @AArnott in #4174
- C# 14: add field keyword tests (field-backed properties) by @AArnott in #4165
- C# 15: SA1206 orders the closed and safe modifiers correctly by @AArnott in #4187
- Support C# 15 union declarations in SA1201, SA1202 and SA1402 by @AArnott in #4188
- Match C# 13+ test reference assemblies to the language version by @AArnott in #4189
- Default the C# 15 test project to the preview language version by @AArnott in #4192
- SA1013: don't report a closing interpolation brace that starts a line by @AArnott in #4196
- SA1021/SA1022: don't move comments when removing the space before a sign by @AArnott in #4199
- Merge SA1206 diagnostic and code fix test classes by @AArnott in #4207
- SA1629: accept a period followed by closing quotation marks by @AArnott in #4197
- SA1102: don't offer the code fix when it would delete comments by @AArnott in #4200
- SA1005: don't report .NET template engine directives (//-:cnd, //+:cnd) by @AArnott in #4201
- SA1008: allow whitespace before comments after opening parentheses by @AArnott in #4214
- SA1649: match escaped identifiers to filenames by @AArnott in #4215
- SA1137: fix closing brace indentation when inline by @AArnott in #4216
- Compile C# 15 tests against .NET 11 ref assemblies and disallow errors by @bjornhellander in #4212
- Skip GitHub URLs in markup link checks by @AArnott in #4223
- Move C# test matrix and coverage jobs to Linux on .NET 10 by @AArnott in #4225
- Move solution build jobs to Linux without changing package compatibility by @AArnott in #4226
- Cleanup: Remove redundant references from test projects by @bjornhellander in #4227
- Remove redundant test class analyzer by @AArnott in #4230
- Migrate to NuGet CPVM by @AArnott in #4238
- Pin Microsoft.Build.Framework to 18.9.6 for .NET 10 compatibility by @AArnott in #4254
- Replace AsyncUsageAnalyzers with VS threading analyzers by @AArnott in #4255
- Move projects under src, test, and tools directories by @AArnott in #4258
- fix: match qualified cref in SA1642 and SA1643 included docs by @Akinori107 in #4263
- Fix SA1134 code fix indentation on property accessors by @AArnott in #4262
- SA1604: honor private documentation settings for excluded declarations by @AArnott in #4274
- SA1100: avoid unsafe virtual dispatch fixes by @AArnott in #4273
- SA1137: align malformed array initializer brackets by @AArnott in #4272
- SA1203: preserve regions when reordering fields by @AArnott in #4269
- SA1114: Allow comment lines before parameter and argument lists by @AArnott in #4270
- SA1309: avoid out-variable name collisions by @AArnott in #4275
- SA1201: preserve conditional compilation boundaries by @AArnott in #4271
- SA1201: fix all member ordering in one pass by @AArnott in #4277
- Improve rule page titles and remove redundant metadata tables by @AArnott in #4278
- Clarify SA0001 documentation analysis limitations by @AArnott in #4279
- SA1003: Preserve constructor initializer line breaks in code fix by @AArnott in #4280
- SA1642: Allow langword markup in constructor standard text by @AArnott in #4282
- SA1504: handle expression-bodied accessors by @AArnott in #4283
- SA1118: Allow multiline tuple arguments by @AArnott in #4284
- Clarify SA1200 using placement for file-scoped namespaces by @AArnott in #4288
- SA1501: Allow empty catch and finally blocks by @AArnott in #4290
- SA1625: Describe duplicate documentation accurately by @AArnott in #4291
- SA1141: Use IOperation for expression analysis by @AArnott in #4292
- Document rule category names by @AArnott in #4295
- SA1305: Skip DllImport parameter names by @AArnott in #4297
- SA1503: respect custom indentation in code fix by @AArnott in #4294
- SA1629: accept exclamation and question marks by @AArnott in #4298
- Enable nullable analysis throughout sources and annotate light-up APIs by @AArnott in #4300
- SA1515: Exclude tool marker comments by @AArnott in #4302
- Use stronger
-warnAsErrorexcept for NuGet warnings by @AArnott in #4304 - SA1402/SA1649: Handle files with top-level statements by @AArnott in #4306
- SA1402: Remove unused usings from extracted files by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4307
- SA1504: preserve comments and blank lines in the multi-line fix by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4311
- SA1649: Respect top-level type settings by @AArnott in #4316
- SA1200: Treat extern alias directives like using directives by @AArnott in #4313
- SA1017: Require spacing after parameter attributes by @AArnott in #4321
- Clarify documentation requirement settings and rule interactions by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4322
- SA1408: Include null-coalescing precedence by @AArnott in #4323
- Implement a code fix for SA1115 by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4326
- SA1501: Handle code fixes at end of file by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4327
- SA1003: batch Fix All edits per document by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4329
- SA1118: Allow multiline string arguments by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4331
- SA1500/SA1513: Allow continuations after switch expression closing braces by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4334
- SA1118: Allow multiline switch expressions with single-line headers by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4333
- SA1648: Add code fix to remove invalid inheritdoc by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4337
- SA1135: Using directives should be qualified occurs with external alias by @sbe-schleupen in #4341
- Fix VB roslyn package dependency version by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4349
- Add a local fuzz harness for analyzers and code fixes by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4350
- SA1315: Include expected parameter names in diagnostics by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4351
- SA1117: Add a code fix for inconsistent parameter lines by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4353
- SA1114: Add code fix for blank lines after opening delimiter by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4352
- SA1612: add parameter documentation code fix by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4354
- SA1306: Clarify protected field naming by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4355
- Fix light-up fallbacks for base syntax types by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4357
- Preserve document line endings in code fixes by @AArnott in #4360
- SA1314: Rename type parameters in documentation crefs by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4361
- Use CommonData.EndOfLineSequences for line ending theories by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4366
- SA1653: add code fix for partial summaries by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4372
- Upgrade StyleCop.Analyzers and fix warnings by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4371
Enhancements
- Handle records in ordering, layout and documentation rules by @AArnott in #4142
- Update SA1112-SA1117 to handle primary constructor parameter and base argument lists by @AArnott in #4139
- Update SA1137 to check collection expressions by @AArnott in #4137
- Require documentation for C# 14 extension members (extension blocks no longer treated as private) by @AArnott in #4163
- C# 13: handle partial properties and indexers in documentation rules by @AArnott in #4148
- Support C# 15 unions in SA1600/SA1601/SA1300/SA1400/SA1206/SA1201-SA1204 (test with Roslyn 5.10 preview) by @AArnott in #4191
- Support C# 15 unions in the remaining type declaration rules by @AArnott in #4193
- Implement a new rule SA1317 by @melomory in #3942
- SA1653: Detect conflicting summary documentation on partial types by @AArnott in #4299
- SA1143: Format conditional expressions consistently by @AArnott in #4318
- SA1315: Match inherited parameter names by @AArnott in #4314
- SX1412: Add UTF-8 without BOM rule by @AArnott in #4315
- SA1654: encode generic brackets in cref by @AArnott in #4328
- Enable element order code fix provider by @AArnott in #4312
- Allow every setting in .editorconfig and document unified configuration by @AArnott in #4221
- SA1201: support configurable member-kind ordering by @AArnott in #4324
- SA1501/SA1503: Allow configurable braceless if guards by @AArnott in #4319
- SA1202: Add configurable accessibility ordering by @AArnott in #4359
- Add Simplified Chinese resources and documentation by @AArnott in #4285
- Translate remaining Czech documentation text by @AArnott in #4286
- Add documentation for .editorconfig properties by @FantasyTeddy in #3374
- Add Czech translations for documentation strings by @DavidCizek in #3944
- Add missing documentation resource translations by @AArnott in #4220
- Embed PDBs in the shipped DLLs and stop producing a symbols package by @AArnott in #4173
- Adopt proposed StyleCop.Analyzers icon by @AArnott in #4320
- Fix line ending handling by @sharwell in #4076
- Add 'Generate additional part' refactoring by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3705
- Use the compiler-provided batch Fix All provider by @AArnott in #4229
- SA1312: add a code fix that replaces underscore-only locals with discards by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4208
- Support defining options in .editorconfig by @sharwell in #3285
- Implementation of tuple analyzers by @vweijsters in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2846
- Added default rule set for StyleCop.Analyzerz by @vweijsters in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2931
- Added support for CSharp8 tests and fixed #2927 by @vweijsters in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2936
- Implement part of the C# 8 lightup layer by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3011
- Enabled FixAll support for SA1139 by @vweijsters in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3016
- Changed default settings for SA1316 to PascalCase. by @vweijsters in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3021
- Add support for SwitchExpressionArmSyntax by @costin-zaharia-sonarsource in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3049
- Add support for SwitchExpressionSyntax by @costin-zaharia-sonarsource in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3050
- SA1119: Added support for typecast followed by switch expression by @vweijsters in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3178
- Generate syntax wrappers in the lightup layer by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3246
- Fix ignored Namespace attribute in OperationLightupGenerator by @pavel-mikula-sonarsource in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3378
- Define lightup method for TypeDeclarationSyntax.ParameterList by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3774
- Update lightup Syntax.xml to Roslyn 5.9.0 by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4124
- Lightup: implement SeparatedSyntaxListWrapper equality instead of throwing by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4206
- Add nullability lightup APIs by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4293
Documentation
- Document SA1107 behavior anomaly by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2893
- Mention VS2019 by @drewnoakes in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2964
- Add 'private protected' to SA1202 docs by @nxtn in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3027
- Update Configuration.md by @luisdaglez in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3030
- Update SA1027.md by @HugoRoss in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3086
- Update README including C# 8.0 by @skarllot in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3085
- Expand "how to fix violations" in SA0001.md by @AmadeusW in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3119
- Configuration.md: Add link to rule set example file by @perlun in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3218
- Update Configuration.md by @mayermart in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3251
- Update SA1130.md by @SaidFayache in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3298
- Fix typo in SA1307.md by @marcospgp in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3466
- Corrected documentation for SA1516 by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3488
- Update SA1000.md by @Youssef1313 in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3563
- Update documentation for SA1308 to also mention prefix "t_" by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3697
- Update documentation for SA1102 to contain compilable code examples by @arphox in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3755
- Docs: document how systemUsingDirectivesFirst affects SA1208, SA1210 and SA1217 by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4205
- Add a README to the NuGet packages by @AArnott in #4204
- Add agent skills and AGENTS.md for AI-assisted contributions by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4209
- Publish documentation and rule status with DocFX on GitHub Pages by @AArnott in #4218
- Complete Russian localization and add multilingual DocFX documentation by @SergeyZhurikhin in #3900
- Add Czech documentation edition and organize DocFX configurations by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4268
- Restructure the opening pages of our docs by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4309
Infrastructure and build
- Update the master branch to 1.2.0-beta by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2875
- Update Microsoft.CodeAnalysis.Testing by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2881
- Code cleanup attempt #2 by @vweijsters in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2946
- Update Microsoft.Build.Locator to version 1.2.2 by @vyrp in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2980
- Making StyleCopTester take stylecop.json into account. by @vyrp in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2978
- Use code instead of pragma to document unused parameter by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3000
- Move literals into resources by @nxtn in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3026
- Move literals into resources by @nxtn in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3032
- Add test cases for tuple deconstruction by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3033
- Update the codecov upload tool to 1.8.0 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3059
- Initial Azure Pipelines build configuration by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3072
- Add tests for using declaration statements by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3076
- Add init script which installs the .NET SDK required by global.json by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3130
- Add test for SA1009 with suppression operator by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3146
- Added unit test to verify scenario by @vweijsters in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3169
- Update to Microsoft.CodeAnalysis.Testing 1.0.1-beta1.20453.7 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3191
- Add tests for C# 9 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3192
- Update testing library to 1.0.1-beta1.20478.1 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3210
- Update Microsoft.CodeAnalysis.Testing to 1.0.1-beta1.20623.3 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3287
- Update to Microsoft.CodeAnalysis.Testing 1.0.1-beta1.21202.2 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3341
- Update to Microsoft.CodeAnalysis.Testing 1.1.0-beta1.21329.1 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3361
- Update to Microsoft.CodeAnalysis.Testing 1.1.1-beta1.22081.4 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3450
- Add c# 11 test project to opencover-report.ps1 by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3506
- Bump Newtonsoft.Json from 12.0.3 to 13.0.2 in /StyleCop.Analyzers/StyleCop.Analyzers.Status.Generator by @dependabot[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3584
- Update dependencies by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3700
- Mark several test classes as partial by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3702
- Add missing test files and fix inheritance by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3703
- Generate and validate derived test classes by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3704
- Add c# 12 test project by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3734
- Improve tests for SA1612 by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3801
- Add test project for c# 13 (pre-release version) by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3864
- Fix codecov not displaying on GitHub by @eXpl0it3r in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3905
- Add tests for ForEachVariableStatementSyntaxWrapper by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3626
- Add test for SA1000's handling of c# 7.1 default literal expressions by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3838
- Add tests for readonly members in C# 8 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4032
- Add tests for attributed local functions in C# 9 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4057
- Add tests for extension foreach in C# 9 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4065
- Add tests and documentation for records by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4052
- Move CI to GitHub Actions; retire AppVeyor and Azure Pipelines config by @AArnott in #4105
- Add test project for C# 14 by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4117
- Add test project for c# 14 by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4040
- Add tests for mixed deconstruction in C# 10 by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4120
- Add tests for mixed deconstruction in C# 10 by @sharwell in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4081
- Modernize the build: .NET 10 SDK, Roslyn 5.9 compiler, C# 14, coverage without .NET 6 by @AArnott in #4126
- Remove leftover OpenCover and CodecovUploader tooling by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4129
- CI: fail when checked-in generated files are stale by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4130
- Use the standard .NET gitignore by @alexander-efremov in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4169
- Update the GitHub Actions to their Node.js 24 versions by @alexander-efremov in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4167
- Add tests for types with primary constructors (stacked on #4142) by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4143
- Retarget C# 6/7 tests to net472 and update Microsoft.CodeAnalysis.Testing to 1.1.4 by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4190
- Check repository markup links with mlc in GitHub Actions by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4219
- Configure Renovate by @renovate[bot] in #4231
- Slnx by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4232
- Update dependency DotNetAnalyzers.DocumentationAnalyzers to 1.0.0-beta.59 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4233
- Update dependency Newtonsoft.Json to 13.0.4 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4234
- Update dependency Microsoft.NET.Test.Sdk to v18 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4237
- Update dependency Nerdbank.GitVersioning to 3.10.94 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4236
- Update dependency dotnet-reportgenerator-globaltool to v5.5.11 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4240
- Update dotnet monorepo by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4239
- Update dependency LibGit2Sharp to 0.32.0 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4241
- Update dependency Microsoft.Build.Locator to 1.11.2 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4242
- Update actions/setup-node action to v7 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4243
- Update dependency Xunit.Combinatorial to 1.7.31 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4248
- Update dependency NuGet.Resolver to 7.9.0 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4246
- Update dotnet monorepo (major) by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4251
- Support xUnit runner 4 in language test projects by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4247
- Migrate tests to xUnit v3 for Xunit.Combinatorial v2 by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4253
- Update dependency DiffPlex to 1.9.0 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4252
- Add a release workflow using nuget.org trusted publishing by @AArnott in #4123
- Bump Microsoft.VisualStudio.Threading.Analyzers to 18.12.1 by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4256
- Update dependency Microsoft.NET.Test.Sdk to 18.11.0 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4267
- Use async Task Main in StyleCopTester by @AArnott in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4296
- Update dependency dotnet-sdk to v10.0.402 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4245
- Update dependency System.Security.Cryptography.Pkcs to v10 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4303
- Update becheran/mlc action to v1.3.0 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4370
- Upgrade c# 15 test project to use prerelease 5.11.x now that Visual Studio 18.11 is out by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4373
- Update dependency Microsoft.CodeAnalysis.Analyzers to 5.11.0-1.26521.10 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4347
- Update dependency Microsoft.CodeAnalysis.Analyzers to 5.11.0-1.26525.1 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4379
- Update dotnet monorepo by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4387
- Update dependency node to v26 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4389
- Update dependency dotnet-reportgenerator-globaltool to v5.5.12 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4388
- Update actions/setup-dotnet action to v6.1.0 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4394
- Improve settings tests slightly by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4397
- Update dependency xunit.v3.mtp-off to 4.0.3 by @renovate[bot] in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4401
- Add tests to improve coverage for analyzers bailing out on missing tokens by @bjornhellander in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/4398
New Contributors
- @RalfKoban made their first contribution in #2919
- @drewnoakes made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2964
- @vyrp made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/2980
- @tokarzkj made their first contribution in #2976
- @nnpcYvIVl made their first contribution in #2998
- @nxtn made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3027
- @luisdaglez made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3030
- @ssg made their first contribution in #3041
- @costin-zaharia-sonarsource made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3049
- @HugoRoss made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3086
- @skarllot made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3085
- @jedidja made their first contribution in #2996
- @AmadeusW made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3119
- @dymanoid made their first contribution in #3158
- @VitaliAntonov made their first contribution in #3137
- @cnshenj made their first contribution in #3148
- @scottmcginness made their first contribution in #3134
- @angelobreuer made their first contribution in #3174
- @xtqqczze made their first contribution in #3182
- @perlun made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3218
- @mayermart made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3251
- @SaidFayache made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3298
- @whoward3 made their first contribution in #3303
- @Youssef1313 made their first contribution in #3321
- @BlythMeister made their first contribution in #3340
- @Kevin-Andrew made their first contribution in #3196
- @wdolek made their first contribution in #3289
- @pavel-mikula-sonarsource made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3378
- @codajo made their first contribution in #3385
- @marcospgp made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3466
- @maxkoshevoi made their first contribution in #3482
- @eliseevev made their first contribution in #3496
- @twojnarowski made their first contribution in #3549
- @dependabot[bot] made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3584
- @ninedan made their first contribution in #3651
- @CollinAlpert made their first contribution in #3644
- @JakubLinhart made their first contribution in #3513
- @martin-strecker-sonarsource made their first contribution in #3711
- @arphox made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3755
- @MartyIX made their first contribution in #3719
- @kvpt made their first contribution in #3762
- @SapiensAnatis made their first contribution in #3777
- @DoobieAsDave made their first contribution in #3820
- @alexrp made their first contribution in #3842
- @MattFromRVA made their first contribution in #3861
- @eXpl0it3r made their first contribution in https://github.com/DotNetAnalyzers/StyleCopAnalyzers/pull/3905
- @csaba-sagi-sonarsource made their first contribution in #3356
- @ds1709 made their first contribution in #3335
- @CPAM34 made their first contribution in #3140
- @JEFFTheDev made their first contribution in #3333
- @6bee made their first contribution in #3879
- @FantasyTeddy made their first contribution in #3936
- @DWIAltonaAnalytics made their first contribution in #3927
- @alexander-efremov made their first contribution in #4115
- @jsrustad made their first contribution in #3958
- @DavidCizek made their first contribution in #3944
- @verdie-g made their first contribution in #4096
- @SergeyZhurikhin made their first contribution in #3900
- @renovate[bot] made their first contribution in #4231
- @Akinori107 made their first contribution in #4263
- @melomory made their first contribution in #3942
- @bgrainger made their first contribution in #4336
- @sbe-schleupen made their first contribution in #4341
Full Changelog: 1.1.118...1.3.180