diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..882ab60 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,26 @@ +* text=auto + +# Scripts +*.[cC][mM][dD] text eol=crlf +*.[bB][aA][tT] text eol=crlf +*.sh text eol=lf + +# Diff +*.cs diff=csharp +*.md diff=markdown + +# LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.br filter=lfs diff=lfs merge=lfs -text +*.exe filter=lfs diff=lfs merge=lfs -text +*.gif filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.ico filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.psd filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.webp filter=lfs diff=lfs merge=lfs -text +*.woff2 filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c23a5ba --- /dev/null +++ b/.gitignore @@ -0,0 +1,357 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..16890ec --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,31 @@ +# Change Log +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog], and this project adheres to [Semantic Versioning]. + + + +## [Unreleased] + +## [0.0.0] - 2020-10-26 +- Project creation. + + +[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/ "Keep a Changelog 1.0.0" +[Semantic Versioning]: https://semver.org/spec/v2.0.0.html "Semantic Versioning 2.0.0" \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..75c4db5 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,71 @@ +# Code of Conduct + +## Our Pledge +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +## Our Standards +Examples of behavior that contributes to a positive environment for our community include: +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior include: +- The use of sexualized language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement Responsibilities +Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. + +## Scope +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. + +## Enforcement +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement [here][Report eMail]. All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the reporter of any incident. + +## Enforcement Guidelines +Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction +**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. + +### 2. Warning +**Community Impact**: A violation through a single incident or series of actions. + +**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. + +### 3. Temporary Ban +**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban +**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the community. + +## Attribution +This Code of Conduct is adapted from the [Contributor Covenant] by [Coraline Ada Ehmke]. + +Community Impact Guidelines were inspired by [Mozilla's Code of Conduct Enforcement Ladder]. + +For answers to common questions about this code of conduct, see the [FAQ]. + + +[Contributor Covenant]: https://www.contributor-covenant.org/version/2/0/code_of_conduct/ "Contributor Covenant 2.0" +[Coraline Ada Ehmke]: https://where.coraline.codes/ "Coraline Ada Ehmke's site" +[FAQ]: https://www.contributor-covenant.org/faq "Contributor Covenant FAQ" +[Mozilla's Code of Conduct Enforcement Ladder]: https://github.com/mozilla/diversity/blob/master/code-of-conduct-enforcement/consequence-ladder.md +[Report eMail]: mailto:wizaromx+coc@gmail.com?subject=CoCV%20Report \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..9003b5c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,45 @@ +# Contributing + +Contributions to this project are [released][Github Terms of Service] to the public under the project's open source [license]. + +This project adheres to a [Code of Conduct]. By participating, you are expected to honor this code. + + +This is a support library to build CLI applications in .Net. + +## Pull Request Process +1. Fork the project. +1. Clone the repository in your development machine (`git clone develop git@github.com:wizaro/CommandLine.git`). +1. Create a branch in the cloned repository (`git checkout -b topic/{my-feature}`). +1. Make your changes following these guidelines. +1. Commit your changes (`git commit -am "{Changes Summary}."`). +1. Push to the branch (`git push origin topic/{my-feature}`). +1. Open a [Pull Request]. + +## Environment + +Developed in C# on Visual Studio 2019. + +## Prerequisites + +- Git Flow (AVH) extensions are preferred but not required. + +## Developing + +The project has dependencies on code analysis tools to automate some coding standards. Please follow the [C# Coding Conventions] and the [Open-Source Library Guidance]. + +## Testing + +Currently there are no tests. + +## Releasing + +There is no release path yet, just build the project. + + +[C# Coding Conventions]: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions +[Code of Conduct]: ./CODE_OF_CONDUCT.md +[Github Terms of Service]: https://help.github.com/en/github/site-policy/github-terms-of-service#6-contributions-under-repository-license "Github Terms of Service / User-Generated Content / Contributions Under Repository License" +[License]: ./LICENSE "MIT License" +[Open-Source Library Guidance]: https://docs.microsoft.com/en-us/dotnet/standard/library-guidance/ +[Pull Request]: https://github.com/wizaro/CommandLine/pulls \ No newline at end of file diff --git a/GitVersion.yml b/GitVersion.yml new file mode 100644 index 0000000..4eb2b92 --- /dev/null +++ b/GitVersion.yml @@ -0,0 +1,72 @@ +assembly-versioning-scheme: MajorMinor +assembly-file-versioning-scheme: MajorMinorPatchTag +assembly-informational-format: '{InformationalVersion}' +mode: ContinuousDelivery +increment: Inherit +continuous-delivery-fallback-tag: ci +tag-prefix: '' +major-version-bump-message: '\+semver:\s?(breaking|major)' +minor-version-bump-message: '\+semver:\s?(feature|minor)' +patch-version-bump-message: '\+semver:\s?(fix|patch)' +no-bump-message: '\+semver:\s?(none|skip)' +legacy-semver-padding: 3 +build-metadata-padding: 3 +commits-since-version-source-padding: 3 +commit-message-incrementing: Enabled +commit-date-format: 'yyyy-MM-dd' +update-build-number: true +branches: + master: + regex: ^master$|^main$ + source-branches: ['develop', 'release'] + mode: ContinuousDelivery + tag: '' + increment: Patch + prevent-increment-of-merged-branch-version: true + is-mainline: true + develop: + regex: ^dev(elop)?(ment)?$ + source-branches: [] + mode: ContinuousDeployment + tag: alpha + increment: Minor + track-merge-target: true + tracks-release-branches: true + release: + regex: ^releases?[/-] + source-branches: ['develop', 'master', 'support', 'release'] + mode: ContinuousDelivery + tag: beta + increment: None + prevent-increment-of-merged-branch-version: true + is-release-branch: true + feature: + regex: ^(features?|topics?)[/-] + source-branches: ['develop', 'master', 'release', 'feature', 'support', 'hotfix'] + mode: ContinuousDelivery + tag: useBranchName + increment: Inherit + pull-request: + regex: ^(pull|pull\-requests|pr)[/-] + source-branches: ['develop', 'master', 'release', 'feature', 'support', 'hotfix'] + mode: ContinuousDelivery + tag: PullRequest + increment: Inherit + tag-number-pattern: '[/-](?\d+)[-/]' + hotfix: + regex: ^hotfix(es)?[/-] + source-branches: ['develop', 'master', 'support'] + mode: ContinuousDelivery + tag: beta + increment: Patch + support: + regex: ^support[/-] + source-branches: ['master'] + mode: ContinuousDelivery + tag: '' + increment: Patch + prevent-increment-of-merged-branch-version: true + is-mainline: true +ignore: + sha: [] +merge-message-formats: {} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d3f04b3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Wilhelm Zapiain Rodríguez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..c4788d6 --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +# WiZaRo's Command Line Interface Library + + + + +Support library to build CLI applications in .Net. + +## Features + +- Provides fluent extensions for [System.CommandLine]. + +See the latest changes in the [Change Log]. + + + + + +## Usage +### Prerequisites + +Coming soon… + +### Installation + +Coming soon… + +### Examples + +Coming soon… + +### Documentation + +Coming soon… + +### Support + +Coming soon… + +## Roadmap + +Coming soon… + +## Contributing +Please read our [Contribution Guidelines] for details on our code of conduct, how to set your environment and the process for submitting pull requests to us. + +## Authors + +[Wilhelm Zapiain] + + + + + +## License +[MIT] - [Summary] + + +[Change Log]: ./CHANGELOG.md +[Contribution Guidelines]: ./CONTRIBUTING.md +[MIT]: ./LICENSE +[System.CommandLine]: https://github.com/dotnet/command-line-api +[Summary]: https://choosealicense.com/licenses/mit/ "Choose a License's MIT Summary" +[Wilhelm Zapiain]: https://github.com/wilhelmzapiain \ No newline at end of file diff --git a/Src/.Build/GenerateComplementaryAssemblyInfo.targets b/Src/.Build/GenerateComplementaryAssemblyInfo.targets new file mode 100644 index 0000000..c6fc163 --- /dev/null +++ b/Src/.Build/GenerateComplementaryAssemblyInfo.targets @@ -0,0 +1,59 @@ + + + true + + + + $(IntermediateOutputPath)$(MSBuildProjectName).AssemblyInfo2$(DefaultLanguageSourceExtension) + false + false + + + + + + + $(IntermediateOutputPath)$(MSBuildProjectName).AssemblyInfo2Inputs.cache + + + + + + + + + + + + + <_Assembly2Line1 Condition="'$(Language)' == 'VB'">' <auto-generated/> + <_Assembly2Line2 Condition="'$(Language)' == 'VB' and '$(CLSCompliant)' == 'true'"><Assembly: System.CLSCompliant(True)> + <_Assembly2Line2 Condition="'$(Language)' == 'VB' and '$(CLSCompliant)' == 'false'"><Assembly: System.CLSCompliant(False)> + <_Assembly2Line3 Condition="'$(Language)' == 'VB' and '$(ComVisible)' == 'true'"><Assembly: System.Runtime.InteropServices.ComVisible(True)> + <_Assembly2Line3 Condition="'$(Language)' == 'VB' and '$(ComVisible)' == 'false'"><Assembly: System.Runtime.InteropServices.ComVisible(False)> + <_Assembly2Line1 Condition="'$(Language)' == 'C#'">// <auto-generated/> + <_Assembly2Line2 Condition="'$(Language)' == 'C#' and '$(CLSCompliant)' == 'true'">[assembly:System.CLSCompliant(true)] + <_Assembly2Line2 Condition="'$(Language)' == 'C#' and '$(CLSCompliant)' == 'false'">[assembly:System.CLSCompliant(false)] + <_Assembly2Line3 Condition="'$(Language)' == 'C#' and '$(ComVisible)' == 'true'">[assembly:System.Runtime.InteropServices.ComVisible(true)] + <_Assembly2Line3 Condition="'$(Language)' == 'C#' and '$(ComVisible)' == 'false'">[assembly:System.Runtime.InteropServices.ComVisible(false)] + + + + + + + + + + + + + \ No newline at end of file diff --git a/Src/.Build/PreparePackageReleaseNotesFromFiles.targets b/Src/.Build/PreparePackageReleaseNotesFromFiles.targets new file mode 100644 index 0000000..928abd2 --- /dev/null +++ b/Src/.Build/PreparePackageReleaseNotesFromFiles.targets @@ -0,0 +1,7 @@ + + + + $([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)/../PackageReleaseNotes.txt")) + + + \ No newline at end of file diff --git a/Src/.editorconfig b/Src/.editorconfig new file mode 100644 index 0000000..db8381b --- /dev/null +++ b/Src/.editorconfig @@ -0,0 +1,1688 @@ +root = true + +#### Core EditorConfig Options #### +# General +[*] +charset = utf-8-bom +indent_style = space +indent_size = 4 +tab_width = 4 +end_of_line = crlf +insert_final_newline = false +trim_trailing_whitespace = true + +# Visual Studio Solution +[*.sln] +indent_style = tab + +# Visual Studio Project +[*.{csproj,vbproj,vcxproj.filters,proj,projitems,shproj}] +indent_size = 2 + +# XML +[*.{xml,config,props,targets,nuspec,resx,ruleset,vsixmanifest,vsct}] +indent_size = 2 + +# JSON +[*.{json,json5,webmanifest}] +indent_size = 2 + +# YAML +[*.{yml,yaml}] +indent_size = 2 + +# Markdown +[*.md] +trim_trailing_whitespace = false + +# Web +[*.{htm,html,js,jsm,ts,tsx,css,sass,scss,less,svg,vue}] +charset = utf-8 +indent_size = 2 + +# Bash +[*.sh] +end_of_line = lf + +#### .NET Coding Conventions #### +[*.{cs,csx,cake,vb,vbx}] +# Organize usings +file_header_template = © 2020 Wilhelm Zapiain Rodríguez.\nLicensed under the MIT license. See the LICENSE file in the project root for full license information. +dotnet_separate_import_directive_groups = false +dotnet_sort_system_directives_first = true + +# this. and Me. preferences +dotnet_style_qualification_for_event = true:suggestion +dotnet_style_qualification_for_field = true:suggestion +dotnet_style_qualification_for_method = true:suggestion +dotnet_style_qualification_for_property = true:suggestion + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:suggestion +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:suggestion +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:suggestion +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:suggestion + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = always:suggestion + +# Expression-level preferences +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_object_initializer = true:suggestion +dotnet_style_operator_placement_when_wrapping = end_of_line +dotnet_style_prefer_auto_properties = true:suggestion +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_return = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion + +# Field preferences +dotnet_style_readonly_field = true:suggestion + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:suggestion + +# Suppression preferences +dotnet_remove_unnecessary_suppression_exclusions = true:suggestion + +#### .NET Naming Styles #### +[*.{cs,csx,cake,vb,vbx}] +# 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.constant_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.constant_should_be_pascal_case.symbols = constant +dotnet_naming_rule.constant_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_field_should_be_camel_case_name.severity = suggestion +dotnet_naming_rule.private_or_internal_field_should_be_camel_case_name.symbols = private_or_internal_field +dotnet_naming_rule.private_or_internal_field_should_be_camel_case_name.style = camel_case_name + +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.symbols = public_or_protected_field +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.style = pascal_case + +# Symbol specifications +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private +dotnet_naming_symbols.private_or_internal_field.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal +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 = public, internal, private, protected, protected_internal +dotnet_naming_symbols.non_field_members.required_modifiers = + +dotnet_naming_symbols.constant.applicable_kinds = field +dotnet_naming_symbols.constant.applicable_accessibilities = public, internal, private, protected, protected_internal +dotnet_naming_symbols.constant.required_modifiers = const + +dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field +dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected, protected_internal +dotnet_naming_symbols.public_or_protected_field.required_modifiers = + +dotnet_naming_symbols.constant_fields.applicable_kinds = field +dotnet_naming_symbols.constant_fields.applicable_accessibilities = public, internal, private, protected, protected_internal +dotnet_naming_symbols.constant_fields.required_modifiers = readonly, static + +# Naming styles +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.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.camel_case_name.required_prefix = +dotnet_naming_style.camel_case_name.required_suffix = +dotnet_naming_style.camel_case_name.word_separator = +dotnet_naming_style.camel_case_name.capitalization = camel_case + +#### C# Coding Conventions #### +[*.{cs,csx,cake}] +# var preferences +csharp_style_var_elsewhere = true:suggestion +csharp_style_var_for_built_in_types = true:suggestion +csharp_style_var_when_type_is_apparent = true:suggestion + +# Expression-bodied members +csharp_style_expression_bodied_accessors = false:suggestion +csharp_style_expression_bodied_constructors = false:suggestion +csharp_style_expression_bodied_indexers = true:suggestion +csharp_style_expression_bodied_lambdas = true:suggestion +csharp_style_expression_bodied_local_functions = false:suggestion +csharp_style_expression_bodied_methods = false:suggestion +csharp_style_expression_bodied_operators = false:suggestion +csharp_style_expression_bodied_properties = true:suggestion + +# Pattern matching preferences +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_prefer_not_pattern = true:suggestion +csharp_style_prefer_pattern_matching = true:suggestion +csharp_style_prefer_switch_expression = true:suggestion + +# Null-checking preferences +csharp_style_conditional_delegate_call = true:suggestion + +# Modifier preferences +csharp_prefer_static_local_function = true:suggestion +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion + +# Code-block preferences +csharp_prefer_braces = true:warning +csharp_prefer_simple_using_statement = true:suggestion + +# Expression-level preferences +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion +csharp_style_prefer_index_operator = true:suggestion +csharp_style_prefer_range_operator = true:suggestion +csharp_style_throw_expression = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion + +# 'using' directive preferences +csharp_using_directive_placement = outside_namespace:suggestion + +#### C# Formatting Rules #### +[*.{cs,csx,cake}] +# New line preferences +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = false +csharp_indent_labels = one_less_than_current +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_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_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# Wrapping preferences +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = false + +#### VB Coding Conventions #### +[*.{vb,vbx}] +# Modifier preferences +visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion + +#### Analyzers #### +[*.{cs,csx,cake,vb,vbx}] +#### FxCop Settings #### +dotnet_code_quality.api_surface = all + +# CA1000: Do not declare static members on generic types +dotnet_diagnostic.CA1000.severity = warning + +# CA1001: Types that own disposable fields should be disposable +dotnet_diagnostic.CA1001.severity = warning + +# CA1002: Do not expose generic lists +dotnet_diagnostic.CA1002.severity = warning + +# CA1003: Use generic event handler instances +dotnet_diagnostic.CA1003.severity = warning + +# CA1005: Avoid excessive parameters on generic types +dotnet_diagnostic.CA1005.severity = warning + +# CA1008: Enums should have zero value +dotnet_diagnostic.CA1008.severity = suggestion + +# CA1010: Generic interface should also be implemented +dotnet_diagnostic.CA1010.severity = warning + +# CA1012: Abstract types should not have constructors +dotnet_diagnostic.CA1012.severity = warning + +# CA1014: Mark assemblies with CLSCompliant +dotnet_diagnostic.CA1014.severity = warning + +# CA1016: Mark assemblies with assembly version +dotnet_diagnostic.CA1016.severity = warning + +# CA1017: Mark assemblies with ComVisible +dotnet_diagnostic.CA1017.severity = warning + +# CA1018: Mark attributes with AttributeUsageAttribute +dotnet_diagnostic.CA1018.severity = warning + +# CA1019: Define accessors for attribute arguments +dotnet_diagnostic.CA1019.severity = warning + +# CA1021: Avoid out parameters +dotnet_diagnostic.CA1021.severity = suggestion + +# CA1024: Use properties where appropriate +dotnet_diagnostic.CA1024.severity = warning + +# CA1027: Mark enums with FlagsAttribute +dotnet_diagnostic.CA1027.severity = warning + +# CA1028: Enum Storage should be Int32 +dotnet_diagnostic.CA1028.severity = warning + +# CA1030: Use events where appropriate +dotnet_diagnostic.CA1030.severity = warning + +# CA1031: Do not catch general exception types +dotnet_diagnostic.CA1031.severity = warning + +# CA1032: Implement standard exception constructors +dotnet_diagnostic.CA1032.severity = warning + +# CA1033: Interface methods should be callable by child types +dotnet_diagnostic.CA1033.severity = warning + +# CA1034: Nested types should not be visible +dotnet_diagnostic.CA1034.severity = warning + +# CA1036: Override methods on comparable types +dotnet_diagnostic.CA1036.severity = warning + +# CA1040: Avoid empty interfaces +dotnet_diagnostic.CA1040.severity = warning + +# CA1041: Provide ObsoleteAttribute message +dotnet_diagnostic.CA1041.severity = warning + +# CA1043: Use Integral Or String Argument For Indexers +dotnet_diagnostic.CA1043.severity = warning + +# CA1044: Properties should not be write only +dotnet_diagnostic.CA1044.severity = warning + +# CA1045: Do not pass types by reference +dotnet_diagnostic.CA1045.severity = warning + +# CA1046: Do not overload equality operator on reference types +dotnet_diagnostic.CA1046.severity = warning + +# CA1050: Declare types in namespaces +dotnet_diagnostic.CA1050.severity = warning + +# CA1051: Do not declare visible instance fields +dotnet_diagnostic.CA1051.severity = warning + +# CA1052: Static holder types should be Static or NotInheritable +dotnet_diagnostic.CA1052.severity = warning + +# CA1054: Uri parameters should not be strings +dotnet_diagnostic.CA1054.severity = warning + +# CA1055: Uri return values should not be strings +dotnet_diagnostic.CA1055.severity = warning + +# CA1056: Uri properties should not be strings +dotnet_diagnostic.CA1056.severity = warning + +# CA1058: Types should not extend certain base types +dotnet_diagnostic.CA1058.severity = warning + +# CA1060: Move pinvokes to native methods class +dotnet_diagnostic.CA1060.severity = warning + +# CA1061: Do not hide base class methods +dotnet_diagnostic.CA1061.severity = warning + +# CA1062: Validate arguments of public methods +dotnet_diagnostic.CA1062.severity = warning +dotnet_code_quality.CA1062.exclude_extension_method_this_parameter = false + +# CA1063: Implement IDisposable Correctly +dotnet_diagnostic.CA1063.severity = warning + +# CA1064: Exceptions should be public +dotnet_diagnostic.CA1064.severity = warning + +# CA1065: Do not raise exceptions in unexpected locations +dotnet_diagnostic.CA1065.severity = warning + +# CA1066: Type {0} should implement IEquatable because it overrides Equals +dotnet_diagnostic.CA1066.severity = warning + +# CA1067: Override Object.Equals(object) when implementing IEquatable +dotnet_diagnostic.CA1067.severity = warning + +# CA1068: CancellationToken parameters must come last +dotnet_diagnostic.CA1068.severity = warning + +# CA1069: Enums values should not be duplicated +dotnet_diagnostic.CA1069.severity = warning + +# CA1070: Do not declare event fields as virtual +dotnet_diagnostic.CA1070.severity = warning + +# CA1200: Avoid using cref tags with a prefix +dotnet_diagnostic.CA1200.severity = warning + +# CA1417: Do not use 'OutAttribute' on string parameters for P/Invokes +dotnet_diagnostic.CA1417.severity = warning + +# CA1303: Do not pass literals as localized parameters +dotnet_diagnostic.CA1303.severity = warning +dotnet_code_quality.CA1303.use_naming_heuristic = false + +# CA1304: Specify CultureInfo +dotnet_diagnostic.CA1304.severity = warning + +# CA1305: Specify IFormatProvider +dotnet_diagnostic.CA1305.severity = warning + +# CA1307: Specify StringComparison +dotnet_diagnostic.CA1307.severity = warning + +# CA1308: Normalize strings to uppercase +dotnet_diagnostic.CA1308.severity = warning + +# CA1309: Use ordinal stringcomparison +dotnet_diagnostic.CA1309.severity = warning + +# CA1401: P/Invokes should not be visible +dotnet_diagnostic.CA1401.severity = warning + +# CA1501: Avoid excessive inheritance +dotnet_diagnostic.CA1501.severity = suggestion + +# CA1502: Avoid excessive complexity +dotnet_diagnostic.CA1502.severity = suggestion + +# CA1505: Avoid unmaintainable code +dotnet_diagnostic.CA1505.severity = suggestion + +# CA1506: Avoid excessive class coupling +dotnet_diagnostic.CA1506.severity = suggestion + +# CA1507: Use nameof to express symbol names +dotnet_diagnostic.CA1507.severity = warning + +# CA1508: Avoid dead conditional code +dotnet_diagnostic.CA1508.severity = warning + +# CA1509: Invalid entry in code metrics rule specification file +dotnet_diagnostic.CA1509.severity = warning + +# CA1700: Do not name enum values 'Reserved' +dotnet_diagnostic.CA1700.severity = warning + +# CA1707: Identifiers should not contain underscores +dotnet_diagnostic.CA1707.severity = warning + +# CA1708: Identifiers should differ by more than case +dotnet_diagnostic.CA1708.severity = warning +dotnet_code_quality.CA1708.api_surface = public + +# CA1710: Identifiers should have correct suffix +dotnet_diagnostic.CA1710.severity = warning +dotnet_code_quality.CA1710.exclude_indirect_base_types = false + +# CA1711: Identifiers should not have incorrect suffix +dotnet_diagnostic.CA1711.severity = warning + +# CA1712: Do not prefix enum values with type name +dotnet_diagnostic.CA1712.severity = warning +dotnet_code_quality.CA1712.enum_values_prefix_trigger = AnyEnumValue + +# CA1713: Events should not have 'Before' or 'After' prefix +dotnet_diagnostic.CA1713.severity = warning + +# CA1714: Flags enums should have plural names +dotnet_diagnostic.CA1714.severity = warning + +# CA1715: Identifiers should have correct prefix +dotnet_diagnostic.CA1715.severity = warning +dotnet_code_quality.CA1715.exclude_single_letter_type_parameters = false + +# CA1716: Identifiers should not match keywords +dotnet_diagnostic.CA1716.severity = warning + +# CA1717: Only FlagsAttribute enums should have plural names +dotnet_diagnostic.CA1717.severity = warning + +# CA1720: Identifier contains type name +dotnet_diagnostic.CA1720.severity = warning + +# CA1721: Property names should not match get methods +dotnet_diagnostic.CA1721.severity = warning + +# CA1724: Type names should not match namespaces +dotnet_diagnostic.CA1724.severity = warning + +# CA1725: Parameter names should match base declaration +dotnet_diagnostic.CA1725.severity = suggestion + +# CA1801: Review unused parameters +dotnet_diagnostic.CA1801.severity = warning + +# CA1802: Use literals where appropriate +dotnet_diagnostic.CA1802.severity = warning +dotnet_code_quality.CA1802.required_modifiers = none + +# CA1805: Do not initialize unnecessarily +dotnet_diagnostic.CA1805.severity = warning + +# CA1806: Do not ignore method results +dotnet_diagnostic.CA1806.severity = warning + +# CA1810: Initialize reference type static fields inline +dotnet_diagnostic.CA1810.severity = warning + +# CA1812: Avoid uninstantiated internal classes +dotnet_diagnostic.CA1812.severity = warning + +# CA1813: Avoid unsealed attributes +dotnet_diagnostic.CA1813.severity = warning + +# CA1814: Prefer jagged arrays over multidimensional +dotnet_diagnostic.CA1814.severity = warning + +# CA1815: Override equals and operator equals on value types +dotnet_diagnostic.CA1815.severity = warning + +# CA1816: Dispose methods should call SuppressFinalize +dotnet_diagnostic.CA1816.severity = warning + +# CA1819: Properties should not return arrays +dotnet_diagnostic.CA1819.severity = warning + +# CA1820: Test for empty strings using string length +dotnet_diagnostic.CA1820.severity = warning + +# CA1821: Remove empty Finalizers +dotnet_diagnostic.CA1821.severity = warning + +# CA1822: Mark members as static +dotnet_diagnostic.CA1822.severity = warning + +# CA1823: Avoid unused private fields +dotnet_diagnostic.CA1823.severity = warning + +# CA1824: Mark assemblies with NeutralResourcesLanguageAttribute +dotnet_diagnostic.CA1824.severity = warning + +# CA1825: Avoid zero-length array allocations. +dotnet_diagnostic.CA1825.severity = warning + +# CA1826: Do not use Enumerable methods on indexable collections. Instead use the collection directly +dotnet_diagnostic.CA1826.severity = warning + +# CA1827: Do not use Count() or LongCount() when Any() can be used +dotnet_diagnostic.CA1827.severity = warning + +# CA1828: Do not use CountAsync() or LongCountAsync() when AnyAsync() can be used +dotnet_diagnostic.CA1828.severity = warning + +# CA1829: Use Length/Count property instead of Count() when available +dotnet_diagnostic.CA1829.severity = warning + +# CA1830: Prefer strongly-typed Append and Insert method overloads on StringBuilder +dotnet_diagnostic.CA1830.severity = warning + +# CA1831: Use AsSpan or AsMemory instead of Range-based indexers when appropriate +dotnet_diagnostic.CA1831.severity = warning + +# CA1832: Use AsSpan or AsMemory instead of Range-based indexers when appropriate +dotnet_diagnostic.CA1832.severity = warning + +# CA1833: Use AsSpan or AsMemory instead of Range-based indexers when appropriate +dotnet_diagnostic.CA1833.severity = warning + +# CA1834: Consider using 'StringBuilder.Append(char)' when applicable +dotnet_diagnostic.CA1834.severity = warning + +# CA1835: Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync' +dotnet_diagnostic.CA1835.severity = warning + +# CA1836: Prefer IsEmpty over Count +dotnet_diagnostic.CA1836.severity = warning + +# CA1837: Use 'Environment.ProcessId' +dotnet_diagnostic.CA1837.severity = warning + +# CA1838: Avoid 'StringBuilder' parameters for P/Invokes +dotnet_diagnostic.CA1838.severity = warning + +# CA2000: Dispose objects before losing scope +dotnet_diagnostic.CA2000.severity = warning +dotnet_code_quality.CA2000.dispose_analysis_kind = AllPaths +dotnet_code_quality.CA2000.dispose_ownership_transfer_at_constructor = false +dotnet_code_quality.CA2000.dispose_ownership_transfer_at_method_call = false + +# CA2002: Do not lock on objects with weak identity +dotnet_diagnostic.CA2002.severity = warning + +# CA2007: Consider calling ConfigureAwait on the awaited task +dotnet_diagnostic.CA2007.severity = warning +dotnet_code_quality.CA2007.exclude_async_void_methods = true +dotnet_code_quality.CA2007.output_kind = DinamicallyLinkedLibrary + +# CA2008: Do not create tasks without passing a TaskScheduler +dotnet_diagnostic.CA2008.severity = warning + +# CA2009: Do not call ToImmutableCollection on an ImmutableCollection value +dotnet_diagnostic.CA2009.severity = warning + +# CA2011: Avoid infinite recursion +dotnet_diagnostic.CA2011.severity = warning + +# CA2012: Use ValueTasks correctly +dotnet_diagnostic.CA2012.severity = warning + +# CA2013: Do not use ReferenceEquals with value types +dotnet_diagnostic.CA2013.severity = warning + +# CA2014: Do not use stackalloc in loops +dotnet_diagnostic.CA2014.severity = warning + +# CA2015: Do not define finalizers for types derived from MemoryManager +dotnet_diagnostic.CA2015.severity = warning + +# CA2016: Forward the 'CancellationToken' parameter to methods that take one +dotnet_diagnostic.CA2016.severity = warning + +# CA2100: Review SQL queries for security vulnerabilities +dotnet_diagnostic.CA2100.severity = warning + +# CA2101: Specify marshaling for P/Invoke string arguments +dotnet_diagnostic.CA2101.severity = warning + +# CA2109: Review visible event handlers +dotnet_diagnostic.CA2109.severity = warning + +# CA2119: Seal methods that satisfy private interfaces +dotnet_diagnostic.CA2119.severity = warning + +# CA2153: Do Not Catch Corrupted State Exceptions +dotnet_diagnostic.CA2153.severity = warning + +# CA2200: Rethrow to preserve stack details. +dotnet_diagnostic.CA2200.severity = warning + +# CA2201: Do not raise reserved exception types +dotnet_diagnostic.CA2201.severity = warning + +# CA2207: Initialize value type static fields inline +dotnet_diagnostic.CA2207.severity = warning + +# CA2208: Instantiate argument exceptions correctly +dotnet_diagnostic.CA2208.severity = warning + +# CA2211: Non-constant fields should not be visible +dotnet_diagnostic.CA2211.severity = warning + +# CA2213: Disposable fields should be disposed +dotnet_diagnostic.CA2213.severity = warning + +# CA2214: Do not call overridable methods in constructors +dotnet_diagnostic.CA2214.severity = warning + +# CA2215: Dispose methods should call base class dispose +dotnet_diagnostic.CA2215.severity = warning + +# CA2216: Disposable types should declare finalizer +dotnet_diagnostic.CA2216.severity = warning + +# CA2217: Do not mark enums with FlagsAttribute +dotnet_diagnostic.CA2217.severity = warning + +# CA2218: Override GetHashCode on overriding Equals +dotnet_diagnostic.CA2218.severity = warning + +# CA2219: Do not raise exceptions in finally clauses +dotnet_diagnostic.CA2219.severity = warning + +# CA2224: Override Equals on overloading operator equals +dotnet_diagnostic.CA2224.severity = warning + +# CA2225: Operator overloads have named alternates +dotnet_diagnostic.CA2225.severity = warning + +# CA2226: Operators should have symmetrical overloads +dotnet_diagnostic.CA2226.severity = warning + +# CA2227: Collection properties should be read only +dotnet_diagnostic.CA2227.severity = warning + +# CA2229: Implement serialization constructors +dotnet_diagnostic.CA2229.severity = warning + +# CA2231: Overload operator equals on overriding value type Equals +dotnet_diagnostic.CA2231.severity = warning + +# CA2234: Pass system uri objects instead of strings +dotnet_diagnostic.CA2234.severity = warning + +# CA2235: Mark all non-serializable fields +dotnet_diagnostic.CA2235.severity = warning + +# CA2237: Mark ISerializable types with serializable +dotnet_diagnostic.CA2237.severity = warning + +# CA2241: Provide correct arguments to formatting methods +dotnet_diagnostic.CA2241.severity = warning + +# CA2242: Test for NaN correctly +dotnet_diagnostic.CA2242.severity = warning + +# CA2243: Attribute string literals should parse correctly +dotnet_diagnostic.CA2243.severity = warning + +# CA2244: Do not duplicate indexed element initializations +dotnet_diagnostic.CA2244.severity = warning + +# CA2245: Do not assign a property to itself. +dotnet_diagnostic.CA2245.severity = warning + +# CA2246: Assigning symbol and its member in the same statement. +dotnet_diagnostic.CA2246.severity = warning + +# CA2247: Argument passed to TaskCompletionSource constructor should be TaskCreationOptions enum instead of TaskContinuationOptions enum +dotnet_diagnostic.CA2247.severity = warning + +# CA2248: Provide correct 'enum' argument to 'Enum.HasFlag' +dotnet_diagnostic.CA2248.severity = warning + +# CA2249: Consider using 'string.Contains' instead of 'string.IndexOf' +dotnet_diagnostic.CA2249.severity = warning + +# CA2300: Do not use insecure deserializer BinaryFormatter +dotnet_diagnostic.CA2300.severity = warning + +# CA2301: Do not call BinaryFormatter.Deserialize without first setting BinaryFormatter.Binder +dotnet_diagnostic.CA2301.severity = warning + +# CA2302: Ensure BinaryFormatter.Binder is set before calling BinaryFormatter.Deserialize +dotnet_diagnostic.CA2302.severity = warning + +# CA2305: Do not use insecure deserializer LosFormatter +dotnet_diagnostic.CA2305.severity = warning + +# CA2310: Do not use insecure deserializer NetDataContractSerializer +dotnet_diagnostic.CA2310.severity = warning + +# CA2311: Do not deserialize without first setting NetDataContractSerializer.Binder +dotnet_diagnostic.CA2311.severity = warning + +# CA2312: Ensure NetDataContractSerializer.Binder is set before deserializing +dotnet_diagnostic.CA2312.severity = warning + +# CA2315: Do not use insecure deserializer ObjectStateFormatter +dotnet_diagnostic.CA2315.severity = warning + +# CA2321: Do not deserialize with JavaScriptSerializer using a SimpleTypeResolver +dotnet_diagnostic.CA2321.severity = warning + +# CA2322: Ensure JavaScriptSerializer is not initialized with SimpleTypeResolver before deserializing +dotnet_diagnostic.CA2322.severity = warning + +# CA2326: Do not use TypeNameHandling values other than None +dotnet_diagnostic.CA2326.severity = warning + +# CA2327: Do not use insecure JsonSerializerSettings +dotnet_diagnostic.CA2327.severity = warning + +# CA2328: Ensure that JsonSerializerSettings are secure +dotnet_diagnostic.CA2328.severity = warning + +# CA2329: Do not deserialize with JsonSerializer using an insecure configuration +dotnet_diagnostic.CA2329.severity = warning + +# CA2330: Ensure that JsonSerializer has a secure configuration when deserializing +dotnet_diagnostic.CA2330.severity = warning + +# CA2350: Do not use DataTable.ReadXml() with untrusted data +dotnet_diagnostic.CA2350.severity = warning + +# CA2351: Do not use DataSet.ReadXml() with untrusted data +dotnet_diagnostic.CA2351.severity = warning + +# CA2352: Unsafe DataSet or DataTable in serializable type can be vulnerable to remote code execution attacks +dotnet_diagnostic.CA2352.severity = warning + +# CA2353: Unsafe DataSet or DataTable in serializable type +dotnet_diagnostic.CA2353.severity = warning + +# CA2354: Unsafe DataSet or DataTable in deserialized object graph can be vulnerable to remote code execution attacks +dotnet_diagnostic.CA2354.severity = warning + +# CA2355: Unsafe DataSet or DataTable type found in deserializable object graph +dotnet_diagnostic.CA2355.severity = warning + +# CA2356: Unsafe DataSet or DataTable type in web deserializable object graph +dotnet_diagnostic.CA2356.severity = warning + +# CA2361: Ensure autogenerated class containing DataSet.ReadXml() is not used with untrusted data +dotnet_diagnostic.CA2361.severity = warning + +# CA2362: Unsafe DataSet or DataTable in autogenerated serializable type can be vulnerable to remote code execution attacks +dotnet_diagnostic.CA2362.severity = warning + +# CA3001: Review code for SQL injection vulnerabilities +dotnet_diagnostic.CA3001.severity = warning + +# CA3002: Review code for XSS vulnerabilities +dotnet_diagnostic.CA3002.severity = warning + +# CA3003: Review code for file path injection vulnerabilities +dotnet_diagnostic.CA3003.severity = warning + +# CA3004: Review code for information disclosure vulnerabilities +dotnet_diagnostic.CA3004.severity = warning + +# CA3005: Review code for LDAP injection vulnerabilities +dotnet_diagnostic.CA3005.severity = warning + +# CA3006: Review code for process command injection vulnerabilities +dotnet_diagnostic.CA3006.severity = warning + +# CA3007: Review code for open redirect vulnerabilities +dotnet_diagnostic.CA3007.severity = warning + +# CA3008: Review code for XPath injection vulnerabilities +dotnet_diagnostic.CA3008.severity = warning + +# CA3009: Review code for XML injection vulnerabilities +dotnet_diagnostic.CA3009.severity = warning + +# CA3010: Review code for XAML injection vulnerabilities +dotnet_diagnostic.CA3010.severity = warning + +# CA3011: Review code for DLL injection vulnerabilities +dotnet_diagnostic.CA3011.severity = warning + +# CA3012: Review code for regex injection vulnerabilities +dotnet_diagnostic.CA3012.severity = warning + +# CA3061: Do Not Add Schema By URL +dotnet_diagnostic.CA3061.severity = warning + +# CA3075: Insecure DTD processing in XML +dotnet_diagnostic.CA3075.severity = warning + +# CA3076: Insecure XSLT script processing. +dotnet_diagnostic.CA3076.severity = warning + +# CA3077: Insecure Processing in API Design, XmlDocument and XmlTextReader +dotnet_diagnostic.CA3077.severity = warning + +# CA3147: Mark Verb Handlers With Validate Antiforgery Token +dotnet_diagnostic.CA3147.severity = warning + +# CA5350: Do Not Use Weak Cryptographic Algorithms +dotnet_diagnostic.CA5350.severity = warning + +# CA5351: Do Not Use Broken Cryptographic Algorithms +dotnet_diagnostic.CA5351.severity = warning + +# CA5358: Review cipher mode usage with cryptography experts +dotnet_diagnostic.CA5358.severity = warning + +# CA5359: Do Not Disable Certificate Validation +dotnet_diagnostic.CA5359.severity = warning + +# CA5360: Do Not Call Dangerous Methods In Deserialization +dotnet_diagnostic.CA5360.severity = warning + +# CA5361: Do Not Disable SChannel Use of Strong Crypto +dotnet_diagnostic.CA5361.severity = warning + +# CA5362: Do Not Refer Self In Serializable Class +dotnet_diagnostic.CA5362.severity = warning + +# CA5363: Do Not Disable Request Validation +dotnet_diagnostic.CA5363.severity = warning + +# CA5364: Do Not Use Deprecated Security Protocols +dotnet_diagnostic.CA5364.severity = warning + +# CA5365: Do Not Disable HTTP Header Checking +dotnet_diagnostic.CA5365.severity = warning + +# CA5366: Use XmlReader For DataSet Read Xml +dotnet_diagnostic.CA5366.severity = warning + +# CA5367: Do Not Serialize Types With Pointer Fields +dotnet_diagnostic.CA5367.severity = warning + +# CA5368: Set ViewStateUserKey For Classes Derived From Page +dotnet_diagnostic.CA5368.severity = warning + +# CA5369: Use XmlReader For Deserialize +dotnet_diagnostic.CA5369.severity = warning + +# CA5370: Use XmlReader For Validating Reader +dotnet_diagnostic.CA5370.severity = warning + +# CA5371: Use XmlReader For Schema Read +dotnet_diagnostic.CA5371.severity = warning + +# CA5372: Use XmlReader For XPathDocument +dotnet_diagnostic.CA5372.severity = warning + +# CA5373: Do not use obsolete key derivation function +dotnet_diagnostic.CA5373.severity = warning + +# CA5374: Do Not Use XslTransform +dotnet_diagnostic.CA5374.severity = warning + +# CA5375: Do Not Use Account Shared Access Signature +dotnet_diagnostic.CA5375.severity = warning + +# CA5376: Use SharedAccessProtocol HttpsOnly +dotnet_diagnostic.CA5376.severity = warning + +# CA5377: Use Container Level Access Policy +dotnet_diagnostic.CA5377.severity = warning + +# CA5378: Do not disable ServicePointManagerSecurityProtocols +dotnet_diagnostic.CA5378.severity = warning + +# CA5379: Do Not Use Weak Key Derivation Function Algorithm +dotnet_diagnostic.CA5379.severity = warning + +# CA5380: Do Not Add Certificates To Root Store +dotnet_diagnostic.CA5380.severity = warning + +# CA5381: Ensure Certificates Are Not Added To Root Store +dotnet_diagnostic.CA5381.severity = warning + +# CA5382: Use Secure Cookies In ASP.Net Core +dotnet_diagnostic.CA5382.severity = warning + +# CA5383: Ensure Use Secure Cookies In ASP.Net Core +dotnet_diagnostic.CA5383.severity = warning + +# CA5384: Do Not Use Digital Signature Algorithm (DSA) +dotnet_diagnostic.CA5384.severity = warning + +# CA5385: Use Rivest�Shamir�Adleman (RSA) Algorithm With Sufficient Key Size +dotnet_diagnostic.CA5385.severity = warning + +# CA5386: Avoid hardcoding SecurityProtocolType value +dotnet_diagnostic.CA5386.severity = warning + +# CA5387: Do Not Use Weak Key Derivation Function With Insufficient Iteration Count +dotnet_diagnostic.CA5387.severity = warning + +# CA5388: Ensure Sufficient Iteration Count When Using Weak Key Derivation Function +dotnet_diagnostic.CA5388.severity = warning + +# CA5389: Do Not Add Archive Item's Path To The Target File System Path +dotnet_diagnostic.CA5389.severity = warning + +# CA5390: Do not hard-code encryption key +dotnet_diagnostic.CA5390.severity = warning + +# CA5391: Use antiforgery tokens in ASP.NET Core MVC controllers +dotnet_diagnostic.CA5391.severity = warning +dotnet_code_quality.CA5391.exclude_aspnet_core_mvc_controllerbase = true + +# CA5392: Use DefaultDllImportSearchPaths attribute for P/Invokes +dotnet_diagnostic.CA5392.severity = warning + +# CA5393: Do not use unsafe DllImportSearchPath value +dotnet_diagnostic.CA5393.severity = warning +dotnet_code_quality.CA5393.unsafe_DllImportSearchPath_bits = 770 + +# CA5394: Do not use insecure randomness +dotnet_diagnostic.CA5394.severity = warning + +# CA5395: Miss HttpVerb attribute for action methods +dotnet_diagnostic.CA5395.severity = warning + +# CA5396: Set HttpOnly to true for HttpCookie +dotnet_diagnostic.CA5396.severity = warning + +# CA5397: Do not use deprecated SslProtocols values +dotnet_diagnostic.CA5397.severity = warning + +# CA5398: Avoid hardcoded SslProtocols values +dotnet_diagnostic.CA5398.severity = warning + +# CA5399: HttpClients should enable certificate revocation list checks +dotnet_diagnostic.CA5399.severity = warning + +# CA5400: Ensure HttpClient certificate revocation list check is not disabled +dotnet_diagnostic.CA5400.severity = warning + +# CA5401: Do not use CreateEncryptor with non-default IV +dotnet_diagnostic.CA5401.severity = warning + +# CA5402: Use CreateEncryptor with the default IV +dotnet_diagnostic.CA5402.severity = warning + +# CA5403: Do not hard-code certificate +dotnet_diagnostic.CA5403.severity = warning + +# CA9999: Analyzer version mismatch +dotnet_diagnostic.CA9999.severity = warning + +# IL3000: Avoid using accessing Assembly file path when publishing as a single-file +dotnet_diagnostic.IL3000.severity = warning + +# IL3001: Avoid using accessing Assembly file path when publishing as a single-file +dotnet_diagnostic.IL3001.severity = warning + +#### StyleCop Settings #### +# SA0001: XML comment analysis disabled +dotnet_diagnostic.SA0001.severity = warning + +# SA0002: Invalid settings file +dotnet_diagnostic.SA0002.severity = warning + +# SA1000: Keywords should be spaced correctly +dotnet_diagnostic.SA1000.severity = suggestion + +# SA1001: Commas should be spaced correctly +dotnet_diagnostic.SA1001.severity = suggestion + +# SA1002: Semicolons should be spaced correctly +dotnet_diagnostic.SA1002.severity = suggestion + +# SA1003: Symbols should be spaced correctly +dotnet_diagnostic.SA1003.severity = suggestion + +# SA1004: Documentation lines should begin with single space +dotnet_diagnostic.SA1004.severity = suggestion + +# SA1005: Single line comments should begin with single space +dotnet_diagnostic.SA1005.severity = suggestion + +# SA1006: Preprocessor keywords should not be preceded by space +dotnet_diagnostic.SA1006.severity = suggestion + +# SA1007: Operator keyword should be followed by space +dotnet_diagnostic.SA1007.severity = suggestion + +# SA1008: Opening parenthesis should be spaced correctly +dotnet_diagnostic.SA1008.severity = suggestion + +# SA1009: Closing parenthesis should be spaced correctly +dotnet_diagnostic.SA1009.severity = suggestion + +# SA1010: Opening square brackets should be spaced correctly +dotnet_diagnostic.SA1010.severity = suggestion + +# SA1011: Closing square brackets should be spaced correctly +dotnet_diagnostic.SA1011.severity = suggestion + +# SA1012: Opening braces should be spaced correctly +dotnet_diagnostic.SA1012.severity = suggestion + +# SA1013: Closing braces should be spaced correctly +dotnet_diagnostic.SA1013.severity = suggestion + +# SA1014: Opening generic brackets should be spaced correctly +dotnet_diagnostic.SA1014.severity = suggestion + +# SA1015: Closing generic brackets should be spaced correctly +dotnet_diagnostic.SA1015.severity = suggestion + +# SA1016: Opening attribute brackets should be spaced correctly +dotnet_diagnostic.SA1016.severity = suggestion + +# SA1017: Closing attribute brackets should be spaced correctly +dotnet_diagnostic.SA1017.severity = suggestion + +# SA1018: Nullable type symbols should be spaced correctly +dotnet_diagnostic.SA1018.severity = suggestion + +# SA1019: Member access symbols should be spaced correctly +dotnet_diagnostic.SA1019.severity = suggestion + +# SA1020: Increment decrement symbols should be spaced correctly +dotnet_diagnostic.SA1020.severity = suggestion + +# SA1021: Negative signs should be spaced correctly +dotnet_diagnostic.SA1021.severity = suggestion + +# SA1022: Positive signs should be spaced correctly +dotnet_diagnostic.SA1022.severity = suggestion + +# SA1023: Dereference and access of symbols should be spaced correctly +dotnet_diagnostic.SA1023.severity = suggestion + +# SA1024: Colons Should Be Spaced Correctly +dotnet_diagnostic.SA1024.severity = suggestion + +# SA1025: Code should not contain multiple whitespace in a row +dotnet_diagnostic.SA1025.severity = suggestion + +# SA1026: Code should not contain space after new or stackalloc keyword in implicitly typed array allocation +dotnet_diagnostic.SA1026.severity = suggestion + +# SA1027: Use tabs correctly +dotnet_diagnostic.SA1027.severity = suggestion + +# SA1028: Code should not contain trailing whitespace +dotnet_diagnostic.SA1028.severity = suggestion + +# SA1100: Do not prefix calls with base unless local implementation exists +dotnet_diagnostic.SA1100.severity = suggestion + +# SA1101: Prefix local calls with this +dotnet_diagnostic.SA1101.severity = suggestion + +# SA1102: Query clause should follow previous clause +dotnet_diagnostic.SA1102.severity = suggestion + +# SA1103: Query clauses should be on separate lines or all on one line +dotnet_diagnostic.SA1103.severity = suggestion + +# SA1104: Query clause should begin on new line when previous clause spans multiple lines +dotnet_diagnostic.SA1104.severity = suggestion + +# SA1105: Query clauses spanning multiple lines should begin on own line +dotnet_diagnostic.SA1105.severity = suggestion + +# SA1106: Code should not contain empty statements +dotnet_diagnostic.SA1106.severity = suggestion + +# SA1107: Code should not contain multiple statements on one line +dotnet_diagnostic.SA1107.severity = suggestion + +# SA1108: Block statements should not contain embedded comments +dotnet_diagnostic.SA1108.severity = suggestion + +# SA1110: Opening parenthesis or bracket should be on declaration line +dotnet_diagnostic.SA1110.severity = suggestion + +# SA1111: Closing parenthesis should be on line of last parameter +dotnet_diagnostic.SA1111.severity = suggestion + +# SA1112: Closing parenthesis should be on line of opening parenthesis +dotnet_diagnostic.SA1112.severity = suggestion + +# SA1113: Comma should be on the same line as previous parameter +dotnet_diagnostic.SA1113.severity = suggestion + +# SA1114: Parameter list should follow declaration +dotnet_diagnostic.SA1114.severity = suggestion + +# SA1115: Parameter should follow comma +dotnet_diagnostic.SA1115.severity = suggestion + +# SA1116: Split parameters should start on line after declaration +dotnet_diagnostic.SA1116.severity = suggestion + +# SA1117: Parameters should be on same line or separate lines +dotnet_diagnostic.SA1117.severity = suggestion + +# SA1118: Parameter should not span multiple lines +dotnet_diagnostic.SA1118.severity = suggestion + +# SA1119: Statement should not use unnecessary parenthesis +dotnet_diagnostic.SA1119.severity = suggestion + +# SA1120: Comments should contain text +dotnet_diagnostic.SA1120.severity = suggestion + +# SA1121: Use built-in type alias +dotnet_diagnostic.SA1121.severity = suggestion + +# SA1122: Use string.Empty for empty strings +dotnet_diagnostic.SA1122.severity = suggestion + +# SA1123: Do not place regions within elements +dotnet_diagnostic.SA1123.severity = suggestion + +# SA1124: Do not use regions +dotnet_diagnostic.SA1124.severity = suggestion + +# SA1125: Use shorthand for nullable types +dotnet_diagnostic.SA1125.severity = suggestion + +# SA1127: Generic type constraints should be on their own line +dotnet_diagnostic.SA1127.severity = suggestion + +# SA1128: Put constructor initializers on their own line +dotnet_diagnostic.SA1128.severity = suggestion + +# SA1129: Do not use default value type constructor +dotnet_diagnostic.SA1129.severity = suggestion + +# SA1130: Use lambda syntax +dotnet_diagnostic.SA1130.severity = suggestion + +# SA1131: Use readable conditions +dotnet_diagnostic.SA1131.severity = suggestion + +# SA1132: Do not combine fields +dotnet_diagnostic.SA1132.severity = suggestion + +# SA1133: Do not combine attributes +dotnet_diagnostic.SA1133.severity = suggestion + +# SA1134: Attributes should not share line +dotnet_diagnostic.SA1134.severity = suggestion + +# SA1135: Using directives should be qualified +dotnet_diagnostic.SA1135.severity = suggestion + +# SA1136: Enum values should be on separate lines +dotnet_diagnostic.SA1136.severity = suggestion + +# SA1137: Elements should have the same indentation +dotnet_diagnostic.SA1137.severity = suggestion + +# SA1139: Use literal suffix notation instead of casting +dotnet_diagnostic.SA1139.severity = suggestion + +# SA1141: Use tuple syntax +dotnet_diagnostic.SA1141.severity = suggestion + +# SA1142: Refer to tuple elements by name +dotnet_diagnostic.SA1142.severity = suggestion + +# SA1200: Using directives should be placed correctly +dotnet_diagnostic.SA1200.severity = suggestion + +# SA1201: Elements should appear in the correct order +dotnet_diagnostic.SA1201.severity = suggestion + +# SA1202: Elements should be ordered by access +dotnet_diagnostic.SA1202.severity = suggestion + +# SA1203: Constants should appear before fields +dotnet_diagnostic.SA1203.severity = suggestion + +# SA1204: Static elements should appear before instance elements +dotnet_diagnostic.SA1204.severity = suggestion + +# SA1205: Partial elements should declare access +dotnet_diagnostic.SA1205.severity = suggestion + +# SA1206: Declaration keywords should follow order +dotnet_diagnostic.SA1206.severity = suggestion + +# SA1207: Protected should come before internal +dotnet_diagnostic.SA1207.severity = suggestion + +# SA1208: System using directives should be placed before other using directives +dotnet_diagnostic.SA1208.severity = suggestion + +# SA1209: Using alias directives should be placed after other using directives +dotnet_diagnostic.SA1209.severity = suggestion + +# SA1210: Using directives should be ordered alphabetically by namespace +dotnet_diagnostic.SA1210.severity = suggestion + +# SA1211: Using alias directives should be ordered alphabetically by alias name +dotnet_diagnostic.SA1211.severity = suggestion + +# SA1212: Property accessors should follow order +dotnet_diagnostic.SA1212.severity = suggestion + +# SA1213: Event accessors should follow order +dotnet_diagnostic.SA1213.severity = suggestion + +# SA1214: Readonly fields should appear before non-readonly fields +dotnet_diagnostic.SA1214.severity = suggestion + +# SA1216: Using static directives should be placed at the correct location. +dotnet_diagnostic.SA1216.severity = suggestion + +# SA1217: Using static directives should be ordered alphabetically +dotnet_diagnostic.SA1217.severity = suggestion + +# SA1300: Element should begin with upper-case letter +dotnet_diagnostic.SA1300.severity = suggestion + +# SA1302: Interface names should begin with I +dotnet_diagnostic.SA1302.severity = suggestion + +# SA1303: Const field names should begin with upper-case letter +dotnet_diagnostic.SA1303.severity = suggestion + +# SA1304: Non-private readonly fields should begin with upper-case letter +dotnet_diagnostic.SA1304.severity = suggestion + +# SA1305: Field names should not use Hungarian notation +dotnet_diagnostic.SA1305.severity = none + +# SA1306: Field names should begin with lower-case letter +dotnet_diagnostic.SA1306.severity = suggestion + +# SA1307: Accessible fields should begin with upper-case letter +dotnet_diagnostic.SA1307.severity = suggestion + +# SA1308: Variable names should not be prefixed +dotnet_diagnostic.SA1308.severity = suggestion + +# SA1309: Field names should not begin with underscore +dotnet_diagnostic.SA1309.severity = suggestion + +# SA1310: Field names should not contain underscore +dotnet_diagnostic.SA1310.severity = suggestion + +# SA1311: Static readonly fields should begin with upper-case letter +dotnet_diagnostic.SA1311.severity = suggestion + +# SA1312: Variable names should begin with lower-case letter +dotnet_diagnostic.SA1312.severity = suggestion + +# SA1313: Parameter names should begin with lower-case letter +dotnet_diagnostic.SA1313.severity = suggestion + +# SA1314: Type parameter names should begin with T +dotnet_diagnostic.SA1314.severity = suggestion + +# SA1316: Tuple element name should use correct casing +dotnet_diagnostic.SA1316.severity = suggestion + +# SA1400: Access modifier should be declared +dotnet_diagnostic.SA1400.severity = suggestion + +# SA1401: Fields should be private +dotnet_diagnostic.SA1401.severity = suggestion + +# SA1402: File may only contain a single type +dotnet_diagnostic.SA1402.severity = suggestion + +# SA1403: File may only contain a single namespace +dotnet_diagnostic.SA1403.severity = suggestion + +# SA1404: Code analysis suppression should have justification +dotnet_diagnostic.SA1404.severity = suggestion + +# SA1405: Debug.Assert should provide message text +dotnet_diagnostic.SA1405.severity = suggestion + +# SA1406: Debug.Fail should provide message text +dotnet_diagnostic.SA1406.severity = suggestion + +# SA1407: Arithmetic expressions should declare precedence +dotnet_diagnostic.SA1407.severity = suggestion + +# SA1408: Conditional expressions should declare precedence +dotnet_diagnostic.SA1408.severity = suggestion + +# SA1410: Remove delegate parenthesis when possible +dotnet_diagnostic.SA1410.severity = suggestion + +# SA1411: Attribute constructor should not use unnecessary parenthesis +dotnet_diagnostic.SA1411.severity = suggestion + +# SA1412: Store files as UTF-8 with byte order mark +dotnet_diagnostic.SA1412.severity = suggestion + +# SA1413: Use trailing comma in multi-line initializers +dotnet_diagnostic.SA1413.severity = suggestion + +# SA1414: Tuple types in signature should have element names +dotnet_diagnostic.SA1414.severity = suggestion + +# SA1500: Braces for multi-line statements should not share line +dotnet_diagnostic.SA1500.severity = suggestion + +# SA1501: Statement should not be on a single line +dotnet_diagnostic.SA1501.severity = suggestion + +# SA1502: Element should not be on a single line +dotnet_diagnostic.SA1502.severity = suggestion + +# SA1503: Braces should not be omitted +dotnet_diagnostic.SA1503.severity = suggestion + +# SA1504: All accessors should be single-line or multi-line +dotnet_diagnostic.SA1504.severity = suggestion + +# SA1505: Opening braces should not be followed by blank line +dotnet_diagnostic.SA1505.severity = suggestion + +# SA1506: Element documentation headers should not be followed by blank line +dotnet_diagnostic.SA1506.severity = suggestion + +# SA1507: Code should not contain multiple blank lines in a row +dotnet_diagnostic.SA1507.severity = suggestion + +# SA1508: Closing braces should not be preceded by blank line +dotnet_diagnostic.SA1508.severity = suggestion + +# SA1509: Opening braces should not be preceded by blank line +dotnet_diagnostic.SA1509.severity = suggestion + +# SA1510: Chained statement blocks should not be preceded by blank line +dotnet_diagnostic.SA1510.severity = suggestion + +# SA1511: While-do footer should not be preceded by blank line +dotnet_diagnostic.SA1511.severity = suggestion + +# SA1512: Single-line comments should not be followed by blank line +dotnet_diagnostic.SA1512.severity = suggestion + +# SA1513: Closing brace should be followed by blank line +dotnet_diagnostic.SA1513.severity = suggestion + +# SA1514: Element documentation header should be preceded by blank line +dotnet_diagnostic.SA1514.severity = suggestion + +# SA1515: Single-line comment should be preceded by blank line +dotnet_diagnostic.SA1515.severity = suggestion + +# SA1516: Elements should be separated by blank line +dotnet_diagnostic.SA1516.severity = none + +# SA1517: Code should not contain blank lines at start of file +dotnet_diagnostic.SA1517.severity = suggestion + +# SA1518: Use line endings correctly at end of file +dotnet_diagnostic.SA1518.severity = suggestion + +# SA1519: Braces should not be omitted from multi-line child statement +dotnet_diagnostic.SA1519.severity = suggestion + +# SA1520: Use braces consistently +dotnet_diagnostic.SA1520.severity = suggestion + +# SA1600: Elements should be documented +dotnet_diagnostic.SA1600.severity = suggestion + +# SA1601: Partial elements should be documented +dotnet_diagnostic.SA1601.severity = suggestion + +# SA1602: Enumeration items should be documented +dotnet_diagnostic.SA1602.severity = suggestion + +# SA1604: Element documentation should have summary +dotnet_diagnostic.SA1604.severity = suggestion + +# SA1605: Partial element documentation should have summary +dotnet_diagnostic.SA1605.severity = suggestion + +# SA1606: Element documentation should have summary text +dotnet_diagnostic.SA1606.severity = suggestion + +# SA1607: Partial element documentation should have summary text +dotnet_diagnostic.SA1607.severity = suggestion + +# SA1608: Element documentation should not have default summary +dotnet_diagnostic.SA1608.severity = suggestion + +# SA1609: Property documentation should have value +dotnet_diagnostic.SA1609.severity = suggestion + +# SA1610: Property documentation should have value text +dotnet_diagnostic.SA1610.severity = suggestion + +# SA1611: Element parameters should be documented +dotnet_diagnostic.SA1611.severity = suggestion + +# SA1612: Element parameter documentation should match element parameters +dotnet_diagnostic.SA1612.severity = suggestion + +# SA1613: Element parameter documentation should declare parameter name +dotnet_diagnostic.SA1613.severity = suggestion + +# SA1614: Element parameter documentation should have text +dotnet_diagnostic.SA1614.severity = suggestion + +# SA1615: Element return value should be documented +dotnet_diagnostic.SA1615.severity = suggestion + +# SA1616: Element return value documentation should have text +dotnet_diagnostic.SA1616.severity = suggestion + +# SA1617: Void return value should not be documented +dotnet_diagnostic.SA1617.severity = suggestion + +# SA1618: Generic type parameters should be documented +dotnet_diagnostic.SA1618.severity = suggestion + +# SA1619: Generic type parameters should be documented partial class +dotnet_diagnostic.SA1619.severity = suggestion + +# SA1620: Generic type parameter documentation should match type parameters +dotnet_diagnostic.SA1620.severity = suggestion + +# SA1621: Generic type parameter documentation should declare parameter name +dotnet_diagnostic.SA1621.severity = suggestion + +# SA1622: Generic type parameter documentation should have text +dotnet_diagnostic.SA1622.severity = suggestion + +# SA1623: Property summary documentation should match accessors +dotnet_diagnostic.SA1623.severity = suggestion + +# SA1624: Property summary documentation should omit accessor with restricted access +dotnet_diagnostic.SA1624.severity = suggestion + +# SA1625: Element documentation should not be copied and pasted +dotnet_diagnostic.SA1625.severity = suggestion + +# SA1626: Single-line comments should not use documentation style slashes +dotnet_diagnostic.SA1626.severity = suggestion + +# SA1627: Documentation text should not be empty +dotnet_diagnostic.SA1627.severity = suggestion + +# SA1629: Documentation text should end with a period +dotnet_diagnostic.SA1629.severity = suggestion + +# SA1633: File should have header +dotnet_diagnostic.SA1633.severity = suggestion + +# SA1634: File header should show copyright +dotnet_diagnostic.SA1634.severity = suggestion + +# SA1635: File header should have copyright text +dotnet_diagnostic.SA1635.severity = suggestion + +# SA1636: File header copyright text should match +dotnet_diagnostic.SA1636.severity = suggestion + +# SA1637: File header should contain file name +dotnet_diagnostic.SA1637.severity = suggestion + +# SA1638: File header file name documentation should match file name +dotnet_diagnostic.SA1638.severity = suggestion + +# SA1639: File header should have summary +dotnet_diagnostic.SA1639.severity = none + +# SA1640: File header should have valid company text +dotnet_diagnostic.SA1640.severity = suggestion + +# SA1641: File header company name text should match +dotnet_diagnostic.SA1641.severity = suggestion + +# SA1642: Constructor summary documentation should begin with standard text +dotnet_diagnostic.SA1642.severity = suggestion + +# SA1643: Destructor summary documentation should begin with standard text +dotnet_diagnostic.SA1643.severity = suggestion + +# SA1648: inheritdoc should be used with inheriting class +dotnet_diagnostic.SA1648.severity = suggestion + +# SA1649: File name should match first type name +dotnet_diagnostic.SA1649.severity = suggestion + +# SA1651: Do not use placeholder elements +dotnet_diagnostic.SA1651.severity = suggestion + +# SX1101: Do not prefix local calls with 'this.' +dotnet_diagnostic.SX1101.severity = none + +# SX1309: Field names should begin with underscore +dotnet_diagnostic.SX1309.severity = none + +# SX1309S: Static field names should begin with underscore +dotnet_diagnostic.SX1309S.severity = none + +#### PublicApi Settings #### +# RS0016: Add public types and members to the declared API +dotnet_diagnostic.RS0016.severity = warning + +# RS0017: Remove deleted types and members from the declared API +dotnet_diagnostic.RS0017.severity = warning + +# RS0022: Constructor make noninheritable base class inheritable +dotnet_diagnostic.RS0022.severity = warning + +# RS0024: The contents of the public API files are invalid +dotnet_diagnostic.RS0024.severity = warning + +# RS0025: Do not duplicate symbols in public API files +dotnet_diagnostic.RS0025.severity = warning + +# RS0026: Do not add multiple public overloads with optional parameters +dotnet_diagnostic.RS0026.severity = warning + +# RS0027: Public API with optional parameter(s) should have the most parameters amongst its public overloads. +dotnet_diagnostic.RS0027.severity = warning + +# RS0036: Annotate nullability of public types and members in the declared API +dotnet_diagnostic.RS0036.severity = warning + +# RS0037: Enable tracking of nullability of reference types in the declared API +dotnet_diagnostic.RS0037.severity = warning + +# RS0041: Public members should not use oblivious types +dotnet_diagnostic.RS0041.severity = warning + +# RS0048: Missing shipped or unshipped public API file +dotnet_diagnostic.RS0048.severity = warning + +#### IDisposable Settings #### +# IDISP001: Dispose created. +dotnet_diagnostic.IDISP001.severity = warning + +# IDISP002: Dispose member. +dotnet_diagnostic.IDISP002.severity = warning + +# IDISP003: Dispose previous before re-assigning. +dotnet_diagnostic.IDISP003.severity = warning + +# IDISP004: Don't ignore created IDisposable. +dotnet_diagnostic.IDISP004.severity = warning + +# IDISP005: Return type should indicate that the value should be disposed. +dotnet_diagnostic.IDISP005.severity = warning + +# IDISP006: Implement IDisposable. +dotnet_diagnostic.IDISP006.severity = warning + +# IDISP007: Don't dispose injected. +dotnet_diagnostic.IDISP007.severity = warning + +# IDISP008: Don't assign member with injected and created disposables. +dotnet_diagnostic.IDISP008.severity = warning + +# IDISP009: Add IDisposable interface. +dotnet_diagnostic.IDISP009.severity = warning + +# IDISP010: Call base.Dispose(disposing) +dotnet_diagnostic.IDISP010.severity = warning + +# IDISP011: Don't return disposed instance. +dotnet_diagnostic.IDISP011.severity = warning + +# IDISP012: Property should not return created disposable. +dotnet_diagnostic.IDISP012.severity = warning + +# IDISP013: Await in using. +dotnet_diagnostic.IDISP013.severity = warning + +# IDISP014: Use a single instance of HttpClient. +dotnet_diagnostic.IDISP014.severity = warning + +# IDISP015: Member should not return created and cached instance. +dotnet_diagnostic.IDISP015.severity = warning + +# IDISP016: Don't use disposed instance. +dotnet_diagnostic.IDISP016.severity = warning + +# IDISP017: Prefer using. +dotnet_diagnostic.IDISP017.severity = warning + +# IDISP018: Call SuppressFinalize. +dotnet_diagnostic.IDISP018.severity = warning + +# IDISP019: Call SuppressFinalize. +dotnet_diagnostic.IDISP019.severity = warning + +# IDISP020: Call SuppressFinalize with this. +dotnet_diagnostic.IDISP020.severity = warning + +# IDISP021: Call this.Dispose(true). +dotnet_diagnostic.IDISP021.severity = warning + +# IDISP022: Call this.Dispose(false). +dotnet_diagnostic.IDISP022.severity = warning + +# IDISP023: Don't use reference types in finalizer context. +dotnet_diagnostic.IDISP023.severity = warning + +# IDISP024: Don't call GC.SuppressFinalize(this) when the type is sealed and has no finalizer. +dotnet_diagnostic.IDISP024.severity = warning + +# IDISP025: Class with no virtual dispose method should be sealed. +dotnet_diagnostic.IDISP025.severity = warning \ No newline at end of file diff --git a/Src/.vsconfig b/Src/.vsconfig new file mode 100644 index 0000000..a7dd0da --- /dev/null +++ b/Src/.vsconfig @@ -0,0 +1,8 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Workload.CoreEditor", + "Microsoft.VisualStudio.Workload.ManagedDesktop", + "Microsoft.NetCore.Component.DevelopmentTools" + ] +} \ No newline at end of file diff --git a/Src/CommandLine.sln b/Src/CommandLine.sln new file mode 100644 index 0000000..4b98da1 --- /dev/null +++ b/Src/CommandLine.sln @@ -0,0 +1,55 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29519.87 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{7FD121E2-26CB-4D40-B26E-7EA325DA30D4}" + ProjectSection(SolutionItems) = preProject + Directory.Build.props = Directory.Build.props + Directory.Build.targets = Directory.Build.targets + .Build\GenerateComplementaryAssemblyInfo.targets = .Build\GenerateComplementaryAssemblyInfo.targets + .Build\PreparePackageReleaseNotesFromFiles.targets = .Build\PreparePackageReleaseNotesFromFiles.targets + PublicKey.snk = PublicKey.snk + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{EECB56C4-4A16-41E8-B2AD-4B05831CB410}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + ..\.gitattributes = ..\.gitattributes + ..\.gitignore = ..\.gitignore + .vsconfig = .vsconfig + CommandLine.sln.vsspell = CommandLine.sln.vsspell + ..\GitVersion.yml = ..\GitVersion.yml + stylecop.json = stylecop.json + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{BDF7066C-A817-4305-8035-58B7AC6EC398}" + ProjectSection(SolutionItems) = preProject + ..\CHANGELOG.md = ..\CHANGELOG.md + ..\CODE_OF_CONDUCT.md = ..\CODE_OF_CONDUCT.md + ..\CONTRIBUTING.md = ..\CONTRIBUTING.md + ..\LICENSE = ..\LICENSE + PackageReleaseNotes.txt = PackageReleaseNotes.txt + ..\README.md = ..\README.md + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "Core\Core.csproj", "{5E51341F-EB26-4B58-B955-F9BD0E2F445E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5E51341F-EB26-4B58-B955-F9BD0E2F445E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5E51341F-EB26-4B58-B955-F9BD0E2F445E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5E51341F-EB26-4B58-B955-F9BD0E2F445E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5E51341F-EB26-4B58-B955-F9BD0E2F445E}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5680AB07-B8AE-4311-8BFC-5ADD17F0305B} + EndGlobalSection +EndGlobal diff --git a/Src/CommandLine.sln.vsspell b/Src/CommandLine.sln.vsspell new file mode 100644 index 0000000..50463cd --- /dev/null +++ b/Src/CommandLine.sln.vsspell @@ -0,0 +1,61 @@ + + + + True + False + + True + True + + True + + True + False + True + True + True + True + False + False + True + True + True + True + False + None + + False + False + False + False + False + False + False + False + + + False + False + False + False + False + None + + + Github + Rodríguez + Wilhelm + Zapiain + + + + + + *.Designer.cs + *.editorconfig + *.gitattributes + *.gitignore + *.vsconfig + + \ No newline at end of file diff --git a/Src/Core/Core.csproj b/Src/Core/Core.csproj new file mode 100644 index 0000000..2f78dd6 --- /dev/null +++ b/Src/Core/Core.csproj @@ -0,0 +1,8 @@ + + + netcoreapp3.1 + WiZaRo.CommandLine.Core + WiZaRo.CommandLine + WiZaRo's Command Line Interface core library. + + \ No newline at end of file diff --git a/Src/Core/PublicAPI.Shipped.txt b/Src/Core/PublicAPI.Shipped.txt new file mode 100644 index 0000000..91b0e1a --- /dev/null +++ b/Src/Core/PublicAPI.Shipped.txt @@ -0,0 +1 @@ +#nullable enable \ No newline at end of file diff --git a/Src/Core/PublicAPI.Unshipped.txt b/Src/Core/PublicAPI.Unshipped.txt new file mode 100644 index 0000000..91b0e1a --- /dev/null +++ b/Src/Core/PublicAPI.Unshipped.txt @@ -0,0 +1 @@ +#nullable enable \ No newline at end of file diff --git a/Src/Core/README.md b/Src/Core/README.md new file mode 100644 index 0000000..d3102dc --- /dev/null +++ b/Src/Core/README.md @@ -0,0 +1,3 @@ +# WiZaRo.CommandLine.Core + + \ No newline at end of file diff --git a/Src/Core/Support/Exceptions.cs b/Src/Core/Support/Exceptions.cs new file mode 100644 index 0000000..ecce03d --- /dev/null +++ b/Src/Core/Support/Exceptions.cs @@ -0,0 +1,24 @@ +// © 2020 Wilhelm Zapiain Rodríguez. +// Licensed under the MIT license. See the LICENSE file in the project root for full license information. + +using System; + +namespace WiZaRo.CommandLine.Support +{ + /// + /// Contains builders for the exceptions used in the project. + /// + /// + internal static class Exceptions + { + /// + /// Builds an when an argument is null. + /// + /// The name of the parameter that caused the current exception. + /// with the desired data. + public static ArgumentNullException BuildArgumentNull(string paramName) + { + return new ArgumentNullException(paramName); + } + } +} \ No newline at end of file diff --git a/Src/Directory.Build.props b/Src/Directory.Build.props new file mode 100644 index 0000000..8e4fa00 --- /dev/null +++ b/Src/Directory.Build.props @@ -0,0 +1,81 @@ + + + © 2020 Wilhelm Zapiain Rodríguez. Licensed under the MIT license. See the LICENSE file for full license information. + WiZaRo + WiZaRo's Command Line Interface Library + WiZaRo + + + + MIT + + + + https://github.com/wizaro/CommandLine + git + true + true + true + snupkg + + + + latest + enable + true + true + en-US + true + false + false + true + + + + true + ..\PublicKey.snk + true + false + + + + ..\..\Obj\$(MSBuildProjectName)\ + ..\..\Bin\$(MSBuildProjectName)\ + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + PreserveNewest + + + + + + + \ No newline at end of file diff --git a/Src/Directory.Build.targets b/Src/Directory.Build.targets new file mode 100644 index 0000000..ed3dd72 --- /dev/null +++ b/Src/Directory.Build.targets @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Src/PackageReleaseNotes.txt b/Src/PackageReleaseNotes.txt new file mode 100644 index 0000000..f9ad5a1 --- /dev/null +++ b/Src/PackageReleaseNotes.txt @@ -0,0 +1,5 @@ +## What's New +- None. + +## Bug Fixes +- None. \ No newline at end of file diff --git a/Src/PublicKey.snk b/Src/PublicKey.snk new file mode 100644 index 0000000..714bb2e Binary files /dev/null and b/Src/PublicKey.snk differ diff --git a/Src/stylecop.json b/Src/stylecop.json new file mode 100644 index 0000000..5e88fff --- /dev/null +++ b/Src/stylecop.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "indentation": { + "indentationSize": 4, + "tabSize": 4, + "useTabs": false + }, + "readabilityRules": { + "allowBuiltInTypeAliases": false + }, + "orderingRules": { + "elementOrder": [ + "static", + "kind", + "constant", + "accessibility", + "readonly" + ], + "systemUsingDirectivesFirst": true, + "usingDirectivesPlacement": "outsideNamespace", + "blankLinesBetweenUsingGroups": "omit" + }, + "namingRules": { + "allowCommonHungarianPrefixes": true, + "includeInferredTupleElementNames": true, + "tupleElementNameCasing": "PascalCase" + }, + "maintainabilityRules": { + "topLevelTypes": [ + "delegate", + "enum", + "interface", + "struct", + "class" + ] + }, + "layoutRules": { + "newlineAtEndOfFile": "omit", + "allowConsecutiveUsings": true + }, + "documentationRules": { + "copyrightText": "© 2020 Wilhelm Zapiain Rodríguez.\nLicensed under the MIT license. See the LICENSE file in the project root for full license information.", + "xmlHeader": false, + "documentInterfaces": true, + "documentExposedElements": true, + "documentInternalElements": true, + "documentPrivateElements": true, + "documentPrivateFields": true, + "documentationCulture": "en-US", + "fileNamingConvention": "stylecop", + "excludeFromPunctuationCheck": [ + "seealso" + ] + } + } +} \ No newline at end of file