Files
ssh.net/.editorconfig
cannot load ini file: key-value delimiter not found: // Avoid looking for .editorconfig files in parent directories
Wojciech Nagórski 2bbfee4a37 Release 2023.0.0 (#1201)
* Assets/logos (#782)

* Added logo assets

* Added PNG 1260x640 with white border

Co-authored-by: 103filgualan <f.gualandi@crif.com>

* OPENSSH KeyReader for more keys (#614)

* OPENSSH KeyReader for more keys

Add support to parse OpenSSH Keys with ECDSA 256/384/521 and RSA.

https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key

Change-Id: Iaa9cce0f2522e5fee377a82cb252f81f0b7cc563

* Fix ED25519Key KeyLength

* Fix ED25519 PubKey-auth

LeadingZeros of BigInteger-Conversion have to be removed
before sending the Key.

* Add interface to SftpFile #120 (#812)

* Create ISftpFile interface. SftpFile sealed. Return ISftpFile from SftpClient instead of SftpFile. Make ISftpClient interface disposable.

Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com>

* Start MessageListener with ThreadAbstraction.ExecuteThreadLongRunning (#902)

* Fix Thread pool exhaustion due to MessageListener running on ThreadPool
* Mark long running thread as background

* Add async support to SftpClient and SftpFileStream (#819)

* Add FEATURE_TAP and net472 target
* Add TAP async support to SftpClient and SftpFileStream
* Add async support to DnsAbstraction and SocketAbstraction
* Add async support to *Connector and refactor the hierarchy
* Add ConnectAsync to BaseClient

* Add CODEOWNERS file.

* Fix virus false-positive by Defender on Renci.SSHNet.Tests.dll (#867)

Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com>

* Add unit tests for task-based asynchronous API (#906)

* Fix runtime and culture dependant tests.
* Set C# 7.3 in Tests.csproj to limit intellisense's suggestions under different targets
* Add SftpClientTest.*Async
* Add SftpFileStreamTest_OpenAsync_*
* Add SftpFileStreamTest_WriteAsync_*
* Add SftpFileStreamTest_ReadAsync_*
* Align AppVeyor script with Test project target frameworks

* correct 'Documenation' to 'Documentation' (#838)

in the documentation's window title

* Agent auth and Keygen (#794)

* Allow to set PrivateKeyFile Key directly
   So you can add your own Key-Classes to SSH.NET
* Add ED25519 ctor for just pub key part.
* Make ECDSA Key Bits accessible
   You cant export imported CngKeys. To be able to export them to agent or Key-Files make the private bits also accessible.
* Better NETFRAMEWORK vs NETSTANDARD handling
* Add Comment Property to Key
* Add IPrivateKeySource
  So Extension can add own PrivateKeyFiles, e.g. PuttyKeyFile.

* Use cryptographically secure random number generator.
Fixes CVE-2022-29245.

* Remove unused import.

* Add IBaseClient for BaseClient and ISftpClient to inherit from (#975)

Add IBaseClient for BaseClient and ISftpClient to inherit from

* fix typo (#999)

* Fix Seek Operations in SftpFileStream (#910)

* Fix offset operations in SftpFileStream.Seek
* Fix seek exception message and add default case for invalid seek origin
* Use named params when throwing ArgumentException
* Add tests for seeking from end of file

* Add back copyright to license. (#1060)

Fixes #1059.

* Removing old target frameworks (#1109)

Remove support for legacy / deprecated target frameworks while adding support for .NET 6.0 (and higher).
The supported target frameworks are now:
* .NETFramework 4.6.2 (and higher)
* .NET Standard 2.0
* .NET 6.0 (and higher)

* Remove old features [Part 1] (#1117)

Remove obsolete feature switches (now that we've remove support for legacy target frameworks) and remove corresponding conditional code.

* Remove FEATURE_DIRECTORYINFO_ENUMERATEFILES (#1119)

* Remove FEATURE_DIRECTORYINFO_ENUMERATEFILES
* Add exception documentation

* Fix some (lots of) issues reported by analyzers. (#1125)

Fix some (lots of) issues reported by analyzers.

* Round 2 of analyzer fixes and general cleanup. (#1132)

* Analyzer fixes round 3. (#1135)

* Replace Array<T>.Empty with Array.Empty<T>() (#1137)

* Replace IsNullOrWhiteSpace extension (#1142)

* Use License Expression for NuGet Package

licenseUrl is deprecated, see https://github.com/NuGet/Announcements/issues/32

* Integration tests

* Remove todos

* Update CODEOWNERS

* Use correct SSH.NET

* ListDirectoryAsync return IAsyncEnumerable (#1126)

* ListDirectoryAsync return IAsyncEnumerable

* Fix documentation

* Update README.md

* Fix

* Add Sftp ListDirectoryAsync test

* Revert

* Integration tests for ListDirectoryAsync with IAsyncEnumerable

* Fix the assembly resolution build warning (#1165)

* Delete performance/longrunning tests (#1143)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Move Integration tests (#1173)

* Renci.SshNet.IntegrationTests

* Renci.SshNet.TestTools.OpenSSH

* Move integration tests to main repo

* Move old tests to new integration tests

* Move old integration tests to new integration tests

* Move more tests

* Move authentication tests

* Move SshClientTests

* Fix some tests

* Remove duplicated test

* Poc of ProcessDisruptor

* Rename

* Some fixes

* Remove performance tests

* Small improvements

* Add a benchmarks project (#1151)

* Add a benchmarks project

* Small improvements

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Use ExceptionDispatchInfo to retain call stack in Session.WaitOnHandle() (#936)

* Use ExceptionDispatchInfo to retain call stack in Session.WaitOnHandle()

* merge

* Update src/Renci.SshNet/Session.cs

Co-authored-by: Rob Hague <rob.hague00@gmail.com>

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>

* Support SHA256 fingerprints for host key validation (#1098)

* Add tests for HostKeyEventArgs

* Add SHA256 fingerprint support

* Add support for RSA SHA-2 public key algorithms (#1177)

* Abstract out the hash algorithm from RsaDigitalSignature

* Add integration tests

* Add DigitalSignature property to KeyHostAlgorithm

* Add IHostAlgorithmsProvider interface

* Verify the host signature

* Fix HostKeyEventArgsTest after merge

* Remove PubkeyAcceptedAlgorithms ssh-rsa

* Add test coverage for RSA keys in PrivateKeyFile

* Obsolete IPrivateKeySource

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Improvements after #1177 (#1180)

* Use ExceptionDispatchInfo in more places (#1182)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Try to "fix" the flaky test (#1185)

* Enable DSA tests (#1181)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* FingerPrints (#1186)

* Use OS-agnostic socket error codes to allow tests run on different OSes (#1179)

SocketErrorCode is OS agnostic, ErrorCode is OS specific.

On Windows ErrorCode = (int) SocketErrorCode, but on Mac and Unix it is not.

For example ExitCode for HostNotFound (11001) on Windows is 11001, on Mac & Unix is -131073. So testing for ExitCode == 11001 fails on Mac & Unix.

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Fix for channel session semaphore from thread blocking (#1071)

* Merging fix from @clivetong into our own SSH.NET fork
- The following article describes some of the issues with the double check lock that we have seen issues with: https://www.sudhanshutheone.com/posts/double-check-lock-csharp

* Merging fix from @clivetong into our own SSH.NET fork
- The following article describes some of the issues with the double check lock that we have seen issues with: https://www.sudhanshutheone.com/posts/double-check-lock-csharp

* Update Channel to fix AppVeyor failure (field should be readonly)

* Update ISftpClient for #120 (#1193)

* Implement set last write and access time (#1194)

* Add/migrate hmac+cipher integration tests (#1189)

* Add/migrate hmac+cipher integration tests

* fix integration tests

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Update tests for SetLastAccessTime(Utc) to also verify the time component and the Kind of the DateTime value returned by GetLastAccessTime(Utc). (#1198)

---------

Co-authored-by: Filippo Gualandi <filippo.gualandi@gmail.com>
Co-authored-by: 103filgualan <f.gualandi@crif.com>
Co-authored-by: Stefan Rinkes <darinkes@users.noreply.github.com>
Co-authored-by: wxtsxt <wojciech.swieboda@gmail.com>
Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com>
Co-authored-by: Igor Milavec <igor.milavec@gmail.com>
Co-authored-by: drieseng <gert.driesen@telenet.be>
Co-authored-by: Pedro Fonseca <pbfonseca@gmail.com>
Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com>
Co-authored-by: Maximiliano Jabase <maxijabase@gmail.com>
Co-authored-by: Owen Krueger <37021716+Owen-Krueger@users.noreply.github.com>
Co-authored-by: Masuri <psh0258@gmail.com>
Co-authored-by: LemonPi314 <49930425+LemonPi314@users.noreply.github.com>
Co-authored-by: Gert Driesen <gertdriesen@msn.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>
Co-authored-by: Rob Hague <rh@johnstreetcapital.com>
Co-authored-by: Marius Thesing <marius.thesing@gmail.com>
Co-authored-by: Dāvis Mošenkovs <davikovs@gmail.com>
Co-authored-by: Dmitry Tsarevich <dimhotepus@users.noreply.github.com>
Co-authored-by: Patrick Yates <114094360+patrick-yates-redgate@users.noreply.github.com>
2023-10-10 21:32:33 +02:00

1247 lines
45 KiB
INI
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Avoid looking for .editorconfig files in parent directories
root=true
[*]
insert_final_newline = true
indent_style = space
indent_size = 4
tab_width = 4
end_of_line = crlf
[*.cs]
#### Sonar rules ####
# S101: Types should be named in PascalCase
# https://rules.sonarsource.com/csharp/RSPEC-101
#
# TODO: Remove this when code has been updated!
dotnet_diagnostic.S101.severity = none
# S112: General exceptions should never be thrown
# https://rules.sonarsource.com/csharp/RSPEC-112
#
# This is a duplicate of CA2201 and MA0012.
dotnet_diagnostic.S112.severity = none
# S907: Remove use of 'goto'
# https://rules.sonarsource.com/csharp/RSPEC-907
#
# Limited use of 'goto' is accepted when performance is critical.
dotnet_diagnostic.S907.severity = none
# S1066: Collapsible "if" statements should be merged
# https://rules.sonarsource.com/csharp/RSPEC-1066
#
dotnet_diagnostic.S1066.severity = none
# S1075: URIs should not be hardcoded
# https://rules.sonarsource.com/csharp/RSPEC-1075
#
# The rule reports false positives for XML namespaces.
dotnet_diagnostic.S1075.severity = none
# S1104: Fields should not have public accessibility
# https://rules.sonarsource.com/csharp/RSPEC-1104
#
# This is a duplicate of SA1401 and CA1051.
dotnet_diagnostic.S1104.severity = none
# S1125: Boolean literals should not be redundant
# https://rules.sonarsource.com/csharp/RSPEC-1125
#
# This is a duplicate of MA0073.
dotnet_diagnostic.S1125.severity = none
# S1135: Track uses of "TODO" tags
#
# This is a duplicate of MA0026.
dotnet_diagnostic.S1135.severity = none
# S1168: Empty arrays and collections should be returned instead of null
# https://rules.sonarsource.com/csharp/RSPEC-1168
#
# We sometimes return null to avoid allocating an empty List<T>.
dotnet_diagnostic.S1168.severity = none
# S1172: Unused method parameters should be removed
# https://rules.sonarsource.com/csharp/RSPEC-1172
#
# This is a duplicate of IDE0060.
dotnet_diagnostic.S1172.severity = none
# S1481: Unused local variables should be removed
# https://rules.sonarsource.com/csharp/RSPEC-1481
#
# This is a duplicate of IDE0059.
dotnet_diagnostic.S1481.severity = none
# S2259: Null pointers should not be dereferenced
# https://rules.sonarsource.com/csharp/RSPEC-2259
#
# The analysis is not precise enough, leading to false positives.
dotnet_diagnostic.S2259.severity = none
# S2445: Blocks should be synchronized on read-only fields
# https://rules.sonarsource.com/csharp/RSPEC-2445
#
# This is a (partial) duplicate of MA0064.
dotnet_diagnostic.S2445.severity = none
# S2551: Shared resources should not be used for locking
# https://rules.sonarsource.com/csharp/RSPEC-2551
#
# This is a duplicate of CA2002, and partial duplicate of MA0064.
dotnet_diagnostic.S2551.severity = none
# S2583: Conditionally executed code should be reachable
# https://rules.sonarsource.com/csharp/RSPEC-2583
#
# This rule produces false errors in, for example, for loops.
#dotnet_diagnostic.S2583.severity = none
# S2699: Tests should include assertions
# https://rules.sonarsource.com/csharp/RSPEC-2699
#
# Sometimes you want a test in which you invoke a method and just want to verify that it does not throw.
# For example:
# [TestMethod]
# public void InvokeDisposeWithoutNotifyObjectShouldNotThrow()
# {
# _timer.Dispose();
# }
dotnet_diagnostic.S2699.severity = none
# S2933: Fields that are only assigned in the constructor should be "readonly"
# https://rules.sonarsource.com/csharp/RSPEC-2933
#
# This is a duplicate of IDE0044, but IDE0044 is not reported when targeting .NET Framework 4.8.
dotnet_diagnostic.S2933.severity = none
# S2971: "IEnumerable" LINQs should be simplified
# https://rules.sonarsource.com/csharp/RSPEC-2971
#
# This is a duplicate of MA0020.
dotnet_diagnostic.S2971.severity = none
# S3218: Inner class members should not shadow outer class "static" or type members
# https://rules.sonarsource.com/csharp/RSPEC-3218
#
# This is rather harmless.
dotnet_diagnostic.S3218.severity = none
# S3267: Loops should be simplified with "LINQ" expressions
# https://rules.sonarsource.com/csharp/RSPEC-3267
#
# LINQ is the root of all evil :p
dotnet_diagnostic.S3267.severity = none
# S3376: Attribute, EventArgs, and Exception type names should end with the type being extended
# https://rules.sonarsource.com/csharp/RSPEC-3376
#
# This is a partial duplicate of MA0058. If we enable the Sonar in all repositories, we should
# consider enabling S3376 in favor of MA0058.
dotnet_diagnostic.S3376.severity = none
# S3871: Exception types should be "public"
# https://rules.sonarsource.com/csharp/RSPEC-3871
#
# This is a duplicate of CA1064.
dotnet_diagnostic.S3871.severity = none
# S3925: "ISerializable" should be implemented correctly
# https://rules.sonarsource.com/csharp/RSPEC-3925
#
# This is a duplicate of CA2229.
dotnet_diagnostic.S3925.severity = none
# S3928: Parameter names used into ArgumentException constructors should match an existing one
# https://rules.sonarsource.com/csharp/RSPEC-3928
#
# This is a duplicate of MA0015.
dotnet_diagnostic.S3928.severity = none
# S3998: Threads should not lock on objects with weak identity
# https://rules.sonarsource.com/csharp/RSPEC-3998
#
# This is a duplicate of CA2002, and partial duplicate of MA0064.
dotnet_diagnostic.S3998.severity = none
# S4456: Parameter validation in yielding methods should be wrapped
# https://rules.sonarsource.com/csharp/RSPEC-4456
#
# This is a duplicate of MA0050.
dotnet_diagnostic.S4456.severity = none
# S4487: Unread "private" fields should be removed
# https://rules.sonarsource.com/csharp/RSPEC-4487
#
# This is a duplicate of IDE0052.
dotnet_diagnostic.S4487.severity = none
# S4581: "new Guid()" should not be used
# https://rules.sonarsource.com/csharp/RSPEC-4581
#
# This is a partial duplicate of MA0067, and we do not want to report the use of 'default' for a Guid as error.
dotnet_diagnostic.S4581.severity = none
#### StyleCop rules ####
# SA1003: Symbols must be spaced correctly
#
# When enabled, a diagnostic is produced when there's a space after a cast.
# For example:
# var x = (int) z;
dotnet_diagnostic.SA1003.severity = none
# SA1008: Opening parenthesis should not be preceded by a space
#
# When enabled, a diagnostic is produce when a cast precedes braces.
# For example:
# (long) (a * b)
dotnet_diagnostic.SA1008.severity = none
# SA1009: Closing parenthesis should not be followed by a space
#
# When enabled, a diagnostic is produced when there's a space after a cast.
# For example:
# var x = (int) z;
dotnet_diagnostic.SA1009.severity = none
# SA1101: Prefix local calls with this
dotnet_diagnostic.SA1101.severity = none
# SA1116: Split parameters must start on line after declaration
#
# When enabled, a diagnostic is produced when the first parameter is on the same line as the method or constructor.
# For example:
# arrayBuilder.Add(new StatisticsCallInfo(callsByType.Key,
# callsForType.Count);
dotnet_diagnostic.SA1116.severity = none
# SA1200: Using directives must be placed correctly
#
# This is already verified by the .NET compiler platform analyzers (csharp_using_directive_placement option and IDE0065 rule).
dotnet_diagnostic.SA1200.severity = none
# SA1201: Elements must appear in the correct order
dotnet_diagnostic.SA1201.severity = none
# SA1206: Modifiers are not ordered
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1206.md
#
# This is a duplicate of IDE0036, except that it cannot be configured and expects the required modifier to be before the
# accessibility modifier.
dotnet_diagnostic.SA1206.severity = none
# SA1309: Field names must not begin with underscore
dotnet_diagnostic.SA1309.severity = none
# SA1405: Debug.Assert should provide message text
#
# To be discussed if we want to enable this.
dotnet_diagnostic.SA1405.severity = none
# SA1413: Use trailing comma in multi-line initializers
dotnet_diagnostic.SA1413.severity = none
# SA1503: Braces should not be omitted
#
# This is a duplicate of IDE0011.
dotnet_diagnostic.SA1503.severity = none
# SA1516: Elements must be separated by blank line
#
# When enabled, a diagnostic is produced for properties with both a get and set accessor.
# For example:
# public bool EnableStatistics
# {
# get
# {
# return _enableStatistics;
# }
# set
# {
# _enableStatistics = value;
# }
# }
dotnet_diagnostic.SA1516.severity = none
# SA1520: Use braces consistently
#
# Since we always require braces (configured via csharp_prefer_braces and reported as IDE0011), it does not make sense to check if braces
# are used consistently.
dotnet_diagnostic.SA1520.severity = none
# SA1633: File must have header
#
# We do not use file headers.
dotnet_diagnostic.SA1633.severity = none
# SA1648: <inheritdoc> must be used with inheriting class
#
# This rule is disabled by default, hence we need to explicitly enable it.
dotnet_diagnostic.SA1648.severity = error
# SX1101: Do not prefix local members with 'this.'
#
# This rule is disabled by default, hence we need to explicitly enable it.
dotnet_diagnostic.SX1101.severity = error
# SX1309: Field names must begin with underscore
#
# This rule is disabled by default, hence we need to explicitly enable it.
dotnet_diagnostic.SX1309.severity = error
# SX1309S: Static field names must begin with underscore
#
# This rule is disabled by default, hence we need to explicitly enable it.
dotnet_diagnostic.SX1309S.severity = error
#### Meziantou.Analyzer rules ####
# MA0002: Use an overload that has a IEqualityComparer<string> or IComparer<string> parameter
#
# In .NET (Core) there have been quite some optimizations for EqualityComparer<T>.Default (eg. https://github.com/dotnet/coreclr/pull/14125)
# and Comparer<T>.Default (eg. https://github.com/dotnet/runtime/pull/48160).
#
# We'll have to verify impact on performance before we decide to use specific comparers (eg. StringComparer.InvariantCultureIgnoreCase).
dotnet_diagnostic.MA0002.severity = none
# MA0006: Use string.Equals instead of Equals operator
#
# We almost always want ordinal comparison, and using the explicit overload adds a little overhead
# and is more chatty.
dotnet_diagnostic.MA0006.severity = none
# MA0007: Add a comma after the last value
#
# We do not add a comma after the last value in multi-line initializers.
# For example:
# public enum Sex
# {
# Male = 1,
# Female = 2 // No comma here
# }
#
# Note:
# This is a duplicate of SA1413.
dotnet_diagnostic.MA0007.severity = none
# MA0009: Add regex evaluation timeout
#
# We do not see a need guard our regex's against a DOS attack.
dotnet_diagnostic.MA0009.severity = none
# MA0011: IFormatProvider is missing
#
# Also report diagnostic in ToString(...) methods
MA0011.exclude_tostring_methods = false
# MA0012: Do not raise reserved exception type
#
# This is a duplicate of CA2201.
dotnet_diagnostic.MA0012.severity = none
# MA0014: Do not raise System.ApplicationException type
#
# This is a duplicate of CA2201.
dotnet_diagnostic.MA0014.severity = none
# MA0016: Prefer returning collection abstraction instead of implementation
#
# This is a duplicate of CA1002.
dotnet_diagnostic.MA0016.severity = none
# MA0018: Do not declare static members on generic types
#
# This is a duplicate of CA1000.
dotnet_diagnostic.MA0018.severity = none
# MA0021: Use StringComparer.GetHashCode instead of string.GetHashCode
#
# No strong need for this, and may negatively affect performance.
dotnet_diagnostic.MA0021.severity = none
# MA0031: Optimize Enumerable.Count() usage
# https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0031.md
#
# The proposed code is less readable.
#
# For example:
#
# the following code fragment:
# enumerable.Count() > 10;
#
# would become:
# enumerable.Skip(10).Any();
dotnet_diagnostic.MA0031.severity = none
# MA0036: Make class static
#
# This is a partial duplicate of CA1052.
dotnet_diagnostic.MA0036.severity = none
# MA0038: Make method static
#
# This is a partial duplicate of, and deprecated in favor of, CA1822.
dotnet_diagnostic.MA0038.severity = none
# MA0041: Make property static
#
# This is a partial duplicate of, and deprecated in favor of, CA1822.
dotnet_diagnostic.MA0041.severity = none
# MA0048: File name must match type name
#
# This is a duplicate of SA1649.
dotnet_diagnostic.MA0048.severity = none
# MA0049: Type name should not match containing namespace
#
# This is a duplicate of CA1724
dotnet_diagnostic.MA0049.severity = none
# MA0051: Method is too long
#
# We do not want to limit the number of lines or statements per method.
dotnet_diagnostic.MA0051.severity = none
# MA0053: Make class sealed
#
# Also report diagnostic for public types.
MA0053.public_class_should_be_sealed = true
# MA0053: Make class sealed
#
# Also report diagnostic for types that derive from System.Exception.
MA0053.exceptions_should_be_sealed = true
# MA0053: Make class sealed
#
# Also report diagnostic for types that define (new) virtual members.
MA0053.class_with_virtual_member_shoud_be_sealed = true
# MA0112: Use 'Count > 0' instead of 'Any()'
#
# This rule is disabled by default, hence we need to explicitly enable it.
dotnet_diagnostic.MA0112.severity = error
#### .NET Compiler Platform code quality rules ####
# CA1002: Do not expose generic lists
#
# For performance reasons - to avoid interface dispatch - we expose generic lists
# instead of a base class or interface.
dotnet_diagnostic.CA1002.severity = none
# CA1008: Enums should have zero value
#
# TODO: To be discussed. Having a zero value offers a performance advantage.
dotnet_diagnostic.CA1008.severity = none
# CA1014: Mark assemblies with CLSCompliantAttribute
#
# This rule is disabled by default, hence we need to explicitly enable it.
#
# Even when enabled, this diagnostic does not appear to be reported for assemblies without CLSCompliantAttribute.
# We reported this issue as https://github.com/dotnet/roslyn-analyzers/issues/6563.
dotnet_diagnostic.CA1014.severity = error
# CA1051: Do not declare visible instance fields
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1051
#
# This is a duplicate of S1104 and SA1401.
dotnet_diagnostic.CA1051.severity = none
# CA1052: Static holder types should be Static or NotInheritable
#
# By default, this diagnostic is only reported for public types.
dotnet_code_quality.CA1052.api_surface = all
# CA1303: Do not pass literals as localized parameters
#
# We don't care about localization.
dotnet_diagnostic.CA1303.severity = none
# CA1305: Specify IFormatProvider
#
# This is a an equivalent of MA0011, except that it does not report a diagnostic for the use of
# DateTime.TryParse(string s, out DateTime result).
#
# Submitted https://github.com/dotnet/roslyn-analyzers/issues/6096 to fix CA1305.
dotnet_diagnostic.CA1305.severity = none
# CA1510: Use ArgumentNullException throw helper
#
# This is only available in .NET 6.0 and higher. We'd need to use conditional compilation to only
# use these throw helper when targeting a framework that supports it.
dotnet_diagnostic.CA1510.severity = none
# CA1725: Parameter names should match base declaration
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1725
#
# This is a duplicate of S927, but contains at least one bug:
# https://github.com/dotnet/roslyn-analyzers/issues/6461
#
# Since we do not enable any of the Sonar rules by default, we'll leave CA1725 enabled.
dotnet_diagnostic.CA1725.severity = error
# CA1819: Properties should not return arrays
#
# Arrays offer better performance than collections.
dotnet_diagnostic.CA1819.severity = none
# CA1828: Mark members as static
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1822
#
# Documentation does not mention which API surface(s) this rule runs on, so we explictly configure it.
dotnet_code_quality.CA1828.api_surface = all
# CA1852: Seal internal types
#
# Similar to MA0053, but does not support public types and types that define (new) virtual members.
dotnet_diagnostic.CA1852.severity = none
# CA1859: Change return type for improved performance
#
# By default, this diagnostic is only reported for private members.
dotnet_code_quality.CA1859.api_surface = all
# CA2208: Instantiate argument exceptions correctly
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2208
#
# This is similar to, but less powerful than, MA0015.
dotnet_diagnostic.CA2208.severity = none
#### Roslyn IDE analyser rules ####
# IDE0032: Use auto-implemented property
#
# For performance reasons, we do not always want to enforce the use of
# auto-implemented properties.
dotnet_diagnostic.IDE0032.severity = suggestion
# IDE0045: Use conditional expression for assignment
#
# This does not always result in cleaner/clearer code.
dotnet_diagnostic.IDE0045.severity = none
# IDE0046: Use conditional expression for return
#
# Using a conditional expression is not always a clear win for readability.
#
# Configured using 'dotnet_style_prefer_conditional_expression_over_return'
dotnet_diagnostic.IDE0046.severity = suggestion
# IDE0047: Remove unnecessary parentheses
#
# Removing "unnecessary" parentheses is not always a clear win for readability.
dotnet_diagnostic.IDE0047.severity = suggestion
# IDE0055: Fix formatting
#
# When enabled, diagnostics are reported for indented object initializers.
# For example:
# _content = new Person
# {
# Name = "\u13AAlarm"
# };
#
# There are no settings to configure this correctly, unless https://github.com/dotnet/roslyn/issues/63256 (or similar) is ever implemented.
dotnet_diagnostic.IDE0055.severity = none
# IDE0130: Namespace does not match folder structure
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0130
#
# TODO: Remove when https://github.com/sshnet/SSH.NET/issues/1129 is fixed
dotnet_diagnostic.IDE0130.severity = none
# IDE0270: Null check can be simplified
#
# var inputPath = originalDossierPathList.Find(x => x.id == updatedPath.id);
# if (inputPath is null)
# {
# throw new PcsException($"Path id ({updatedPath.id}) unknown in PCS for dossier id {dossierFromTs.dossier.id}", updatedPath.id);
# }
#
# We do not want to modify the code using a null coalescing operator:
#
# var inputPath = originalDossierPathList.Find(x => x.id == updatedPath.id) ?? throw new PcsException($"Path id ({updatedPath.id}) unknown in PCS for dossier id {dossierFromTs.dossier.id}", updatedPath.id);
dotnet_diagnostic.IDE0270.severity = none
#### .NET Compiler Platform code style rules ####
### Language rules ###
## Modifier preferences
dotnet_style_require_accessibility_modifiers = true
dotnet_style_readonly_field = true
csharp_prefer_static_local_function = true
## Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
# Expression-level preferences
dotnet_style_object_initializer = true
csharp_style_inlined_variable_declaration = true
dotnet_style_collection_initializer = true
dotnet_style_prefer_auto_properties = true
dotnet_style_explicit_tuple_names = true
csharp_prefer_simple_default_expression = true
dotnet_style_prefer_inferred_tuple_names = true
dotnet_style_prefer_inferred_anonymous_type_member_names = true
csharp_style_prefer_local_over_anonymous_function = true
csharp_style_deconstructed_variable_declaration = false
dotnet_style_prefer_conditional_expression_over_assignment = true
dotnet_style_prefer_conditional_expression_over_return = true
dotnet_style_prefer_compound_assignment = true
csharp_style_prefer_index_operator = false
csharp_style_prefer_range_operator = false
dotnet_style_prefer_simplified_interpolation = false
dotnet_style_prefer_simplified_boolean_expressions = true
csharp_style_implicit_object_creation_when_type_is_apparent = false
csharp_style_prefer_tuple_swap = false
# Namespace declaration preferences
csharp_style_namespace_declarations = block_scoped
# Null-checking preferences
csharp_style_throw_expression = false
dotnet_style_coalesce_expression = true
dotnet_style_null_propagation = true
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
csharp_style_prefer_null_check_over_type_check = true
csharp_style_conditional_delegate_call = true
# 'var' preferences
csharp_style_var_for_built_in_types = true
csharp_style_var_when_type_is_apparent = true
csharp_style_var_elsewhere = true
# Expression-bodies members
csharp_style_expression_bodied_methods = false
csharp_style_expression_bodied_constructors = false
csharp_style_expression_bodied_operators = false
csharp_style_expression_bodied_properties = false
csharp_style_expression_bodied_indexers = false
csharp_style_expression_bodied_accessors = false
csharp_style_expression_bodied_lambdas = false
csharp_style_expression_bodied_local_functions = false
# Pattern matching preferences
csharp_style_pattern_matching_over_as_with_null_check = true
csharp_style_pattern_matching_over_is_with_cast_check = true
csharp_style_prefer_switch_expression = false
csharp_style_prefer_pattern_matching = true
csharp_style_prefer_not_pattern = true
csharp_style_prefer_extended_property_pattern = true
# Code block preferences
csharp_prefer_braces = true
csharp_prefer_simple_using_statement = false
# Using directive preferences
csharp_using_directive_placement = outside_namespace
# Namespace naming preferences
dotnet_style_namespace_match_folder = true
# Undocumented preferences
csharp_style_prefer_method_group_conversion = false
csharp_style_prefer_top_level_statements = false
### Formatting rules ###
## .NET formatting options ##
# Using directive options
dotnet_sort_system_directives_first = true
dotnet_separate_import_directive_groups = true
## C# formatting options ##
# New-line options
# TNIS-13005: Enabling this setting breaks Resharper indentation for lambdas
#csharp_new_line_before_open_brace = accessors, anonymous_methods, anonymous_types, control_blocks, events, indexers, lambdas, local_functions, methods, object_collection_array_initializers, properties, types
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
# Enabling this setting breaks Resharper formatting for an enum field reference that is
# deeply nested in an object initializer.
#
# For an example, see TDataExchangeGeneralEnricher_CernInfrastructureObstruction.
#csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true
# Indentation options
csharp_indent_case_contents = true
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current
csharp_indent_block_contents = true
# TNIS-13005: Enabling this setting breaks Resharper indentation for lambdas
#csharp_indent_braces = false
# TNIS-13005: Enabling this setting breaks Resharper indentation for lambdas
#csharp_indent_case_contents_when_block = true
# Spacing options
csharp_space_after_cast = true
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_between_parentheses = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_around_binary_operators = before_and_after
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_after_comma = true
csharp_space_before_comma = false
csharp_space_after_dot = false
csharp_space_before_dot = false
csharp_space_after_semicolon_in_for_statement = true
csharp_space_before_semicolon_in_for_statement = false
csharp_space_around_declaration_statements = false
csharp_space_before_open_square_brackets = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_square_brackets = false
# Wrap options
csharp_preserve_single_line_statements = false
csharp_preserve_single_line_blocks = true
### Naming styles ###
# Naming rules
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.private_fields_camel_case_begins_with_underscore.symbols = private_fields
dotnet_naming_rule.private_fields_camel_case_begins_with_underscore.style = camel_case_begins_with_underscore
dotnet_naming_rule.private_fields_camel_case_begins_with_underscore.severity = error
dotnet_naming_rule.private_static_fields_camel_case_begins_with_underscore.symbols = private_static_fields
dotnet_naming_rule.private_static_fields_camel_case_begins_with_underscore.style = camel_case_begins_with_underscore
dotnet_naming_rule.private_static_fields_camel_case_begins_with_underscore.severity = error
dotnet_naming_rule.private_static_readonly_fields_pascal_case.symbols = private_static_readonly_fields
dotnet_naming_rule.private_static_readonly_fields_pascal_case.style = pascal_case
dotnet_naming_rule.private_static_readonly_fields_pascal_case.severity = error
dotnet_naming_rule.private_const_fields_pascal_case.symbols = private_const_fields
dotnet_naming_rule.private_const_fields_pascal_case.style = pascal_case
dotnet_naming_rule.private_const_fields_pascal_case.severity = error
# Symbol specifications
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = *
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = *
dotnet_naming_symbols.types.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = *
dotnet_naming_symbols.non_field_members.required_modifiers =
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_fields.required_modifiers =
dotnet_naming_symbols.private_static_fields.applicable_kinds = field
dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_static_fields.required_modifiers = static
dotnet_naming_symbols.private_static_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.private_static_readonly_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_static_readonly_fields.required_modifiers = static, readonly
dotnet_naming_symbols.private_const_fields.applicable_kinds = field
dotnet_naming_symbols.private_const_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_const_fields.required_modifiers = const
# Naming styles
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.camel_case_begins_with_underscore.required_prefix = _
dotnet_naming_style.camel_case_begins_with_underscore.required_suffix =
dotnet_naming_style.camel_case_begins_with_underscore.word_separator =
dotnet_naming_style.camel_case_begins_with_underscore.capitalization = camel_case
#### .NET Compiler Platform general options ####
# Change the default rule severity for all analyzer rules that are enabled by default
dotnet_analyzer_diagnostic.severity = error
#### .NET Compiler Platform code refactoring rules ####
dotnet_style_operator_placement_when_wrapping = end_of_line
#### ReSharper code style for C# ####
## Blank Lines
resharper_csharp_blank_lines_around_region = 1
resharper_csharp_blank_lines_inside_region = 1
resharper_csharp_blank_lines_before_single_line_comment = 1
resharper_csharp_keep_blank_lines_in_declarations = 1
resharper_csharp_remove_blank_lines_near_braces_in_declarations = true
resharper_csharp_blank_lines_after_start_comment = 1
resharper_csharp_blank_lines_between_using_groups = 1
resharper_csharp_blank_lines_after_using_list = 1
resharper_csharp_blank_lines_around_namespace = 1
resharper_csharp_blank_lines_inside_namespace = 0
resharper_csharp_blank_lines_after_file_scoped_namespace_directive = 1
resharper_csharp_blank_lines_around_type = 1
resharper_csharp_blank_lines_around_single_line_type = 1
resharper_csharp_blank_lines_inside_type = 0
resharper_csharp_blank_lines_around_field = 0
resharper_csharp_blank_lines_around_single_line_field = 0
resharper_csharp_blank_lines_around_property = 1
resharper_csharp_blank_lines_around_single_line_property = 1
resharper_csharp_blank_lines_around_auto_property = 1
resharper_csharp_blank_lines_around_single_line_auto_property = 1
resharper_csharp_blank_lines_around_accessor = 0
resharper_csharp_blank_lines_around_single_line_accessor = 0
resharper_csharp_blank_lines_around_invocable = 1
resharper_csharp_blank_lines_around_single_line_invocable = 1
resharper_csharp_keep_blank_lines_in_code = 1
resharper_csharp_remove_blank_lines_near_braces_in_code = true
resharper_csharp_blank_lines_around_local_method = 1
resharper_csharp_blank_lines_around_single_line_local_method = 1
resharper_csharp_blank_lines_before_control_transfer_statements = 0
resharper_csharp_blank_lines_after_control_transfer_statements = 0
resharper_csharp_blank_lines_before_block_statements = 0
resharper_csharp_blank_lines_after_block_statements = 1
resharper_csharp_blank_lines_before_multiline_statements = 0
resharper_csharp_blank_lines_after_multiline_statements = 0
resharper_csharp_blank_lines_around_block_case_section = 0
resharper_csharp_blank_lines_around_multiline_case_section = 0
resharper_csharp_blank_lines_before_case = 0
resharper_csharp_blank_lines_after_case = 0
## Braces Layout
resharper_csharp_type_declaration_braces = next_line
resharper_csharp_indent_inside_namespace = true
resharper_csharp_invocable_declaration_braces = next_line
resharper_csharp_anonymous_method_declaration_braces = next_line_shifted_2
resharper_csharp_accessor_owner_declaration_braces = next_line
resharper_csharp_accessor_declaration_braces = next_line
resharper_csharp_case_block_braces = next_line_shifted_2
resharper_csharp_initializer_braces = next_line_shifted_2
resharper_csharp_use_continuous_indent_inside_initializer_braces = true
resharper_csharp_other_braces = next_line
resharper_csharp_allow_comment_after_lbrace = false
resharper_csharp_empty_block_style = multiline
## Syntax Style
# 'var' usage in declarations
resharper_csharp_for_built_in_types = use_var
resharper_csharp_for_simple_types = use_var
resharper_csharp_for_other_types = use_var
# Instance members qualification
resharper_csharp_instance_members_qualify_members = none
resharper_csharp_instance_members_qualify_declared_in = base_class
# Static members qualification
resharper_csharp_static_members_qualify_with = declared_type
resharper_csharp_static_members_qualify_members = none
# Built-in types
resharper_csharp_builtin_type_reference_style = use_keyword
resharper_csharp_builtin_type_reference_for_member_access_style = use_keyword
# Reference qualification and 'using' directives
resharper_csharp_prefer_qualified_reference = false
resharper_csharp_add_imports_to_deepest_scope = false
resharper_csharp_qualified_using_at_nested_scope = false
resharper_csharp_allow_alias = true
resharper_csharp_can_use_global_alias = true
# Modifiers
resharper_csharp_default_private_modifier = explicit
resharper_csharp_default_internal_modifier = explicit
resharper_csharp_modifiers_order = public private protected internal file static extern new virtual abstract sealed override readonly unsafe required volatile async
# Braces
resharper_csharp_braces_for_ifelse = required
resharper_csharp_braces_for_for = required
resharper_csharp_braces_for_foreach = required
resharper_csharp_braces_for_while = required
resharper_csharp_braces_for_dowhile = required
resharper_csharp_braces_for_using = required
resharper_csharp_braces_for_lock = required
resharper_csharp_braces_for_fixed = required
resharper_csharp_braces_redundant = false
# Code body
resharper_csharp_method_or_operator_body = block_body
resharper_csharp_local_function_body = block_body
resharper_csharp_constructor_or_destructor_body = block_body
resharper_csharp_accessor_owner_body = accessors_with_block_body
resharper_csharp_namespace_body = block_scoped
resharper_csharp_use_heuristics_for_body_style = false
# Trailing comma
resharper_csharp_trailing_comma_in_multiline_lists = false
resharper_csharp_trailing_comma_in_singleline_lists = false
# Object creation
resharper_csharp_object_creation_when_type_evident = explicitly_typed
resharper_csharp_object_creation_when_type_not_evident = explicitly_typed
# Default value
resharper_csharp_default_value_when_type_evident = default_literal
resharper_csharp_default_value_when_type_not_evident = default_literal
## Tabs, Indents, Alignment
# Nested statements
resharper_csharp_indent_nested_usings_stmt = false
resharper_csharp_indent_nested_fixed_stmt = false
resharper_csharp_indent_nested_lock_stmt = false
resharper_csharp_indent_nested_for_stmt = true
resharper_csharp_indent_nested_foreach_stmt = true
resharper_csharp_indent_nested_while_stmt = true
# Parenthesis
resharper_csharp_use_continuous_indent_inside_parens = true
resharper_csharp_indent_method_decl_pars = outside_and_inside
resharper_csharp_indent_invocation_pars = outside_and_inside
resharper_csharp_indent_statement_pars = outside_and_inside
resharper_csharp_indent_typeparam_angles = outside_and_inside
resharper_csharp_indent_typearg_angles = outside_and_inside
resharper_csharp_indent_pars = outside_and_inside
# Preprocessor directives
resharper_csharp_indent_preprocessor_if = no_indent
resharper_csharp_indent_preprocessor_region = usual_indent
resharper_csharp_indent_preprocessor_other = no_indent
# Other indents
resharper_indent_switch_labels = true
resharper_csharp_outdent_statement_labels = true
resharper_csharp_indent_type_constraints = true
resharper_csharp_stick_comment = false
resharper_csharp_place_comments_at_first_column = false
resharper_csharp_use_indent_from_previous_element = true
resharper_csharp_indent_braces_inside_statement_conditions = true
# Align multiline constructs
resharper_csharp_alignment_tab_fill_style = use_spaces
resharper_csharp_allow_far_alignment = true
resharper_csharp_align_multiline_parameter = true
resharper_csharp_align_multiline_extends_list = true
resharper_csharp_align_linq_query = true
resharper_csharp_align_multiline_binary_expressions_chain = true
resharper_csharp_outdent_binary_ops = false
resharper_csharp_align_multiline_calls_chain = true
resharper_csharp_outdent_dots = false
resharper_csharp_align_multiline_array_and_object_initializer = false
resharper_csharp_align_multiline_switch_expression = false
resharper_csharp_align_multiline_property_pattern = false
resharper_csharp_align_multiline_list_pattern = false
resharper_csharp_align_multiline_binary_patterns = false
resharper_csharp_outdent_binary_pattern_ops = false
resharper_csharp_indent_anonymous_method_block = true
resharper_csharp_align_first_arg_by_paren = false
resharper_csharp_align_multiline_argument = true
resharper_csharp_align_tuple_components = true
resharper_csharp_align_multiline_expression = true
resharper_csharp_align_multiline_statement_conditions = true
resharper_csharp_align_multiline_for_stmt = true
resharper_csharp_align_multiple_declaration = true
resharper_csharp_align_multline_type_parameter_list = true
resharper_csharp_align_multline_type_parameter_constrains = true
resharper_csharp_outdent_commas = false
## Line Breaks
# General
resharper_csharp_keep_user_linebreaks = true
resharper_csharp_max_line_length = 140
resharper_csharp_wrap_before_comma = false
resharper_csharp_wrap_before_eq = false
resharper_csharp_special_else_if_treatment = true
resharper_csharp_insert_final_newline = true
# Arrangement of attributes
resharper_csharp_keep_existing_attribute_arrangement = false
resharper_csharp_place_type_attribute_on_same_line = false
resharper_csharp_place_method_attribute_on_same_line = false
resharper_csharp_place_accessorholder_attribute_on_same_line = false
resharper_csharp_place_accessor_attribute_on_same_line = false
resharper_csharp_place_field_attribute_on_same_line = false
resharper_csharp_place_record_field_attribute_on_same_line = true
# Arrangement of method signatures
resharper_csharp_place_constructor_initializer_on_same_line = false
resharper_csharp_place_expr_method_on_single_line = true
resharper_csharp_place_expr_property_on_single_line = true
resharper_csharp_place_expr_accessor_on_single_line = true
# Arrangement of type parameters, constraints, and base types
resharper_csharp_place_type_constraints_on_same_line = false
resharper_csharp_wrap_before_first_type_parameter_constraint = true
# Arrangement of declaration blocks
resharper_csharp_place_abstract_accessorholder_on_single_line = true
# Arrangement of statements
resharper_new_line_before_else = true
resharper_new_line_before_while = true
resharper_new_line_before_catch = true
resharper_new_line_before_finally = true
resharper_wrap_for_stmt_header_style = chop_if_long
resharper_wrap_multiple_declaration_style = chop_always
## Spaces
# Preserve existing formatting
resharper_csharp_extra_spaces = remove_all
# Before parentheses in statements
resharper_csharp_space_before_if_parentheses = true
resharper_csharp_space_before_while_parentheses = true
resharper_csharp_space_before_catch_parentheses = true
resharper_csharp_space_before_switch_parentheses = true
resharper_csharp_space_before_for_parentheses = true
resharper_csharp_space_before_foreach_parentheses = true
resharper_csharp_space_before_using_parentheses = true
resharper_csharp_space_before_lock_parentheses = true
resharper_csharp_space_before_fixed_parentheses = true
# Before other parentheses
resharper_csharp_space_before_method_call_parentheses = false
resharper_csharp_space_before_empty_method_call_parentheses = false
resharper_csharp_space_before_method_parentheses = false
resharper_csharp_space_before_empty_method_parentheses = false
resharper_csharp_space_before_typeof_parentheses = false
resharper_csharp_space_before_default_parentheses = false
resharper_csharp_space_before_checked_parentheses = false
resharper_csharp_space_before_sizeof_parentheses = false
resharper_csharp_space_before_nameof_parentheses = false
resharper_csharp_space_before_new_parentheses = false
resharper_csharp_space_between_keyword_and_expression = true
resharper_csharp_space_between_keyword_and_type = false
# Within parentheses in statements
resharper_csharp_space_within_if_parentheses = false
resharper_csharp_space_within_while_parentheses = false
resharper_csharp_space_within_catch_parentheses = false
resharper_csharp_space_within_switch_parentheses = false
resharper_csharp_space_within_for_parentheses = false
resharper_csharp_space_within_foreach_parentheses = false
resharper_csharp_space_within_using_parentheses = false
resharper_csharp_space_within_lock_parentheses = false
resharper_csharp_space_within_fixed_parentheses = false
# Within other parentheses
resharper_csharp_space_within_parentheses = false
resharper_csharp_space_between_typecast_parentheses = false
resharper_csharp_space_between_method_declaration_parameter_list_parentheses = false
resharper_csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
resharper_csharp_space_between_method_call_parameter_list_parentheses = false
resharper_csharp_space_between_method_call_empty_parameter_list_parentheses = false
resharper_csharp_space_within_typeof_parentheses = false
resharper_csharp_space_within_default_parentheses = false
resharper_csharp_space_within_checked_parentheses = false
resharper_csharp_space_within_sizeof_parentheses = false
resharper_csharp_space_within_nameof_parentheses = false
resharper_csharp_space_within_new_parentheses = false
# Around array brackets
resharper_csharp_space_before_array_access_brackets = false
resharper_csharp_space_before_open_square_brackets = false
resharper_csharp_space_before_array_rank_brackets = false
resharper_csharp_space_within_array_access_brackets = false
resharper_csharp_space_between_square_brackets = false
resharper_csharp_space_within_array_rank_brackets = false
resharper_csharp_space_within_array_rank_empty_brackets = false
resharper_csharp_space_between_empty_square_bracket = false
# Around angle brackets
resharper_csharp_space_before_type_parameter_angle = false
resharper_csharp_space_before_type_argument_angle = false
resharper_csharp_space_within_type_parameter_angles = false
resharper_csharp_space_within_type_argument_angles = false
### ReSharper code style for XMLDOC ###
## Tabs and indents
resharper_xmldoc_indent_style = space
# ReSharper currently ignores this setting. See https://youtrack.jetbrains.com/issue/RSRP-465678/XMLDOC-indent-settings-ignored.
resharper_xmldoc_indent_size = 2
resharper_xmldoc_tab_width = 2
resharper_xmldoc_alignment_tab_fill_style = use_spaces
resharper_xmldoc_allow_far_alignment = true
## Line wrapping
resharper_xmldoc_max_line_length = 140
resharper_xmldoc_wrap_tags_and_pi = false
## Processing instructions
resharper_xmldoc_spaces_around_eq_in_pi_attribute = false
resharper_xmldoc_space_after_last_pi_attribute = false
resharper_xmldoc_pi_attribute_style = on_single_line
resharper_xmldoc_pi_attributes_indent = align_by_first_attribute
resharper_xmldoc_blank_line_after_pi = false
## Inside of tag header
resharper_xmldoc_spaces_around_eq_in_attribute = false
resharper_xmldoc_space_after_last_attribute = false
resharper_xmldoc_space_before_self_closing = false
resharper_xmldoc_attribute_style = do_not_touch
resharper_xmldoc_attribute_indent = align_by_first_attribute
## Tag content
resharper_xmldoc_keep_user_linebreaks = true
resharper_xmldoc_linebreaks_inside_tags_for_multiline_elements = true
resharper_xmldoc_linebreaks_inside_tags_for_elements_with_child_elements = false
resharper_xmldoc_spaces_inside_tags = false
resharper_xmldoc_wrap_text = false
resharper_xmldoc_wrap_around_elements = false
# ReSharper currently ignores the 'resharper_xmldoc_indent_size' setting. Once https://youtrack.jetbrains.com/issue/RSRP-465678/XMLDOC-indent-settings-ignored
# is fixed, we should change the value of this setting to 'one_indent'.
resharper_xmldoc_indent_child_elements = zero_indent
resharper_xmldoc_indent_text = zero_indent
## Around tags
resharper_xmldoc_max_blank_lines_between_tags = 1
resharper_xmldoc_linebreak_before_multiline_elements = true
resharper_xmldoc_linebreak_before_singleline_elements = false
[*.{xml,xsd,csproj,targets,proj,props,runsettings,config}]
#### ReSharper code style for XML ####
## Tabs and indents
resharper_xml_indent_style = space
resharper_xml_indent_size = 4
resharper_xml_tab_width = 4
resharper_xml_alignment_tab_fill_style = use_spaces
resharper_xml_allow_far_alignment = true
## Line wrapping
resharper_xml_wrap_tags_and_pi = false
## Processing instructions
resharper_xml_spaces_around_eq_in_pi_attribute = false
resharper_xml_space_after_last_pi_attribute = false
resharper_xml_pi_attribute_style = on_single_line
resharper_xml_pi_attributes_indent = align_by_first_attribute
resharper_xml_blank_line_after_pi = false
## Inside of tag header
resharper_xml_spaces_around_eq_in_attribute = false
resharper_xml_space_after_last_attribute = false
resharper_xml_space_before_self_closing = true
resharper_xml_attribute_style = do_not_touch
resharper_xml_attribute_indent = align_by_first_attribute
## Tag content
resharper_xml_keep_user_linebreaks = true
resharper_xml_linebreaks_inside_tags_for_multiline_elements = false
resharper_xml_linebreaks_inside_tags_for_elements_with_child_elements = false
resharper_xml_linebreaks_inside_tags_for_elements_longer_than = false
resharper_xml_spaces_inside_tags = false
resharper_xml_wrap_text = false
resharper_xml_wrap_around_elements = false
resharper_xml_indent_child_elements = one_indent
resharper_xml_indent_text = zero_indent
resharper_xml_max_blank_lines_between_tags = 1
resharper_xml_linebreak_before_multiline_elements = false
resharper_xml_linebreak_before_singleline_elements = false
## Other
resharper_xml_insert_final_newline = true