SharpSource 1.24.0

dotnet add package SharpSource --version 1.24.0
NuGet\Install-Package SharpSource -Version 1.24.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SharpSource" Version="1.24.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SharpSource --version 1.24.0
#r "nuget: SharpSource, 1.24.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SharpSource as a Cake Addin
#addin nuget:?package=SharpSource&version=1.24.0

// Install SharpSource as a Cake Tool
#tool nuget:?package=SharpSource&version=1.24.0

Nuget Downloads Visual Studio Marketplace Downloads

Demonstration of an analyzer which removes unnecessary IEnumerable materializations

Quickstart

Install it through the command line:

Install-Package SharpSource

or add a reference yourself:

<ItemGroup>
    <PackageReference Include="SharpSource" Version="1.24.0" PrivateAssets="All" />
</ItemGroup>

If you would like to install it as an extension instead, download it from the marketplace.


This repo houses a collection of analyzers that aim to make some language features and framework types easier to work with. It does this by highlighting when you might be using something incorrectly in a way that would result in suboptimal performance, runtime exceptions or general unintended behaviour.

In other words, this repo only contains analyzers for patterns that have a concrete potential to turn into a defect ticket. It is not intended to help with general housekeeping tasks like formatting your code or providing productivity helpers.

Interested in contributing? Take a look at the guidelines!


Detailed explanations of each analyzer can be found in the documentation: https://github.com/Vannevelj/SharpSource/tree/master/docs

Code Name
SS001 AsyncMethodWithVoidReturnType
SS002 DateTimeNow
SS003 DivideIntegerByInteger
SS004 ElementaryMethodsOfTypeInCollectionNotOverridden
SS005 EqualsAndGetHashcodeNotImplementedTogether
SS006 ThrowNull
SS007 FlagsEnumValuesAreNotPowersOfTwo
SS008 GetHashCodeRefersToMutableMember
SS009 LoopedRandomInstantiation
SS010 NewGuid
SS011 OnPropertyChangedWithoutNameofOperator
SS012 RecursiveOperatorOverload
SS013 RethrowExceptionWithoutLosingStacktrace
SS014 StringDotFormatWithDifferentAmountOfArguments
SS015 StringPlaceholdersInWrongOrder
SS017 StructWithoutElementaryMethodsOverridden
SS018 SwitchDoesNotHandleAllEnumOptions
SS019 SwitchIsMissingDefaultLabel
SS020 TestMethodWithoutPublicModifier
SS021 TestMethodWithoutTestAttribute
SS022 ExceptionThrownFromImplicitOperator
SS023 ExceptionThrownFromPropertyGetter
SS024 ExceptionThrownFromStaticConstructor
SS025 ExceptionThrownFromFinallyBlock
SS026 ExceptionThrownFromEqualityOperator
SS027 ExceptionThrownFromDispose
SS028 ExceptionThrownFromFinalizer
SS029 ExceptionThrownFromGetHashCode
SS030 ExceptionThrownFromEquals
SS032 ThreadSleepInAsyncMethod
SS033 AsyncOverloadsAvailable
SS034 AccessingTaskResultWithoutAwait
SS035 SynchronousTaskWait
SS036 ExplicitEnumValues
SS037 HttpClientInstantiatedDirectly
SS038 HttpContextStoredInField
SS039 EnumWithoutDefaultValue
SS040 UnusedResultOnImmutableObject
SS041 UnnecessaryEnumerableMaterialization
SS042 InstanceFieldWithThreadStatic
SS043 MultipleFromBodyParameters
SS044 AttributeMustSpecifyAttributeUsage
SS045 StaticInitializerAccessedBeforeInitialization
SS046 UnboundedStackalloc
SS047 LinqTraversalBeforeFilter
SS048 LockingOnDiscouragedObject
SS049 ComparingStringsWithoutStringComparison
SS050 ParameterAssignedInConstructor
SS051 LockingOnMutableReference
SS052 ThreadStaticWithInitializer
SS053 PointlessCollectionToString
SS054 NewtonsoftMixedWithSystemTextJson
SS055 MultipleOrderByCalls
SS056 FormReadSynchronously
SS057 CollectionManipulatedDuringTraversal
SS058 StringConcatenatedInLoop
SS059 DisposeAsyncDisposable

Configuration

Is a particular rule not to your liking? There are many ways to adjust their severity and even disable them altogether. For an overview of some of the options, check out this document.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.24.0 834 2/21/2024
1.23.4 715 1/5/2024
1.23.3 5,232 5/15/2023
1.23.2 711 3/18/2023
1.23.1 1,454 2/28/2023
1.23.0 279 2/26/2023
1.22.2 254 2/25/2023
1.22.1 281 2/21/2023
1.22.0 246 2/21/2023
1.21.6 540 2/10/2023
1.21.5 380 1/31/2023
1.21.4 308 1/29/2023
1.21.3 300 1/25/2023
1.21.2 284 1/23/2023
1.21.1 287 1/22/2023
1.21.0 298 1/21/2023
1.20.0 317 1/20/2023
1.19.1 340 1/14/2023
1.19.0 307 1/12/2023
1.18.0 1,074 1/10/2023
1.17.6 311 1/8/2023
1.17.5 323 1/6/2023
1.17.4 321 1/4/2023
1.17.3 299 1/3/2023
1.17.2 321 1/2/2023
1.17.1 301 1/2/2023
1.17.0 327 1/1/2023
1.16.22 313 1/1/2023
1.16.21 310 1/1/2023
1.16.20 294 1/1/2023
1.16.19 307 1/1/2023
1.16.18 285 12/31/2022
1.16.17 271 12/31/2022
1.16.16 308 12/30/2022
1.16.15 317 12/30/2022
1.16.14 319 12/30/2022
1.16.13 271 12/30/2022
1.16.12 290 12/30/2022
1.16.11 305 12/30/2022
1.16.10 293 12/30/2022
1.16.9 300 12/30/2022
1.16.8 275 12/30/2022
1.16.7 312 12/30/2022
1.16.6 303 12/30/2022
1.16.5 328 12/29/2022
1.16.4 311 12/29/2022
1.16.3 285 12/29/2022
1.16.2 307 12/29/2022
1.16.1 314 12/28/2022
1.16.0 276 12/27/2022
1.15.0 314 12/25/2022
1.14.1 8,336 10/16/2022
1.14.0 409 10/16/2022
1.13.1 403 10/1/2022
1.13.0 399 10/1/2022
1.12.0 448 9/25/2022
1.11.2 424 9/25/2022
1.11.1 397 9/24/2022
1.11.0 436 9/24/2022
1.10.1 421 9/16/2022
1.10.0 457 9/14/2022
1.9.4 476 9/13/2022
1.9.3 405 9/12/2022
1.9.2 391 9/12/2022
1.9.1 423 9/11/2022
1.9.0 426 9/11/2022
1.8.0 407 9/8/2022
1.7.2 425 9/6/2022
1.7.1 429 9/5/2022
1.7.0 421 9/5/2022
1.6.0 391 9/4/2022
1.5.0 387 9/4/2022
1.4.2 417 9/4/2022
1.3.1 426 9/3/2022
1.3.0 425 9/2/2022
1.2.4 426 8/31/2022
1.2.3 434 8/29/2022
1.2.2 427 8/29/2022
1.2.1 411 8/29/2022
1.2.0 428 8/29/2022
1.1.1 429 8/28/2022
1.1.0 409 8/28/2022
1.0.0 444 8/28/2022
0.9.0 441 8/26/2022
0.8.0 431 8/23/2022
0.7.0 393 8/22/2022
0.6.0 440 8/15/2022
0.5.0 418 8/14/2022
0.4.0 432 8/14/2022
0.3.0 500 5/10/2020
0.2.0 524 4/12/2020
0.1.0 534 4/12/2020

For a full overview of the changes, visit https://github.com/vannevelj/sharpsource/releases