From f7af0cb5405b4a10549f5b26fe2ea5c8c0137b50 Mon Sep 17 00:00:00 2001 From: Nils Andresen Date: Sat, 20 Jul 2024 22:12:03 +0200 Subject: [PATCH 1/4] (#108) added a reference to stylecop --- .editorconfig | 10 +- Source/.editorconfig | 241 ++++++++++++++++++ Source/Cake.DotNetVersionDetector.ruleset | 7 + Source/Cake.DotNetVersionDetector.sln | 6 + .../Cake.DotNetVersionDetector.csproj | 7 + Source/stylecop.json | 22 ++ 6 files changed, 289 insertions(+), 4 deletions(-) create mode 100644 Source/.editorconfig create mode 100644 Source/Cake.DotNetVersionDetector.ruleset create mode 100644 Source/stylecop.json diff --git a/.editorconfig b/.editorconfig index 1172014..0aae7a9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,12 +5,14 @@ root = true [*] end_of_line = CRLF +trim_trailing_whitespace = true -[*.ps1] -indent_style = space -indent_size = 4 +[*.md] +trim_trailing_whitespace = false -[*.cs] +[*.{bat,ps1}] +charset = utf-8-bom +end_of_line = crlf indent_style = space indent_size = 4 diff --git a/Source/.editorconfig b/Source/.editorconfig new file mode 100644 index 0000000..be3351d --- /dev/null +++ b/Source/.editorconfig @@ -0,0 +1,241 @@ + +# This may not be needed, but kept for compatibility with VS +[*.{sln,csproj}] +end_of_line = crlf +indent_size = 2 + +# C# files +[*.cs] + +#### Core EditorConfig Options #### + +# Indentation and spacing +indent_size = 4 +indent_style = space +tab_width = 4 + +# New line preferences +end_of_line = crlf +insert_final_newline = true + +#### .NET Coding Conventions #### + +# Organize usings +dotnet_separate_import_directive_groups = true +dotnet_sort_system_directives_first = true +file_header_template = unset + +# this. and Me. preferences +dotnet_style_qualification_for_event = false:warning +dotnet_style_qualification_for_field = false:warning +dotnet_style_qualification_for_method = false:warning +dotnet_style_qualification_for_property = false:warning + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true:warning +dotnet_style_predefined_type_for_member_access = true:warning + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members:warning + +# 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 = beginning_of_line +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +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 + +#### C# Coding Conventions #### + +# var preferences +csharp_style_var_elsewhere = false:silent +csharp_style_var_for_built_in_types = false:silent +csharp_style_var_when_type_is_apparent = false:silent + +# Expression-bodied members +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent + +# 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_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:silent + +# Code-block preferences +csharp_prefer_braces = true:silent +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:silent + +# 'using' directive preferences +csharp_using_directive_placement = outside_namespace:warning + +#### C# Formatting Rules #### + +# 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 = flush_left +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 + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning +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 = warning +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.method_should_be_pascal_case.severity = warning +dotnet_naming_rule.method_should_be_pascal_case.symbols = method +dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.severity = warning +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 + +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.severity = warning +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.symbols = private_or_internal_static_field +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_field_should_be_camelcase.severity = warning +dotnet_naming_rule.private_or_internal_field_should_be_camelcase.symbols = private_or_internal_field +dotnet_naming_rule.private_or_internal_field_should_be_camelcase.style = camelcase + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = warning +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 + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.method.applicable_kinds = method +dotnet_naming_symbols.method.applicable_accessibilities = public +dotnet_naming_symbols.method.required_modifiers = + +dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field +dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected +dotnet_naming_symbols.public_or_protected_field.required_modifiers = + +dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_field.required_modifiers = + +dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +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, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# 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.camelcase.required_prefix = +dotnet_naming_style.camelcase.required_suffix = +dotnet_naming_style.camelcase.word_separator = +dotnet_naming_style.camelcase.capitalization = camel_case \ No newline at end of file diff --git a/Source/Cake.DotNetVersionDetector.ruleset b/Source/Cake.DotNetVersionDetector.ruleset new file mode 100644 index 0000000..1f9e1cc --- /dev/null +++ b/Source/Cake.DotNetVersionDetector.ruleset @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Cake.DotNetVersionDetector.sln b/Source/Cake.DotNetVersionDetector.sln index e28c2bd..ae49c1b 100644 --- a/Source/Cake.DotNetVersionDetector.sln +++ b/Source/Cake.DotNetVersionDetector.sln @@ -7,6 +7,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cake.DotNetVersionDetector" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cake.DotNetVersionDetector.Tests", "Cake.DotNetVersionDetector.Tests\Cake.DotNetVersionDetector.Tests.csproj", "{78EB146D-2178-47FE-B999-1FECF1F3407B}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "{3D89E7D0-898E-4F5D-8CB7-E572FC56E317}" + ProjectSection(SolutionItems) = preProject + Cake.DotNetVersionDetector.ruleset = Cake.DotNetVersionDetector.ruleset + Directory.Build.targets = Directory.Build.targets + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/Source/Cake.DotNetVersionDetector/Cake.DotNetVersionDetector.csproj b/Source/Cake.DotNetVersionDetector/Cake.DotNetVersionDetector.csproj index bd0f98b..87b1362 100644 --- a/Source/Cake.DotNetVersionDetector/Cake.DotNetVersionDetector.csproj +++ b/Source/Cake.DotNetVersionDetector/Cake.DotNetVersionDetector.csproj @@ -7,9 +7,12 @@ en-GB Cake DotNetVersionDetector addin Cake Contributors + $(ProjectDir)../Cake.DotNetVersionDetector.ruleset + + @@ -51,5 +54,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Source/stylecop.json b/Source/stylecop.json new file mode 100644 index 0000000..3d7a981 --- /dev/null +++ b/Source/stylecop.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "indentation": { + "indentationSize": 4, + "tabSize": 4, + "useTabs": false + }, + "orderingRules": { + "usingDirectivesPlacement": "outsideNamespace", + "blankLinesBetweenUsingGroups": "allow", + "systemUsingDirectivesFirst": true + }, + "documentationRules": { + "xmlHeader": false, + "documentExposedElements": true, + "documentInternalElements": false, + "documentPrivateElements": false, + "documentPrivateFields": false + } + } +} \ No newline at end of file From c20624a7cbdb84a4bd040e447f9ac087c1f951f2 Mon Sep 17 00:00:00 2001 From: Nils Andresen Date: Sat, 20 Jul 2024 22:14:12 +0200 Subject: [PATCH 2/4] fixed stylecop warnings regarding documentation --- .../DotNetVersionDetectorAliases.cs | 4 ++-- .../Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs | 4 ++-- .../DotNetVersionDetectorSettings.cs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorAliases.cs b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorAliases.cs index 32f9e97..066dca9 100644 --- a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorAliases.cs +++ b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorAliases.cs @@ -19,7 +19,7 @@ namespace Cake.DotNetVersionDetector public static class DotNetVersionDetectorAliases { /// - /// Runs .Net Version Detector, and outputs to specified output FilePath + /// Runs .Net Version Detector, and outputs to specified output FilePath. /// /// The context. /// The output file path. @@ -35,7 +35,7 @@ public static void DotNetVersionDetector(this ICakeContext context, FilePath out } /// - /// Runs .Net Version Detector, and outputs to specified output FilePath with the specified DotNetVersionDetectorSettings + /// Runs .Net Version Detector, and outputs to specified output FilePath with the specified DotNetVersionDetectorSettings. /// /// The context. /// The output file path. diff --git a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs index 2d8129a..a6e8db0 100644 --- a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs +++ b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs @@ -7,7 +7,7 @@ namespace Cake.DotNetVersionDetector { /// - /// The .Net Version Detector Runner + /// The .Net Version Detector Runner. /// public class DotNetVersionDetectorRunner : Tool { @@ -19,7 +19,7 @@ public class DotNetVersionDetectorRunner : Tool /// The file system. /// The environment. /// The process runner. - /// The tool locator + /// The tool locator. public DotNetVersionDetectorRunner(IFileSystem fileSystem, ICakeEnvironment environment, IProcessRunner processRunner, IToolLocator toolLocator) : base(fileSystem, environment, processRunner, toolLocator) { diff --git a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorSettings.cs b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorSettings.cs index 9a19af3..63b39b1 100644 --- a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorSettings.cs +++ b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorSettings.cs @@ -9,7 +9,7 @@ namespace Cake.DotNetVersionDetector public sealed class DotNetVersionDetectorSettings : ToolSettings { /// - /// Gets of sets a value indicating whether or not to output extended information in reports or not. + /// Gets or sets a value indicating whether, or not to output extended information in reports or not. /// public bool Extended { get; set; } } From 1ed17c0b61fbf861bef0d43dfddda1a9af29bc00 Mon Sep 17 00:00:00 2001 From: Nils Andresen Date: Sat, 20 Jul 2024 22:16:43 +0200 Subject: [PATCH 3/4] fixed stylecop warnings regarding naming --- .../DotNetVersionDetectorRunner.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs index a6e8db0..6714f65 100644 --- a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs +++ b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorRunner.cs @@ -11,7 +11,7 @@ namespace Cake.DotNetVersionDetector /// public class DotNetVersionDetectorRunner : Tool { - private readonly ICakeEnvironment _environment; + private readonly ICakeEnvironment environment; /// /// Initializes a new instance of the class. @@ -23,7 +23,7 @@ public class DotNetVersionDetectorRunner : Tool public DotNetVersionDetectorRunner(IFileSystem fileSystem, ICakeEnvironment environment, IProcessRunner processRunner, IToolLocator toolLocator) : base(fileSystem, environment, processRunner, toolLocator) { - _environment = environment; + this.environment = environment; } /// @@ -65,7 +65,7 @@ private ProcessArgumentBuilder GetArguments(FilePath outputFilePath, DotNetVersi { var builder = new ProcessArgumentBuilder(); - builder.AppendQuoted(outputFilePath.MakeAbsolute(_environment).FullPath); + builder.AppendQuoted(outputFilePath.MakeAbsolute(environment).FullPath); if (settings.Extended) { From d504c8a845f0e21508152568dd0c6cbd4039e9c1 Mon Sep 17 00:00:00 2001 From: Nils Andresen Date: Sat, 20 Jul 2024 22:20:38 +0200 Subject: [PATCH 4/4] fixed some JetBrains warings --- .../Cake.DotNetVersionDetector.csproj | 1 + .../DotNetVersionDetectorAliases.cs | 11 +++++++---- .../DotNetVersionDetectorSettings.cs | 1 - 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Source/Cake.DotNetVersionDetector/Cake.DotNetVersionDetector.csproj b/Source/Cake.DotNetVersionDetector/Cake.DotNetVersionDetector.csproj index 87b1362..c7d37a7 100644 --- a/Source/Cake.DotNetVersionDetector/Cake.DotNetVersionDetector.csproj +++ b/Source/Cake.DotNetVersionDetector/Cake.DotNetVersionDetector.csproj @@ -50,6 +50,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorAliases.cs b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorAliases.cs index 066dca9..5a1f36d 100644 --- a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorAliases.cs +++ b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorAliases.cs @@ -3,10 +3,12 @@ using Cake.Core.Annotations; using Cake.Core.IO; +using JetBrains.Annotations; + namespace Cake.DotNetVersionDetector { /// - /// Contains functionality related to the .Net Version Detector tool. + /// Contains functionality related to the .Net Version Detector tool. /// /// In order to use the commands for this addin, you will need to have the .Net Version Detector tool available. This can be installed via Chocolatey. /// In addition, you will need to include the following: @@ -16,6 +18,7 @@ namespace Cake.DotNetVersionDetector /// /// [CakeAliasCategory("DotNetVersionDetector")] + [PublicAPI] public static class DotNetVersionDetectorAliases { /// @@ -34,7 +37,7 @@ public static void DotNetVersionDetector(this ICakeContext context, FilePath out DotNetVersionDetector(context, outputFilePath, new DotNetVersionDetectorSettings()); } -/// + /// /// Runs .Net Version Detector, and outputs to specified output FilePath with the specified DotNetVersionDetectorSettings. /// /// The context. @@ -53,12 +56,12 @@ public static void DotNetVersionDetector(this ICakeContext context, FilePath out { if (context == null) { - throw new ArgumentNullException("context"); + throw new ArgumentNullException(nameof(context)); } if (outputFilePath == null) { - throw new ArgumentNullException("outputFilePath"); + throw new ArgumentNullException(nameof(outputFilePath)); } var runner = new DotNetVersionDetectorRunner(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools); diff --git a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorSettings.cs b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorSettings.cs index 63b39b1..581e22e 100644 --- a/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorSettings.cs +++ b/Source/Cake.DotNetVersionDetector/DotNetVersionDetectorSettings.cs @@ -1,4 +1,3 @@ -using Cake.Core.IO; using Cake.Core.Tooling; namespace Cake.DotNetVersionDetector