diff --git a/.editorconfig b/.editorconfig
index 5260692..13d0efd 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -37,7 +37,7 @@ csharp_style_var_for_built_in_types = true:warning
csharp_style_var_when_type_is_apparent = true:warning
csharp_style_var_elsewhere = true:suggestion
csharp_style_expression_bodied_methods = true:suggestion
-csharp_style_expression_bodied_constructors = true:suggestion
+csharp_style_expression_bodied_constructors = false:suggestion
csharp_style_expression_bodied_operators = true:suggestion
csharp_style_expression_bodied_properties = true:suggestion
csharp_style_expression_bodied_indexers = true:suggestion
diff --git a/.sonarlint/Cake.Transifex.slconfig b/.sonarlint/Cake.Transifex.slconfig
new file mode 100644
index 0000000..cce35ed
--- /dev/null
+++ b/.sonarlint/Cake.Transifex.slconfig
@@ -0,0 +1,15 @@
+{
+ "ServerUri": "https://sonarcloud.io/",
+ "Organization": {
+ "Key": "cake-contrib",
+ "Name": "Cake Contributions"
+ },
+ "ProjectKey": "Cake.Transifex",
+ "ProjectName": "Cake.Transifex",
+ "Profiles": {
+ "CSharp": {
+ "ProfileKey": "AW-AWl5fQ1MkeF54Xi90",
+ "ProfileTimestamp": "2020-01-07T15:13:24+01:00"
+ }
+ }
+}
diff --git a/.sonarlint/cake.transifexcsharp.ruleset b/.sonarlint/cake.transifexcsharp.ruleset
new file mode 100644
index 0000000..875bd56
--- /dev/null
+++ b/.sonarlint/cake.transifexcsharp.ruleset
@@ -0,0 +1,394 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Cake.Transifex.Tests/TransifexInitRunnerTests.cs b/src/Cake.Transifex.Tests/TransifexInitRunnerTests.cs
index 15eda2d..70808e3 100644
--- a/src/Cake.Transifex.Tests/TransifexInitRunnerTests.cs
+++ b/src/Cake.Transifex.Tests/TransifexInitRunnerTests.cs
@@ -9,7 +9,9 @@ public class TransifexInitRunnerTests
private readonly TransifexInitFixture fixture;
public TransifexInitRunnerTests()
- => this.fixture = new TransifexInitFixture();
+ {
+ this.fixture = new TransifexInitFixture();
+ }
[Theory]
[InlineData(null)]
diff --git a/src/Cake.Transifex.Tests/TransifexPullRunnerTests.cs b/src/Cake.Transifex.Tests/TransifexPullRunnerTests.cs
index 0d88e91..80411ea 100644
--- a/src/Cake.Transifex.Tests/TransifexPullRunnerTests.cs
+++ b/src/Cake.Transifex.Tests/TransifexPullRunnerTests.cs
@@ -1,4 +1,4 @@
-namespace Cake.Transifex.Tests
+namespace Cake.Transifex.Tests
{
using Shouldly;
using Xunit;
@@ -8,7 +8,9 @@ public class TransifexPullRunnerTests
private readonly TransifexPullFixture fixture;
public TransifexPullRunnerTests()
- => fixture = new TransifexPullFixture();
+ {
+ fixture = new TransifexPullFixture();
+ }
[Theory]
[InlineData(null)]
diff --git a/src/Cake.Transifex.Tests/TransifexPushRunnerTests.cs b/src/Cake.Transifex.Tests/TransifexPushRunnerTests.cs
index 4aa26dc..7035770 100644
--- a/src/Cake.Transifex.Tests/TransifexPushRunnerTests.cs
+++ b/src/Cake.Transifex.Tests/TransifexPushRunnerTests.cs
@@ -1,4 +1,4 @@
-namespace Cake.Transifex.Tests
+namespace Cake.Transifex.Tests
{
using Shouldly;
using Xunit;
@@ -8,7 +8,9 @@ public class TransifexPushRunnerTests
private readonly TransifexPushFixture fixture;
public TransifexPushRunnerTests()
- => fixture = new TransifexPushFixture();
+ {
+ fixture = new TransifexPushFixture();
+ }
[Theory]
[InlineData(null)]
diff --git a/src/Cake.Transifex.Tests/TransifexStatusRunnerTests.cs b/src/Cake.Transifex.Tests/TransifexStatusRunnerTests.cs
index bdd7c7b..3b101c3 100644
--- a/src/Cake.Transifex.Tests/TransifexStatusRunnerTests.cs
+++ b/src/Cake.Transifex.Tests/TransifexStatusRunnerTests.cs
@@ -1,4 +1,4 @@
-namespace Cake.Transifex.Tests
+namespace Cake.Transifex.Tests
{
using Shouldly;
using Xunit;
@@ -8,7 +8,9 @@ public class TransifexStatusRunnerTests
private readonly TransifexStatusFixture fixture;
public TransifexStatusRunnerTests()
- => fixture = new TransifexStatusFixture();
+ {
+ fixture = new TransifexStatusFixture();
+ }
[Theory]
[InlineData(null)]
diff --git a/src/Cake.Transifex/AssemblyInfo.cs b/src/Cake.Transifex/AssemblyInfo.cs
index d74e7f7..a3d6b62 100644
--- a/src/Cake.Transifex/AssemblyInfo.cs
+++ b/src/Cake.Transifex/AssemblyInfo.cs
@@ -1,3 +1,7 @@
-using System.Runtime.CompilerServices;
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
[assembly: InternalsVisibleTo("Cake.Transifex.Tests")]
+[assembly: CLSCompliant(true)]
+[assembly: ComVisible(false)]
diff --git a/src/Cake.Transifex/Cake.Transifex.csproj b/src/Cake.Transifex/Cake.Transifex.csproj
index 57ebfa6..672e58e 100644
--- a/src/Cake.Transifex/Cake.Transifex.csproj
+++ b/src/Cake.Transifex/Cake.Transifex.csproj
@@ -1,6 +1,7 @@
-
+
netstandard2.0
+ en-GB
bin\$(Configuration)\$(TargetFramework)\Cake.Transifex.xml
@@ -28,11 +29,13 @@ To install the transifex client, install python, then run `pip install transifex
False
True
+ Cake.Transifex.ruleset
True
True
+ Cake.Transifex.ruleset
diff --git a/src/Cake.Transifex/Cake.Transifex.ruleset b/src/Cake.Transifex/Cake.Transifex.ruleset
new file mode 100644
index 0000000..85937e6
--- /dev/null
+++ b/src/Cake.Transifex/Cake.Transifex.ruleset
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Cake.Transifex/GlobalSuppressions.cs b/src/Cake.Transifex/GlobalSuppressions.cs
new file mode 100644
index 0000000..a575828
--- /dev/null
+++ b/src/Cake.Transifex/GlobalSuppressions.cs
@@ -0,0 +1,8 @@
+// This file is used by Code Analysis to maintain SuppressMessage
+// attributes that are applied to this project.
+// Project-level suppressions either have no target or are given
+// a specific target and scoped to a namespace, type, member, etc.
+
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Minor Code Smell", "S4018:Generic methods should provide type parameters", Justification = "We have this for convinience", Scope = "member", Target = "~M:Cake.Transifex.TransifexRunnerSettings.GetValue``1(System.String)~``0")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Minor Code Smell", "S4040:Strings should be normalized to uppercase", Justification = "Transifex expects it to be lowercase", Scope = "member", Target = "~M:Cake.Transifex.TransifexRunner.SetArguments(Cake.Core.IO.ProcessArgumentBuilder,Cake.Transifex.TransifexRunnerSettings)")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Blocker Vulnerability", "S2068:Credentials should not be hard-coded", Justification = "Credential is not hard coded in library", Scope = "member", Target = "~F:Cake.Transifex.TransifexInitSettings.PasswordKey")]
diff --git a/src/Cake.Transifex/TransifexRunner.cs b/src/Cake.Transifex/TransifexRunner.cs
index ca23e37..d61ac4d 100644
--- a/src/Cake.Transifex/TransifexRunner.cs
+++ b/src/Cake.Transifex/TransifexRunner.cs
@@ -50,7 +50,7 @@ public ITransifexRunnerCommands Push(TransifexPushSettings settings)
public ITransifexRunnerCommands Status(string resources)
{
- var settings = new TransifexStatusSettings()
+ var settings = new TransifexStatusSettings
{
Resources = resources
};
diff --git a/src/Cake.Transifex/TransifexRunnerAliases.cs b/src/Cake.Transifex/TransifexRunnerAliases.cs
index 1583059..91d1d97 100644
--- a/src/Cake.Transifex/TransifexRunnerAliases.cs
+++ b/src/Cake.Transifex/TransifexRunnerAliases.cs
@@ -28,9 +28,9 @@ public static class TransifexRunnerAliases
/// ]]>
///
///
- ///
- /// Initial creation
- ///
+ ///
+ /// Initial creation
+ ///
public static void TransifexInit(this ICakeContext context)
=> TransifexInit(context, null);