General purpose Roslyn-based static code analysis rules for C#.
While not intended to be an exact replacement for StyleCop, many of the individual diagnostics are similar to StyleCop rules.
Requires NuGet 2.8 or higher.
Install-Package CodeTiger.CodeAnalysis -Version 1.1.2
dotnet add package CodeTiger.CodeAnalysis --version 1.1.2
<PackageReference Include="CodeTiger.CodeAnalysis" Version="1.1.2"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add CodeTiger.CodeAnalysis --version 1.1.2
#r "nuget: CodeTiger.CodeAnalysis, 1.1.2"
// Install CodeTiger.CodeAnalysis as a Cake Addin #addin nuget:?package=CodeTiger.CodeAnalysis&version=1.1.2 // Install CodeTiger.CodeAnalysis as a Cake Tool #tool nuget:?package=CodeTiger.CodeAnalysis&version=1.1.2
Changes for 1.1.2:
-Changed CT1701 to allow filenames to end in 'aspx.cs' and 'xaml.cs'.
Changes for 1.1.1:
-Relaxed layout rules for attributes applied to parameters.
Changes for 1.1.0:
-Changed CT1712 to allow discards in lambda expressions.
-Changed CT1714 to allow property names that are longer words that happen to start with the same characters of the containing type.
-Changed CT3213 to be case-insensitive.
-Added CT1011 to identify default parameter values that do not match base definitions.
-Added CT1012 to identify Attribute subclasses that do not include an AttributeUsage attribute.
-Added CT1013 to identify public constructors of abstract classes.
-Added CT1014 to identify externally-accessible members that use tuple types.
-Added CT1019 to identify when the presence of the 'params' keyword does not match the base definition.
-Added CT1020 to identify extension methods that do not use the 'this' parameter.
-Added CT1501 to identify default values of externally-accessible parameters.
-Added CT1505 to identify composite values of Flags enumerations that are not combinations of other values.
-Added CT1713 to identify some common hungarian notation.
-Added CT1802 to identify unnecessary use of the Where LINQ extension method that could be simplified.
-Added CT3000 to identify files that start with blank lines.
-Added CT3001 to identify files that do not end with a blank line.
-Added CT3002 to identify consecutive blank lines.
Changes for 1.0.1:
-Changed filename analysis to allow underscores for generic type argument separators and suffixes (such as `Tests`) after those separators.
-Added a resource file for localizable strings.
-Lots of minor internal code cleanup.
Changes for 1.0.0:
-Fixed InheritedMemberDesignAnalyzer to better handle System.Object and generic types.
-Fixed the handling of preprocessor directives by UsingDirectiveOrderAnalyzer.
-Fixed SingleLineLayoutAnalyzer to not consider attributes when determining the line span of an element.
-Fixed NonGenericCollectionDesignAnalyzer to better handle field declarations that contain multiple variables.
-Fixed several possible NullReferenceExceptions in ParenthesisLayoutAnalyzer.
-Fixed a bug where CommaLayoutAnalyzer used Count instead of SeparatorCount when analyzing AnonymousObjectCreationExpression nodes.
-Fixed ParenthesisLayoutAnalyzer to not report CT3535 for closing parenthesis after the type in catch clauses that did not include an identifier.
-Fixed CT1727 and CT1728 to consider generic type parameter constraints when determining whether a method returns a Task.
-Fixed CT3505 to not include attributes when determining the line span of an accessor.
-Fixed a false positive of CT3213 with static using directives.
-Fixed a false positive of CT3503 when a property contains expression-bodied accessors.
-Excluded attributes applied to accessors when BraceLayoutAnalyzer determines whether an accessor is single- or multi-line.
-Changed CT3501 to be more permissive with closing braces of multi-line lambdas passed as arguments.
-Changed ThreadingReliabilityAnalyzer to include the accessibility of the objects containing the member being used when determining overall accessibility.
-Changed FileNamingAnalyzer to allow file names that follow the standard format for generic types (e.g. 'List`1.cs').
-Changed BraceLayoutAnalyzer to allow closing curly braces to be followed by where clauses (in a do-while statement), commas, or closing parenthesis.
-Changed CT3503 to not report expression-bodied properties.
-Changed CT3503 to not require default values to be on the same line.
-Changed TypeAliasReadabilityAnalyzer to not check type names in documentation comments.
-Improved handling of verbatim identifiers.
-Added '<developmentDependency>true</developmentDependency>' to CodeTiger.CodeAnalysis.nuspec. Removed System.Collections.Immutable.dll from CodeTiger.CodeAnalysis.nuspec.
-Made several small performance improvements.
-Added CT1730 to identify type names that match the name of the containing namespace.
-Added CT3218 to identify non-static using directives that appear after static using directives.
-Added CT3528 to identify multiple statements on the same line.
-Added CT3529 to identify LINQ queries that have some (but not all) clauses on the same line.
-Added CT3532 to identify opening parenthesis that are not on the same line as the preceding keyword.
-Added CT3533 to identify opening parenthesis that are not on the same line as the preceding identifier.
-Added CT3534 to identify closing parenthesis that are not on the same line as the preceding argument.
-Added CT3535 to identify closing parenthesis that are not on the same line as the preceding element.
-Added CT3536 to identify empty parentheses that are not on the same line.
-Added CT3537 to identify commas that are not on the same line as their preceding element.
-Added CT3538 to identify parameter declarations defined across multiple lines.
-Added CT3539 to identify non-trivial switch section statements that do not begin on a new line.
-Added CT3540 to identify binary operators at the end of a line.
- No dependencies.
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.