-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Added a rules (CCG0005, CCG0006) to check for stylecop
- Loading branch information
Showing
39 changed files
with
1,128 additions
and
63 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
--- | ||
Order: 3 | ||
Title: Recommended References | ||
--- | ||
|
||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
## Table of Contents | ||
|
||
- [Goals](#goals) | ||
- [Related rules](#related-rules) | ||
- [Usage](#usage) | ||
- [Settings](#settings) | ||
- [Opt-Out](#opt-out) | ||
|
||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
|
||
## Goals | ||
|
||
To have consistency in code-style among the different tools/plugins the use of Analysers is recommended, especially the use of [StyleCop](https://github.com/DotNetAnalyzers/StyleCopAnalyzers). Additionally code-style anlysis using StyleCopy (and code generation in the IDE) should be properly configured using a `stylecop.json`-file as well as `.editorconfig`-file, respectively. | ||
|
||
Example-Files can be found at: | ||
|
||
* [`stylecop.json`](./examples/StyleCopJson.md) | ||
* [`.editorconfig`](./examples/Editorconfig.md) | ||
|
||
## Related rules | ||
|
||
* [CCG0005](../rules/ccg0005) | ||
* [CCG0006](../rules/ccg0006) | ||
|
||
## Usage | ||
|
||
Using this package automatically enables this guideline. | ||
|
||
## Settings | ||
|
||
### Opt-Out | ||
|
||
It it possible to opt-out of the check for StyleCop using the following setting: | ||
|
||
(*Keep in mind, though that it is not recommended to opt-out of this feature*) | ||
|
||
```xml | ||
<ItemGroup> | ||
<CakeContribGuidelinesOmitRecommendedReference Include="StyleCop.Analyzers" /> | ||
</ItemGroup> | ||
``` | ||
|
||
It is also possible to opt-out of the check for configuration-files (`stylecop.json` as well as `.editorconfig`) | ||
using the following settings: | ||
```xml | ||
<ItemGroup> | ||
<CakeContribGuidelinesOmitRecommendedConfigFile Include="stylecop.json" /> | ||
<CakeContribGuidelinesOmitRecommendedConfigFile Include=".editorconfig" /> | ||
</ItemGroup> | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,257 @@ | ||
--- | ||
Order: 1 | ||
Title: Example for .editorconfig | ||
--- | ||
|
||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
## Table of Contents | ||
|
||
- [Example](#example) | ||
|
||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
|
||
## Example | ||
|
||
```sh | ||
# 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 | ||
|
||
# Rules: | ||
|
||
# SA1101: Prefix local calls with this | ||
dotnet_diagnostic.SA1101.severity = none | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
--- | ||
Order: 2 | ||
Title: Example for stylecop.json | ||
--- | ||
|
||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
## Table of Contents | ||
|
||
- [Example](#example) | ||
|
||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
|
||
## Example | ||
|
||
```json | ||
{ | ||
"$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 | ||
} | ||
} | ||
} | ||
|
||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
--- | ||
Order: 5 | ||
Title: CCG0005 | ||
Description: Usage of analysers is recommended | ||
--- | ||
|
||
> No reference to `StyleCop.Analyzers` found. Usage of `StyleCop.Analyzers` is strongly recommended. | ||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
## Table of Contents | ||
|
||
- [Cause](#cause) | ||
- [Description](#description) | ||
- [How to fix violations](#how-to-fix-violations) | ||
- [Related guidelines](#related-guidelines) | ||
|
||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
|
||
## Cause | ||
|
||
This warning is raised, when the recommended analyser [StyleCop](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) is not referenced. | ||
|
||
## Description | ||
|
||
Usage of [StyleCop](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) is recommended. | ||
|
||
## How to fix violations | ||
|
||
Add a reference to [StyleCop](https://github.com/DotNetAnalyzers/StyleCopAnalyzers). | ||
(Or opt-out of this rule, by setting `CakeContribGuidelinesOmitRecommendedReference`) | ||
|
||
## Related guidelines | ||
|
||
* [Usage of Analysers](../guidelines/Analysers) |
Oops, something went wrong.