Skip to content

Commit

Permalink
Merge branch 'release/0.8.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
AdmiringWorm committed Jan 9, 2020
2 parents a48f239 + 1274cc5 commit 21568f0
Show file tree
Hide file tree
Showing 30 changed files with 1,525 additions and 418 deletions.
51 changes: 51 additions & 0 deletions .build/sonarcloud.cake
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
const string SonarQubeTool = "#tool nuget:?package=MSBuild.SonarQube.Runner.Tool&version=4.6.0";
const string SonarQubeAddin = "#addin nuget:?package=Cake.Sonar&version=1.1.22";

Task("SonarCloud-Begin")
.IsDependentOn("DotNetCore-Restore")
.IsDependeeOf("DotNetCore-Build")
.WithCriteria(() => HasEnvironmentVariable("SONARCLOUD_TOKEN"), "Missing sonar cloud token environment variable")
.WithCriteria(() => HasEnvironmentVariable("SONARCLOUD_ORGANIZATION"), "Missing sonar cloud organization environment variable")
.WithCriteria(() => HasEnvironmentVariable("SONARCLOUD_PROJECT_KEY"), "Missing sonar cloud project key environment variable")
.Does(() => RequireTool(SonarQubeTool,
() =>
{
Information("Starting SonarCloud analysing");

RequireAddin(SonarQubeAddin + @"
SonarBegin(new SonarBeginSettings {
Key = EnvironmentVariable(""TEMP_PROJECT_KEY""),
Branch = EnvironmentVariable(""TEMP_BUILD_BRANCH""),
Organization = EnvironmentVariable(""TEMP_ORGANIZATION""),
Url = ""https://sonarcloud.io"",
Exclusions = ""**/*.Tests,**/GlobalSuppressions.cs"", // Global suppresions is added to prevent sonar cloud to report suppressed warnings
OpenCoverReportsPath = EnvironmentVariable(""TEMP_OPENCOVER_FILTER""),
Login = EnvironmentVariable(""TEMP_TOKEN""),
Version = EnvironmentVariable(""TEMP_VERSION""),
XUnitReportsPath = EnvironmentVariable(""TEMP_TEST_RESULTS""),
});",
new Dictionary<string, string> {
{ "TEMP_PROJECT_KEY", EnvironmentVariable("SONARCLOUD_PROJECT_KEY") },
{ "TEMP_BUILD_BRANCH", BuildParameters.BuildProvider.Repository.Branch },
{ "TEMP_ORGANIZATION", EnvironmentVariable("SONARCLOUD_ORGANIZATION") },
{ "TEMP_OPENCOVER_FILTER", BuildParameters.Paths.Files.TestCoverageOutputFilePath.ToString().Replace(".xml", "*.xml") },
{ "TEMP_TOKEN", EnvironmentVariable("SONARCLOUD_TOKEN") },
{ "TEMP_VERSION", BuildParameters.Version.SemVersion },
{ "TEMP_TEST_RESULTS", BuildParameters.Paths.Directories.TestResults.CombineWithFilePath("TestResults.xml").ToString() },
});
}));

Task("SonarCloud-End")
.IsDependentOn("Test")
.IsDependeeOf("Analyze")
.WithCriteria(() => HasEnvironmentVariable("SONARCLOUD_TOKEN"), "Missing sonar cloud token environment variable")
.WithCriteria(() => HasEnvironmentVariable("SONARCLOUD_ORGANIZATION"), "Missing sonar cloud organization environment variable")
.WithCriteria(() => HasEnvironmentVariable("SONARCLOUD_PROJECT_KEY"), "Missing sonar cloud project key environment variable")
.Does(() => RequireTool(SonarQubeTool, () => RequireAddin(SonarQubeAddin + @"
SonarEnd(new SonarEndSettings {
Login = EnvironmentVariable(""TEMP_TOKEN""),
});",
new Dictionary<string, string> {
{ "TEMP_TOKEN", EnvironmentVariable("SONARCLOUD_TOKEN") },
})
));
55 changes: 55 additions & 0 deletions .build/tests.cake
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
((CakeTask)BuildParameters.Tasks.DotNetCoreTestTask.Task).Actions.Clear();
((CakeTask)BuildParameters.Tasks.DotNetCoreTestTask.Task).Criterias.Clear();
((CakeTask)BuildParameters.Tasks.DotNetCoreTestTask.Task).Dependencies.Clear();

BuildParameters.Tasks.DotNetCoreTestTask
.IsDependentOn("Install-ReportGenerator")
.Does(() => {
var projects = GetFiles(BuildParameters.TestDirectoryPath + (BuildParameters.TestFilePattern ?? "/**/*Tests.csproj"));
var testFileName = BuildParameters.Paths.Files.TestCoverageOutputFilePath.GetFilename();
var testDirectory = BuildParameters.Paths.Files.TestCoverageOutputFilePath.GetDirectory();

var settings = new CoverletSettings {
CollectCoverage = true,
CoverletOutputFormat = CoverletOutputFormat.opencover,
CoverletOutputDirectory = testDirectory,
CoverletOutputName = testFileName.ToString(),
MergeWithFile = BuildParameters.Paths.Files.TestCoverageOutputFilePath
};
foreach (var line in ToolSettings.TestCoverageExcludeByFile.Split(';')) {
foreach (var file in GetFiles("**/" + line)) {
settings = settings.WithFileExclusion(file.FullPath);
}
}

foreach (var item in ToolSettings.TestCoverageFilter.Split(' ')) {
if (item[0] == '+') {
settings.WithInclusion(item.TrimStart('+'));
}
else if (item[0] == '-') {
settings.WithFilter(item.TrimStart('-'));
}
}

var testSettings = new DotNetCoreTestSettings {
Configuration = BuildParameters.Configuration,
NoBuild = true,
Logger = "xunit",
ResultsDirectory = BuildParameters.Paths.Directories.TestResults,
ArgumentCustomization = (args) => args.AppendSwitch("--logger", ":", "appveyor")
};

foreach (var project in projects) {
DotNetCoreTest(project.FullPath, testSettings, settings);
}

var coverageFilter = BuildParameters.Paths.Files.TestCoverageOutputFilePath.ToString().Replace(".xml", "*.xml");
Information($"Finding coverage results with filer: {coverageFilter}");

var reportFiles = GetFiles(coverageFilter);
Information($"Found {reportFiles.Count} files");

if (reportFiles.Any()) {
ReportGenerator(reportFiles, BuildParameters.Paths.Directories.TestCoverage);
}
});
195 changes: 186 additions & 9 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,195 @@ indent_style = space
indent_size = 4

[*.ps1]
charset = utf-8
end_of_line = crlf

[*.sh]
end_of_line = LF

[*.ps1]
end_of_line = CRLF
charset = utf-8-bom
end_of_line = CRLF

[*.DotSettings]
[*.{sh,DotSettings}]
end_of_line = LF

[*.md]
indent_size = 2
trim_trailing_whitespace = false

# C# files
[*.cs]
#### .NET Coding Conventions ####

# Organize usings
dotnet_separate_import_directive_groups = false
dotnet_sort_system_directives_first = true

# 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 = true:error

# 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_prefer_auto_properties = true:silent
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = false:silent
dotnet_style_prefer_conditional_expression_over_return = false: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:warning

# Field preferences
dotnet_style_readonly_field = true:error

# Parameter preferences
dotnet_code_quality_unused_parameters = all:warning

#### C# Coding Conventions ####

# 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:silent

# Expression-bodied members
csharp_style_expression_bodied_accessors = when_on_single_line:warning
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_lambdas = when_on_single_line:suggestion
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:error
csharp_style_pattern_matching_over_is_with_cast_check = true:error
csharp_style_prefer_switch_expression = true:error

# 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

# Code-block preferences
csharp_prefer_braces = true:error
csharp_prefer_simple_using_statement = false:error

# 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:warning
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 = true
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 = true

#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = error
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.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.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
8 changes: 8 additions & 0 deletions .github/pull.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: "1"
rules:
- base: develop
upstream: cake-contrib:develop
mergeMethod: hardreset
- base: master
upstream: cake-contrib:master
mergeMethod: hardreset
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[submodule "cake-contrib-graphics"]
path = graphics/cake-contrib
url = https://github.com/cake-contrib/graphics.git
branch = master
3 changes: 2 additions & 1 deletion .mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ pull_request_rules:
- "#commented-reviews-by=0"
actions:
merge:
method: rehead
method: squash
strict: smart
- name: thank user and refer them to add themself as contributor
conditions:
- merged
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ branches:
- /^dependabot\/.*/

script:
- ./build.sh --target=Linux
- ./build.sh --target=Unix
5 changes: 3 additions & 2 deletions GitReleaseManager.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ issue-labels-include:
- Documentation
issue-labels-exclude:
- Build
- Internal Refactor
issue-labels-alias:
- name: Documentation
header: Documentation
plural: Documentation
header: Documentation
plural: Documentation
7 changes: 4 additions & 3 deletions GitVersion.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
branches: {}
ignore:
sha: [
"64d1d306967d710a76b5e327d00b7c233d64f580",
"ffa419b3524189b4fb4f667e1d7da253620f6348",
"8d09bc60adbc44b3308f18fd8be3cf6f2655fdb0"
"64d1d306967d710a76b5e327d00b7c233d64f580",
"ffa419b3524189b4fb4f667e1d7da253620f6348",
"8d09bc60adbc44b3308f18fd8be3cf6f2655fdb0",
27d3730ea938369e6af7afd1cb5381694e9c99d6 ,
]
Loading

0 comments on commit 21568f0

Please sign in to comment.