Browse Source

Code cleanup

Vicente Penades 3 years ago
parent
commit
9918aaff7f

+ 121 - 0
.editorconfig

@@ -0,0 +1,121 @@
+[*.cs]
+
+# CA1051: Do not declare visible instance fields
+dotnet_diagnostic.CA1051.severity = silent
+
+# CA1715: Identifiers should have correct prefix
+dotnet_diagnostic.CA1715.severity = silent
+csharp_using_directive_placement = outside_namespace:silent
+csharp_prefer_simple_using_statement = true:suggestion
+csharp_prefer_braces = true:silent
+csharp_style_namespace_declarations = block_scoped:silent
+csharp_style_expression_bodied_methods = false:silent
+csharp_style_expression_bodied_constructors = false:silent
+csharp_style_expression_bodied_operators = false:silent
+csharp_style_expression_bodied_properties = true:silent
+csharp_indent_labels = one_less_than_current
+csharp_style_expression_bodied_indexers = true:silent
+csharp_style_expression_bodied_accessors = true:silent
+csharp_style_expression_bodied_lambdas = true:silent
+csharp_style_expression_bodied_local_functions = false:silent
+csharp_prefer_static_local_function = true:suggestion
+csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent
+csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent
+csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent
+csharp_style_conditional_delegate_call = true:suggestion
+csharp_style_prefer_switch_expression = true:suggestion
+csharp_style_prefer_pattern_matching = true:silent
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+csharp_style_prefer_not_pattern = true:suggestion
+csharp_style_prefer_extended_property_pattern = true:suggestion
+csharp_style_var_for_built_in_types = false:silent
+csharp_style_var_when_type_is_apparent = false:silent
+csharp_style_var_elsewhere = false:silent
+
+# SA1623: Property summary documentation should match accessors
+dotnet_diagnostic.SA1623.severity = silent
+
+[*.{cs,vb}]
+#### Naming styles ####
+
+# 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
+
+# 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.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.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.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_style_operator_placement_when_wrapping = beginning_of_line
+tab_width = 4
+indent_size = 4
+end_of_line = crlf
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
+dotnet_style_prefer_auto_properties = true:silent
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent
+dotnet_style_prefer_conditional_expression_over_return = true:silent
+dotnet_style_explicit_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
+dotnet_style_prefer_compound_assignment = true:suggestion
+dotnet_style_prefer_simplified_interpolation = true:suggestion
+dotnet_style_readonly_field = true:suggestion
+dotnet_style_predefined_type_for_locals_parameters_members = true:silent
+dotnet_style_predefined_type_for_member_access = true:silent
+dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
+dotnet_style_allow_multiple_blank_lines_experimental = true:silent
+dotnet_style_allow_statement_immediately_after_block_experimental = true:silent
+dotnet_code_quality_unused_parameters = all:suggestion
+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_relational_binary_operators = always_for_clarity:silent
+dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
+dotnet_style_qualification_for_field = false:silent
+dotnet_style_qualification_for_property = false:silent
+dotnet_style_qualification_for_method = false:silent
+dotnet_style_qualification_for_event = false:silent
+
+# CA1014: Mark assemblies with CLSCompliant
+dotnet_diagnostic.CA1014.severity = silent

+ 1 - 0
.gitignore

@@ -328,3 +328,4 @@ ASALocalRun/
 
 # MFractors (Xamarin productivity tool) working folder 
 .mfractor/
+/tests/TestFiles

+ 2 - 2
build/SharpGLTF.CodeGen/CodeGen/EmitCSharp.cs

@@ -272,8 +272,8 @@ namespace SharpGLTF.CodeGen
 
                     var str = value as String;
 
-                    if (str.ToLower() == "false") return false;
-                    if (str.ToLower() == "true") return true;
+                    if (str.ToLowerInvariant() == "false") return false;
+                    if (str.ToLowerInvariant() == "true") return true;
                     throw new NotImplementedException();
                 }
 

+ 4 - 0
src/SharpGLTF.Core/SharpGLTF.Core.csproj

@@ -32,6 +32,10 @@
     <None Include="Schema2\Generated\*.cs">
       <ExcludeFromStyleCop>true</ExcludeFromStyleCop>
     </None>
+  </ItemGroup>
+
+  <ItemGroup>
+    <None Include="..\..\.editorconfig" Link=".editorconfig" />
   </ItemGroup>  
 
 </Project>

+ 5 - 0
src/SharpGLTF.Core/Transforms/Matrix4x4Double.cs

@@ -13,6 +13,11 @@ namespace SharpGLTF.Transforms
 
     [StructLayout(LayoutKind.Sequential)]
     [DebuggerTypeProxy(typeof(Diagnostics._Matrix4x4DoubleProxy))]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.SpacingRules", "SA1005:Single line comments should begin with single space", Justification = "External code")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1642:Constructor summary documentation should begin with standard text", Justification = "External code")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1611:Element parameters should be documented", Justification = "External code")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1119:Statement should not use unnecessary parenthesis", Justification = "External code")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2225:Operator overloads have named alternates", Justification = "External code")]
     public struct Matrix4x4Double : IEquatable<Matrix4x4Double>
     {
         #region constants

+ 1 - 1
src/SharpGLTF.Core/Validation/ModelException.cs

@@ -84,7 +84,7 @@ namespace SharpGLTF.Validation
 
             var gen = mex._Generator;
 
-            if (gen.ToLower().Contains("sharpgltf"))
+            if (gen.ToLowerInvariant().Contains("sharpgltf"))
             {
                 mex.MessageSuffix = $"Model generated by <{gen}> seems to be malformed.";
                 return;

+ 1 - 1
src/SharpGLTF.Toolkit/Geometry/MeshBuilder.cs

@@ -61,7 +61,7 @@ namespace SharpGLTF.Geometry
 
         Object ICloneable.Clone()
         {
-            return new MeshBuilder<TMaterial, TvG, TvM,TvS>(this);
+            return new MeshBuilder<TMaterial, TvG, TvM, TvS>(this);
         }
 
         IMeshBuilder<TMaterial> IMeshBuilder<TMaterial>.Clone(Func<TMaterial, TMaterial> materialCloneCallback)

+ 1 - 1
tests/SharpGLTF.Core.Tests/Schema2/LoadAndSave/LoadGeneratedTests.cs

@@ -78,7 +78,7 @@ namespace SharpGLTF.Schema2.LoadAndSave
                 }
 
                 /*
-                if (ShouldLoad && !filePath.ToLower().Contains("compatibility"))
+                if (ShouldLoad && !filePath.ToLowerInvariant().Contains("compatibility"))
                 {
                     var model = ModelRoot.Load(filePath);
                     model.AttachToCurrentTest(System.IO.Path.ChangeExtension(System.IO.Path.GetFileName(filePath), ".obj"));

+ 1 - 1
tests/SharpGLTF.DownloadTestFiles/DownloadUtils.cs

@@ -59,7 +59,7 @@ namespace SharpGLTF
                     wc.DownloadFile(remoteUri, localFilePath);
                 }
 
-                if (localFilePath.ToLower().EndsWith(".zip"))
+                if (localFilePath.ToLowerInvariant().EndsWith(".zip"))
                 {
                     Console.WriteLine($"Extracting {localFilePath}...");
 

+ 4 - 4
tests/SharpGLTF.NUnit/NUnitGltfUtils.cs

@@ -62,19 +62,19 @@ namespace SharpGLTF
 
             string validationPath = null;
 
-            if (fileName.ToLower().EndsWith(".glb"))
+            if (fileName.ToLowerInvariant().EndsWith(".glb"))
             {
                 model.SaveGLB(fileName, settings);
                 validationPath = fileName;
             }
-            else if (fileName.ToLower().EndsWith(".gltf"))
+            else if (fileName.ToLowerInvariant().EndsWith(".gltf"))
             {
                 if (settings == null) settings = new WriteSettings { JsonIndented = true };
 
                 model.Save(fileName, settings);
                 validationPath = fileName;
             }
-            else if (fileName.ToLower().EndsWith(".obj"))
+            else if (fileName.ToLowerInvariant().EndsWith(".obj"))
             {
                 // skip exporting to obj if gpu instancing is there
                 if (Node.Flatten(model.DefaultScene).Any(n => n.GetGpuInstancing() != null)) return fileName;                
@@ -82,7 +82,7 @@ namespace SharpGLTF
                 fileName = fileName.Replace(" ", "_");
                 model.SaveAsWavefront(fileName);
             }
-            else if (fileName.ToLower().EndsWith(".plotly"))
+            else if (fileName.ToLowerInvariant().EndsWith(".plotly"))
             {
                 fileName = fileName.Replace(".plotly", ".html");
 

+ 1 - 1
tests/SharpGLTF.NUnit/Plotting.cs

@@ -240,7 +240,7 @@ namespace SharpGLTF
     {
         public static void AttachToCurrentTest(this Plotting.Point2Series points, string fileName)
         {
-            System.Diagnostics.Debug.Assert(fileName.ToLower().EndsWith(".html"));
+            System.Diagnostics.Debug.Assert(fileName.ToLowerInvariant().EndsWith(".html"));
 
             fileName = NUnit.Framework.TestContext.CurrentContext.GetAttachmentPath(fileName);
 

+ 4 - 4
tests/SharpGLTF.NUnit/TestFiles.cs

@@ -26,7 +26,7 @@ namespace SharpGLTF
             {
                 _TestFilesDir = System.IO.Path.Combine(wdir, "TestFiles");
 
-                if (wdir.ToLower().EndsWith("tests") && System.IO.Directory.Exists(_TestFilesDir))
+                if (wdir.ToLowerInvariant().EndsWith("tests") && System.IO.Directory.Exists(_TestFilesDir))
                 {
                     examplesFound = true;
                     break;
@@ -198,8 +198,8 @@ namespace SharpGLTF
             var files = GetModelPathsInDirectory(_BabylonJsMeshesDir);
 
             return files
-                .Where(item => !item.ToLower().Contains("gltf-draco"))
-                .Where(item => !item.ToLower().Contains("gltf-meshopt")) // not supported yet
+                .Where(item => !item.ToLowerInvariant().Contains("gltf-draco"))
+                .Where(item => !item.ToLowerInvariant().Contains("gltf-meshopt")) // not supported yet
                 .Where(item => skipAlways.All(f => !item.Contains(f)))                
                 .OrderBy(item => item)                
                 .ToList();
@@ -218,7 +218,7 @@ namespace SharpGLTF
         public static IEnumerable<string> GetMeshIntancingModelPaths()
         {
             var fromBabylon = GetBabylonJSModelsPaths()
-                .Where(item => item.ToLower().Contains("teapot"));
+                .Where(item => item.ToLowerInvariant().Contains("teapot"));
 
             var meshInstPath = _UsingInternalFiles("gltf-GpuMeshInstancing");