You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/09/30 09:28:51 UTC

[1/3] ignite git commit: IGNITE-1282: Added FxCop warnings suppression.

Repository: ignite
Updated Branches:
  refs/heads/ignite-1282 f6111b559 -> b9256a1e7


http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs
index 9efaf5f..3938d35 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs
@@ -1052,6 +1052,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged
         
         #region HELPERS
 
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         private void SafeCall(Action func, bool allowUnitialized = false)
         {
             if (!allowUnitialized)
@@ -1067,6 +1068,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged
             }
         }
 
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         private T SafeCall<T>(Func<T> func, bool allowUnitialized = false)
         {
             if (!allowUnitialized)

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedNonReleaseableTarget.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedNonReleaseableTarget.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedNonReleaseableTarget.cs
index 24db5a5..fe2de77 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedNonReleaseableTarget.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedNonReleaseableTarget.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Impl.Unmanaged
 {
     using System;
+    using System.Diagnostics.CodeAnalysis;
 
     /// <summary>
     /// Unmanaged target which does not require explicit release.
@@ -60,6 +61,8 @@ namespace Apache.Ignite.Core.Impl.Unmanaged
         }
 
         /** <inheritdoc /> */
+        [SuppressMessage("Microsoft.Usage", "CA1816:CallGCSuppressFinalizeCorrectly",
+            Justification = "There is no finalizer.")]
         public void Dispose()
         {
             // No-op.

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs
index c55d92f..34da332 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged
 {
     using System;
     using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
     using System.Runtime.InteropServices;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Impl.Common;
@@ -403,6 +404,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged
         /// Initializer.
         /// </summary>
         [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations")]
+        [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
         static UnmanagedUtils()
         {
             var path = IgniteUtils.UnpackEmbeddedResource(IgniteUtils.FileIgniteJniDll);
@@ -1253,9 +1255,13 @@ namespace Apache.Ignite.Core.Impl.Unmanaged
             var procPtr = NativeMethods.GetProcAddress(Ptr, procName);
 
             if (procPtr == IntPtr.Zero)
-                throw new IgniteException(string.Format("Unable to find native function: {0} (Error code: {1}). " +
-                                                      "Make sure that module.def is up to date",
-                    procName, Marshal.GetLastWin32Error()));
+            {
+                var error = Marshal.GetLastWin32Error();
+
+                throw new IgniteException(string.Format(CultureInfo.InvariantCulture,
+                    "Unable to find native function: {0} (Error code: {1}). Make sure that module.def is up to date",
+                    procName, error));
+            }
 
             return TypeCaster<T>.Cast(Marshal.GetDelegateForFunctionPointer(procPtr, typeof (T)));
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs
index 3da8dec..9855d84 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs
@@ -17,6 +17,8 @@
 
 namespace Apache.Ignite.Core.Portable
 {
+    using System.Diagnostics.CodeAnalysis;
+
     /// <summary>
     /// Wrapper for serialized portable objects.
     /// </summary>
@@ -34,6 +36,8 @@ namespace Apache.Ignite.Core.Portable
         /// Gets object metadata.
         /// </summary>
         /// <returns>Metadata.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
+            Justification = "Expensive operation.")]
         IPortableMetadata GetMetadata();
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Portable/PortableConfiguration.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/PortableConfiguration.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/PortableConfiguration.cs
index 39878c2..f83580c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/PortableConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/PortableConfiguration.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Portable
 {
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
 
     /// <summary>
     /// Portable type configuration.
@@ -59,6 +60,7 @@ namespace Apache.Ignite.Core.Portable
         /// <summary>
         /// Type configurations.
         /// </summary>
+        [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
         public ICollection<PortableTypeConfiguration> TypeConfigurations
         {
             get;
@@ -68,6 +70,7 @@ namespace Apache.Ignite.Core.Portable
         /// <summary>
         /// Portable types. Shorthand for creating PortableTypeConfiguration.
         /// </summary>
+        [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
         public ICollection<string> Types
         {
             get;

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs
index fff25c3..ec1a044 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Services
 {
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Common;
 
@@ -124,6 +125,8 @@ namespace Apache.Ignite.Core.Services
         /// Gets metadata about all deployed services.
         /// </summary>
         /// <returns>Metadata about all deployed services.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
+            Justification = "Expensive operation.")]
         ICollection<IServiceDescriptor> GetServiceDescriptors();
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs
index 83f12a5..a3be198 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Transactions
 {
     using System;
+    using System.Diagnostics.CodeAnalysis;
 
     /// <summary>
     /// Transactions facade.
@@ -63,6 +64,8 @@ namespace Apache.Ignite.Core.Transactions
         /// <summary>
         /// Gets the metrics.
         /// </summary>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", 
+            Justification = "Expensive operation.")]
         ITransactionMetrics GetMetrics();
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.FxCop
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.FxCop b/modules/platforms/dotnet/Apache.Ignite.FxCop
new file mode 100644
index 0000000..9345c19
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.FxCop
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FxCopProject Version="1.36" Name="Apache Ignite">
+ <ProjectOptions>
+  <SharedProject>True</SharedProject>
+  <Stylesheet Apply="False" />
+  <SaveMessages>
+   <Project Status="Active, Excluded" NewOnly="False" />
+   <Report Status="Active" NewOnly="False" />
+  </SaveMessages>
+  <ProjectFile Compress="True" DefaultTargetCheck="True" DefaultRuleCheck="True" SaveByRuleGroup="" Deterministic="True" />
+  <EnableMultithreadedLoad>True</EnableMultithreadedLoad>
+  <EnableMultithreadedAnalysis>True</EnableMultithreadedAnalysis>
+  <SourceLookup>True</SourceLookup>
+  <AnalysisExceptionsThreshold>10</AnalysisExceptionsThreshold>
+  <RuleExceptionsThreshold>1</RuleExceptionsThreshold>
+  <Spelling Locale="en-US" />
+  <OverrideRuleVisibilities>False</OverrideRuleVisibilities>
+  <CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" />
+  <SearchGlobalAssemblyCache>False</SearchGlobalAssemblyCache>
+  <DeadlockDetectionTimeout>120</DeadlockDetectionTimeout>
+  <IgnoreGeneratedCode>False</IgnoreGeneratedCode>
+ </ProjectOptions>
+ <Targets>
+  <Target Name="$(ProjectDir)/Apache.Ignite.Core/bin/x64/Debug/Apache.Ignite.Core.dll" Analyze="True" AnalyzeAllChildren="True" />
+ </Targets>
+ <Rules>
+  <RuleFiles>
+   <RuleFile Name="$(FxCopDir)\Rules\DesignRules.dll" Enabled="True" AllRulesEnabled="False">
+    <Rule Name="AbstractTypesShouldNotHaveConstructors" Enabled="True" />
+    <Rule Name="AvoidEmptyInterfaces" Enabled="True" />
+    <Rule Name="AvoidOutParameters" Enabled="True" />
+    <Rule Name="CollectionsShouldImplementGenericInterface" Enabled="True" />
+    <Rule Name="ConsiderPassingBaseTypesAsParameters" Enabled="True" />
+    <Rule Name="DeclareEventHandlersCorrectly" Enabled="True" />
+    <Rule Name="DeclareTypesInNamespaces" Enabled="True" />
+    <Rule Name="DefineAccessorsForAttributeArguments" Enabled="True" />
+    <Rule Name="DoNotCatchGeneralExceptionTypes" Enabled="True" />
+    <Rule Name="DoNotDeclareProtectedMembersInSealedTypes" Enabled="True" />
+    <Rule Name="DoNotDeclareStaticMembersOnGenericTypes" Enabled="True" />
+    <Rule Name="DoNotDeclareVirtualMembersInSealedTypes" Enabled="True" />
+    <Rule Name="DoNotDeclareVisibleInstanceFields" Enabled="True" />
+    <Rule Name="DoNotExposeGenericLists" Enabled="True" />
+    <Rule Name="DoNotHideBaseClassMethods" Enabled="True" />
+    <Rule Name="DoNotOverloadOperatorEqualsOnReferenceTypes" Enabled="True" />
+    <Rule Name="DoNotPassTypesByReference" Enabled="True" />
+    <Rule Name="DoNotRaiseExceptionsInUnexpectedLocations" Enabled="True" />
+    <Rule Name="EnumeratorsShouldBeStronglyTyped" Enabled="True" />
+    <Rule Name="EnumsShouldHaveZeroValue" Enabled="True" />
+    <Rule Name="EnumStorageShouldBeInt32" Enabled="True" />
+    <Rule Name="ExceptionsShouldBePublic" Enabled="True" />
+    <Rule Name="ICollectionImplementationsHaveStronglyTypedMembers" Enabled="True" />
+    <Rule Name="ImplementIDisposableCorrectly" Enabled="True" />
+    <Rule Name="ImplementStandardExceptionConstructors" Enabled="True" />
+    <Rule Name="IndexersShouldNotBeMultidimensional" Enabled="True" />
+    <Rule Name="InterfaceMethodsShouldBeCallableByChildTypes" Enabled="True" />
+    <Rule Name="ListsAreStronglyTyped" Enabled="True" />
+    <Rule Name="MarkAssembliesWithAssemblyVersion" Enabled="True" />
+    <Rule Name="MarkAssembliesWithClsCompliant" Enabled="True" />
+    <Rule Name="MarkAssembliesWithComVisible" Enabled="True" />
+    <Rule Name="MarkAttributesWithAttributeUsage" Enabled="True" />
+    <Rule Name="MarkEnumsWithFlags" Enabled="True" />
+    <Rule Name="MembersShouldNotExposeCertainConcreteTypes" Enabled="True" />
+    <Rule Name="MovePInvokesToNativeMethodsClass" Enabled="True" />
+    <Rule Name="NestedTypesShouldNotBeVisible" Enabled="True" />
+    <Rule Name="OverloadOperatorEqualsOnOverloadingAddAndSubtract" Enabled="True" />
+    <Rule Name="OverrideMethodsOnComparableTypes" Enabled="True" />
+    <Rule Name="PropertiesShouldNotBeWriteOnly" Enabled="True" />
+    <Rule Name="ProvideObsoleteAttributeMessage" Enabled="True" />
+    <Rule Name="ReplaceRepetitiveArgumentsWithParamsArray" Enabled="True" />
+    <Rule Name="StaticHolderTypesShouldBeSealed" Enabled="True" />
+    <Rule Name="StaticHolderTypesShouldNotHaveConstructors" Enabled="True" />
+    <Rule Name="StringUriOverloadsCallSystemUriOverloads" Enabled="True" />
+    <Rule Name="TypesShouldNotExtendCertainBaseTypes" Enabled="True" />
+    <Rule Name="TypesThatOwnDisposableFieldsShouldBeDisposable" Enabled="True" />
+    <Rule Name="TypesThatOwnNativeResourcesShouldBeDisposable" Enabled="True" />
+    <Rule Name="UriParametersShouldNotBeStrings" Enabled="True" />
+    <Rule Name="UriPropertiesShouldNotBeStrings" Enabled="True" />
+    <Rule Name="UriReturnValuesShouldNotBeStrings" Enabled="True" />
+    <Rule Name="UseEventsWhereAppropriate" Enabled="True" />
+    <Rule Name="UseGenericEventHandlerInstances" Enabled="True" />
+    <Rule Name="UseGenericsWhereAppropriate" Enabled="True" />
+    <Rule Name="UseIntegralOrStringArgumentForIndexers" Enabled="True" />
+    <Rule Name="UsePropertiesWhereAppropriate" Enabled="True" />
+   </RuleFile>
+   <RuleFile Name="$(FxCopDir)\Rules\GlobalizationRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\InteroperabilityRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\MobilityRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\NamingRules.dll" Enabled="True" AllRulesEnabled="False">
+    <Rule Name="CompoundWordsShouldBeCasedCorrectly" Enabled="True" />
+    <Rule Name="DoNotNameEnumValuesReserved" Enabled="True" />
+    <Rule Name="DoNotPrefixEnumValuesWithTypeName" Enabled="True" />
+    <Rule Name="EventsShouldNotHaveBeforeOrAfterPrefix" Enabled="True" />
+    <Rule Name="FlagsEnumsShouldHavePluralNames" Enabled="True" />
+    <Rule Name="IdentifiersShouldDifferByMoreThanCase" Enabled="True" />
+    <Rule Name="IdentifiersShouldHaveCorrectPrefix" Enabled="True" />
+    <Rule Name="IdentifiersShouldHaveCorrectSuffix" Enabled="True" />
+    <Rule Name="IdentifiersShouldNotContainUnderscores" Enabled="True" />
+    <Rule Name="IdentifiersShouldNotHaveIncorrectPrefix" Enabled="True" />
+    <Rule Name="IdentifiersShouldNotHaveIncorrectSuffix" Enabled="True" />
+    <Rule Name="OnlyFlagsEnumsShouldHavePluralNames" Enabled="True" />
+    <Rule Name="ParameterNamesShouldMatchBaseDeclaration" Enabled="True" />
+    <Rule Name="ParameterNamesShouldNotMatchMemberNames" Enabled="True" />
+    <Rule Name="PropertyNamesShouldNotMatchGetMethods" Enabled="True" />
+    <Rule Name="ResourceStringCompoundWordsShouldBeCasedCorrectly" Enabled="True" />
+    <Rule Name="ResourceStringsShouldBeSpelledCorrectly" Enabled="True" />
+    <Rule Name="TypeNamesShouldNotMatchNamespaces" Enabled="True" />
+   </RuleFile>
+   <RuleFile Name="$(FxCopDir)\Rules\PerformanceRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\PortabilityRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\SecurityRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\UsageRules.dll" Enabled="True" AllRulesEnabled="True" />
+  </RuleFiles>
+  <Groups />
+  <Settings />
+ </Rules>
+ <FxCopReport Version="1.36" />
+</FxCopProject>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.sln
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.sln b/modules/platforms/dotnet/Apache.Ignite.sln
index 77e7f3a..64355aa 100644
--- a/modules/platforms/dotnet/Apache.Ignite.sln
+++ b/modules/platforms/dotnet/Apache.Ignite.sln
@@ -20,6 +20,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.ExamplesDll",
 		{27F7F3C6-BDDE-43A9-B565-856F8395A04B} = {27F7F3C6-BDDE-43A9-B565-856F8395A04B}
 	EndProjectSection
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E0784F76-949C-456E-A529-A55D0E389165}"
+	ProjectSection(SolutionItems) = preProject
+		Apache.Ignite.FxCop = Apache.Ignite.FxCop
+		Apache.Ignite.sln.DotSettings = Apache.Ignite.sln.DotSettings
+	EndProjectSection
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|x64 = Debug|x64

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index faf867e..66a65bc 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -738,6 +738,13 @@
                                         <exclude>ipc/shmem/igniteshmem/.deps/*</exclude><!--tmp files-->
                                         <exclude>ipc/shmem/igniteshmem/libigniteshmem.la</exclude><!--tmp (not under VCS)-->
                                         <exclude>ipc/shmem/igniteshmem/libigniteshmem_la-org_apache_ignite_internal_util_ipc_shmem_IpcSharedMemoryUtils.lo</exclude><!--tmp (not under VCS)-->
+                                        <!--platform-->
+                                        <exclude>src/main/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj</exclude>
+                                        <exclude>src/main/dotnet/Apache.Ignite.sln</exclude>
+                                        <exclude>src/main/dotnet/Apache.Ignite.sln.DotSettings</exclude>
+                                        <exclude>src/main/java/META-INF/services/org.apache.ignite.internal.processors.platform.PlatformBootstrapFactory</exclude>
+                                        <exclude>src/main/resources/META-INF/services/org.apache.ignite.internal.processors.platform.PlatformBootstrapFactory</exclude>
+                                        <exclude>src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj</exclude>
                                         <exclude>src/test/portables/repo/org/apache/ignite/portable/test1/1.1/test1-1.1.jar</exclude>
                                         <exclude>src/test/portables/repo/org/apache/ignite/portable/test2/1.1/test2-1.1.jar</exclude>
                                         <!--platforms-->
@@ -746,8 +753,9 @@
                                         <exclude>**/configure.ac</exclude>
                                         <exclude>**/*.pc.in</exclude>
                                         <exclude>**/*.sln</exclude>
-                                        <exclude>**/*.slnrel</exclude>
+                                        <exclude>**/*.slnrel</exclude>                                        
                                         <exclude>**/*.sln.DotSettings</exclude>
+                                        <exclude>**/*.FxCop</exclude>
                                         <exclude>**/*.csproj</exclude>
                                         <exclude>**/*.csprojrel</exclude>
                                         <exclude>**/*.vcxproj</exclude>


[3/3] ignite git commit: IGNITE-1282: Added FxCop warnings suppression.

Posted by vo...@apache.org.
IGNITE-1282: Added FxCop warnings suppression.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b9256a1e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b9256a1e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b9256a1e

Branch: refs/heads/ignite-1282
Commit: b9256a1e7ead475277e8ef2504a736b74ca58ebf
Parents: f6111b5
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Wed Sep 30 10:29:30 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Sep 30 10:29:30 2015 +0300

----------------------------------------------------------------------
 .../Compute/TaskAdapterTest.cs                  |   8 +-
 .../Compute/TaskResultTest.cs                   |   4 +-
 .../Apache.Ignite.Core.Tests/EventsTest.cs      |   2 +-
 .../Apache.Ignite.Core.csproj                   |   5 +-
 .../Cache/Expiry/IExpiryPolicy.cs               |   4 +
 .../dotnet/Apache.Ignite.Core/Cache/ICache.cs   |   4 +
 .../Query/Continuous/IContinuousQueryHandle.cs  |   2 +
 .../Cache/Query/IQueryCursor.cs                 |   4 +
 .../Apache.Ignite.Core/Cache/Query/SqlQuery.cs  |  33 +--
 .../Apache.Ignite.Core/Cache/Query/TextQuery.cs |  42 +--
 .../Store/CacheParallelLoadStoreAdapter.cs      |   2 +
 .../Apache.Ignite.Core/Cluster/ICluster.cs      |   2 +
 .../Apache.Ignite.Core/Cluster/IClusterGroup.cs |   8 +
 .../Cluster/IClusterMetrics.cs                  | 286 ++++---------------
 .../Apache.Ignite.Core/Cluster/IClusterNode.cs  |   3 +
 .../Apache.Ignite.Core/Common/IgniteGuid.cs     |   4 +-
 .../Compute/ComputeJobAdapter.cs                |  16 +-
 .../Apache.Ignite.Core/Compute/IComputeJob.cs   |   1 +
 .../Apache.Ignite.Core/Events/CacheEvent.cs     |   4 +-
 .../Events/CacheQueryExecutedEvent.cs           |   6 +-
 .../Events/CacheQueryReadEvent.cs               |   8 +-
 .../Events/CacheRebalancingEvent.cs             |   8 +-
 .../Events/CheckpointEvent.cs                   |   3 +-
 .../Apache.Ignite.Core/Events/DiscoveryEvent.cs |   4 +-
 .../Apache.Ignite.Core/Events/EventBase.cs      |  13 +-
 .../Apache.Ignite.Core/Events/EventType.cs      | 181 +++++++++---
 .../dotnet/Apache.Ignite.Core/Events/IEvent.cs  |   2 +-
 .../Apache.Ignite.Core/Events/JobEvent.cs       |   8 +-
 .../Apache.Ignite.Core/Events/SwapSpaceEvent.cs |   3 +-
 .../Apache.Ignite.Core/Events/TaskEvent.cs      |   6 +-
 .../dotnet/Apache.Ignite.Core/IIgnite.cs        |   8 +
 .../Apache.Ignite.Core/IgniteConfiguration.cs   |   3 +
 .../dotnet/Apache.Ignite.Core/Ignition.cs       |  13 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheEntry.cs |   3 +-
 .../Cache/CacheEntryProcessorResultHolder.cs    |   5 +-
 .../Impl/Cache/CacheEnumeratorProxy.cs          |   3 +
 .../Continuous/ContinuousQueryHandleImpl.cs     |   3 +
 .../Impl/Cluster/ClusterGroupImpl.cs            |   2 +-
 .../Impl/Cluster/ClusterMetricsImpl.cs          |   8 +-
 .../Impl/Collections/MultiValueDictionary.cs    |   2 +
 .../Impl/Common/CompletedAsyncResult.cs         |  11 -
 .../Common/CopyOnWriteConcurrentDictionary.cs   |   2 +
 .../Impl/Common/DelegateTypeDescriptor.cs       |   6 +-
 .../Apache.Ignite.Core/Impl/Common/Future.cs    |   3 +-
 .../Impl/Common/FutureType.cs                   |   3 +
 .../Impl/Common/IgniteArgumentCheck.cs          |  13 +-
 .../Impl/Common/TypeCaster.cs                   |   7 +
 .../Impl/Compute/ComputeAsync.cs                |   6 +-
 .../Impl/Datastream/DataStreamerBatch.cs        |   1 +
 .../Impl/Datastream/DataStreamerImpl.cs         |   8 +
 .../Apache.Ignite.Core/Impl/ExceptionUtils.cs   |   4 +
 .../Impl/Handle/HandleRegistry.cs               |   5 +-
 .../dotnet/Apache.Ignite.Core/Impl/Ignite.cs    |   5 +
 .../Apache.Ignite.Core/Impl/IgniteManager.cs    |  27 +-
 .../Apache.Ignite.Core/Impl/IgniteProxy.cs      |   3 +
 .../Apache.Ignite.Core/Impl/IgniteUtils.cs      |  16 +-
 .../Impl/Memory/PlatformMemory.cs               |  14 +-
 .../Impl/Memory/PlatformMemoryManager.cs        |   2 +-
 .../Impl/Memory/PlatformMemoryPool.cs           |  10 +-
 .../Impl/Memory/PlatformMemoryStream.cs         |  80 ++++--
 .../Impl/Memory/PlatformMemoryUtils.cs          |  40 +--
 .../Impl/Memory/PlatformPooledMemory.cs         |  14 +-
 .../Impl/Memory/PlatformUnpooledMemory.cs       |   6 +-
 .../Impl/Portable/Io/IPortableStream.cs         |   2 +
 .../Impl/Portable/Io/PortableAbstractStream.cs  |  58 ++--
 .../Impl/Portable/PortableBuilderImpl.cs        |  18 +-
 .../Impl/Portable/PortableMarshaller.cs         |   3 +-
 .../Impl/Portable/PortableSystemHandlers.cs     |   9 +-
 .../Impl/Portable/PortableUtils.cs              |   8 +-
 .../Impl/Portable/PortablesImpl.cs              |  13 -
 .../Impl/Portable/TypeResolver.cs               |   8 +-
 .../Impl/Services/ServiceProxyInvoker.cs        |  17 +-
 .../Impl/Transactions/Transaction.cs            |   3 +
 .../Impl/Transactions/TransactionImpl.cs        |   6 +-
 .../Impl/Unmanaged/UnmanagedCallbacks.cs        |   2 +
 .../Unmanaged/UnmanagedNonReleaseableTarget.cs  |   3 +
 .../Impl/Unmanaged/UnmanagedUtils.cs            |  12 +-
 .../Portable/IPortableObject.cs                 |   4 +
 .../Portable/PortableConfiguration.cs           |   3 +
 .../Apache.Ignite.Core/Services/IServices.cs    |   3 +
 .../Transactions/ITransactions.cs               |   3 +
 modules/platforms/dotnet/Apache.Ignite.FxCop    | 117 ++++++++
 modules/platforms/dotnet/Apache.Ignite.sln      |   6 +
 parent/pom.xml                                  |  10 +-
 84 files changed, 768 insertions(+), 552 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskAdapterTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskAdapterTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskAdapterTest.cs
index f7fb422..7c4d52e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskAdapterTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskAdapterTest.cs
@@ -223,11 +223,11 @@ namespace Apache.Ignite.Core.Tests.Compute
 
                 Assert.NotNull(_grid);
 
-                int arg1 = Argument<int>(0);
+                int arg1 = GetArgument<int>(0);
 
                 Assert.AreEqual(100, arg1);
 
-                string arg2 = Argument<string>(1);
+                string arg2 = GetArgument<string>(1);
 
                 Assert.AreEqual("str", arg2);
 
@@ -259,11 +259,11 @@ namespace Apache.Ignite.Core.Tests.Compute
 
                 Assert.NotNull(_grid);
 
-                int arg1 = Argument<int>(0);
+                int arg1 = GetArgument<int>(0);
 
                 Assert.AreEqual(100, arg1);
 
-                string arg2 = Argument<string>(1);
+                string arg2 = GetArgument<string>(1);
 
                 Assert.AreEqual("str", arg2);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskResultTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskResultTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskResultTest.cs
index e7c5ac9..0073d47 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskResultTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/TaskResultTest.cs
@@ -407,7 +407,7 @@ namespace Apache.Ignite.Core.Tests.Compute
 
                 _gridName = _grid.Name;
 
-                T res = Argument<T>(0);
+                T res = GetArgument<T>(0);
 
                 return res;
             }
@@ -428,7 +428,7 @@ namespace Apache.Ignite.Core.Tests.Compute
 
                 _gridName = _grid.Name;
 
-                PortableResult res = Argument<PortableResult>(0);
+                PortableResult res = GetArgument<PortableResult>(0);
 
                 return res;
             }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core.Tests/EventsTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/EventsTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/EventsTest.cs
index aa103d4..fa2fddc 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/EventsTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/EventsTest.cs
@@ -578,7 +578,7 @@ namespace Apache.Ignite.Core.Tests
             Assert.AreEqual(EventType.EvtSwapSpaceCleared, evt.Type);
             Assert.IsNotNullOrEmpty(evt.Name);
             Assert.AreNotEqual(Guid.Empty, evt.Id.GlobalId);
-            Assert.IsTrue((evt.TimeStamp - DateTime.Now).TotalSeconds < 10);
+            Assert.IsTrue((evt.Timestamp - DateTime.Now).TotalSeconds < 10);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
index 3f20324..561273a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
@@ -16,7 +16,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <OutputPath>bin\x64\Debug\</OutputPath>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    <DefineConstants>DEBUG</DefineConstants>
+    <DefineConstants>DEBUG;CODE_ANALYSIS</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
     <PlatformTarget>x64</PlatformTarget>
@@ -27,7 +27,7 @@
     <PlatformTarget>x86</PlatformTarget>
     <OutputPath>bin\x86\Debug\</OutputPath>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    <DefineConstants>DEBUG</DefineConstants>
+    <DefineConstants>DEBUG;CODE_ANALYSIS</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
     <PlatformTarget>x86</PlatformTarget>
@@ -128,6 +128,7 @@
     <Compile Include="Events\JobEvent.cs" />
     <Compile Include="Events\SwapSpaceEvent.cs" />
     <Compile Include="Events\TaskEvent.cs" />
+    <Compile Include="GlobalSuppressions.cs" />
     <Compile Include="IgniteConfiguration.cs" />
     <Compile Include="Ignition.cs" />
     <Compile Include="Common\AsyncSupportedAttribute.cs" />

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Expiry/IExpiryPolicy.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Expiry/IExpiryPolicy.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Expiry/IExpiryPolicy.cs
index ff627ae..19f18bf 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Expiry/IExpiryPolicy.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Expiry/IExpiryPolicy.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Cache.Expiry
 {
     using System;
+    using System.Diagnostics.CodeAnalysis;
 
     /// <summary>
     /// Defines functions to determine when cache entries will expire based on
@@ -34,6 +35,7 @@ namespace Apache.Ignite.Core.Cache.Expiry
         /// If <c>null</c> is returned, no change to previously understood expiry is performed.
         /// </summary>
         /// <returns>Expiry for create opeartion.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         TimeSpan? GetExpiryForCreate();
 
         /// <summary>
@@ -44,6 +46,7 @@ namespace Apache.Ignite.Core.Cache.Expiry
         /// If <c>null</c> is returned, no change to previously understood expiry is performed.
         /// </summary>
         /// <returns>Expiry for update operation.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         TimeSpan? GetExpiryForUpdate();
 
         /// <summary>
@@ -54,6 +57,7 @@ namespace Apache.Ignite.Core.Cache.Expiry
         /// If <c>null</c> is returned, no change to previously understood expiry is performed.
         /// </summary>
         /// <returns>Expiry for access operation.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         TimeSpan? GetExpiryForAccess();
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs
index 5116839..097ab66 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs
@@ -20,6 +20,7 @@ namespace Apache.Ignite.Core.Cache
     using System;
     using System.Collections;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Cache.Expiry;
     using Apache.Ignite.Core.Cache.Query;
     using Apache.Ignite.Core.Cache.Query.Continuous;
@@ -51,6 +52,7 @@ namespace Apache.Ignite.Core.Cache
     /// </summary>
     /// <typeparam name="TK">Key type.</typeparam>
     /// <typeparam name="TV">Value type.</typeparam>
+    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")]
     public interface ICache<TK, TV> : IAsyncSupport<ICache<TK, TV>>, IEnumerable<ICacheEntry<TK, TV>>
     {
         /// <summary>
@@ -518,6 +520,8 @@ namespace Apache.Ignite.Core.Cache
         /// Gets snapshot metrics (statistics) for this cache.
         /// </summary>
         /// <returns>Cache metrics.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
+            Justification = "Expensive operation.")]
         ICacheMetrics GetMetrics();
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/Continuous/IContinuousQueryHandle.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/Continuous/IContinuousQueryHandle.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/Continuous/IContinuousQueryHandle.cs
index 03f8e05..ca8131b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/Continuous/IContinuousQueryHandle.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/Continuous/IContinuousQueryHandle.cs
@@ -40,6 +40,8 @@ namespace Apache.Ignite.Core.Cache.Query.Continuous
         /// Can be called only once, throws exception on consequent calls.
         /// </summary>
         /// <returns>Initial query cursor.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
+            Justification = "Semantics: result differs from call to call.")]
         IQueryCursor<T> GetInitialQueryCursor();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/IQueryCursor.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/IQueryCursor.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/IQueryCursor.cs
index 9745765..ffa0565 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/IQueryCursor.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/IQueryCursor.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Cache.Query
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
 
     /// <summary>
     /// Query result cursor. Can be processed either in iterative mode, or by taking
@@ -28,6 +29,7 @@ namespace Apache.Ignite.Core.Cache.Query
     /// cursor lifetime. Any further attempts to get enumerator or all entries will result 
     /// in exception.
     /// </summary>
+    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")]
     public interface IQueryCursor<T> : IEnumerable<T>, IDisposable
     {
         /// <summary>
@@ -35,6 +37,8 @@ namespace Apache.Ignite.Core.Cache.Query
         /// result is relatively small and will not cause memory utilization issues.
         /// </summary>
         /// <returns>List containing all query results.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", 
+            Justification = "Expensive operation.")]
         IList<T> GetAll();
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs
index 303048b..52efc26 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs
@@ -30,10 +30,10 @@ namespace Apache.Ignite.Core.Cache.Query
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="typ">Type.</param>
+        /// <param name="queryType">Type.</param>
         /// <param name="sql">SQL.</param>
         /// <param name="args">Arguments.</param>
-        public SqlQuery(Type typ, string sql, params object[] args) : this(typ, sql, false, args)
+        public SqlQuery(Type queryType, string sql, params object[] args) : this(queryType, sql, false, args)
         {
             // No-op.
         }
@@ -41,11 +41,12 @@ namespace Apache.Ignite.Core.Cache.Query
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="typ">Type.</param>
+        /// <param name="queryType">Type.</param>
         /// <param name="sql">SQL.</param>
-        /// <param name="loc">Whether query should be executed locally.</param>
+        /// <param name="local">Whether query should be executed locally.</param>
         /// <param name="args">Arguments.</param>
-        public SqlQuery(Type typ, string sql, bool loc, params object[] args) : this(typ.Name, sql, loc, args)
+        public SqlQuery(Type queryType, string sql, bool local, params object[] args) 
+            : this(queryType.Name, sql, local, args)
         {
             // No-op.
         }
@@ -53,10 +54,10 @@ namespace Apache.Ignite.Core.Cache.Query
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="typ">Type.</param>
+        /// <param name="queryType">Type.</param>
         /// <param name="sql">SQL.</param>
         /// <param name="args">Arguments.</param>
-        public SqlQuery(string typ, string sql, params object[] args) : this(typ, sql, false, args)
+        public SqlQuery(string queryType, string sql, params object[] args) : this(queryType, sql, false, args)
         {
             // No-op.
         }
@@ -64,22 +65,22 @@ namespace Apache.Ignite.Core.Cache.Query
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="typ">Type.</param>
+        /// <param name="queryType">Type.</param>
         /// <param name="sql">SQL.</param>
-        /// <param name="loc">Whether query should be executed locally.</param>
+        /// <param name="local">Whether query should be executed locally.</param>
         /// <param name="args">Arguments.</param>
-        public SqlQuery(string typ, string sql, bool loc, params object[] args)
+        public SqlQuery(string queryType, string sql, bool local, params object[] args)
         {
-            Type = typ;
+            QueryType = queryType;
             Sql = sql;
-            Local = loc;
+            Local = local;
             Arguments = args;
         }
 
         /// <summary>
         /// Type.
         /// </summary>
-        public string Type { get; set; }
+        public string QueryType { get; set; }
 
         /// <summary>
         /// SQL.
@@ -98,13 +99,13 @@ namespace Apache.Ignite.Core.Cache.Query
             if (string.IsNullOrEmpty(Sql))
                 throw new ArgumentException("Sql cannot be null or empty");
 
-            if (string.IsNullOrEmpty(Type))
-                throw new ArgumentException("Type cannot be null or empty");
+            if (string.IsNullOrEmpty(QueryType))
+                throw new ArgumentException("QueryType cannot be null or empty");
 
             // 2. Prepare.
             writer.WriteBoolean(Local);
             writer.WriteString(Sql);
-            writer.WriteString(Type);
+            writer.WriteString(QueryType);
             writer.WriteInt(PageSize);
 
             WriteQueryArgs(writer, Arguments);

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/TextQuery.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/TextQuery.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/TextQuery.cs
index 835271b..3f52f6f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/TextQuery.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/TextQuery.cs
@@ -29,9 +29,9 @@ namespace Apache.Ignite.Core.Cache.Query
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="typ">Type.</param>
-        /// <param name="txt">Text.</param>
-        public TextQuery(Type typ, string txt) : this(typ, txt, false)
+        /// <param name="queryType">Type.</param>
+        /// <param name="text">Text.</param>
+        public TextQuery(Type queryType, string text) : this(queryType, text, false)
         {
             // No-op.
         }
@@ -39,10 +39,10 @@ namespace Apache.Ignite.Core.Cache.Query
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="typ">Type.</param>
-        /// <param name="txt">Text.</param>
-        /// <param name="loc">Whether query should be executed locally.</param>
-        public TextQuery(Type typ, string txt, bool loc) : this(typ.Name, txt, loc)
+        /// <param name="queryType">Type.</param>
+        /// <param name="text">Text.</param>
+        /// <param name="local">Whether query should be executed locally.</param>
+        public TextQuery(Type queryType, string text, bool local) : this(queryType.Name, text, local)
         {
             // No-op.
         }
@@ -50,9 +50,9 @@ namespace Apache.Ignite.Core.Cache.Query
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="typ">Type.</param>
-        /// <param name="txt">Text.</param>
-        public TextQuery(string typ, string txt) : this(typ, txt, false)
+        /// <param name="queryType">Type.</param>
+        /// <param name="text">Text.</param>
+        public TextQuery(string queryType, string text) : this(queryType, text, false)
         {
             // No-op.
         }
@@ -60,20 +60,20 @@ namespace Apache.Ignite.Core.Cache.Query
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="typ">Type.</param>
-        /// <param name="txt">Text.</param>
-        /// <param name="loc">Whether query should be executed locally.</param>
-        public TextQuery(string typ, string txt, bool loc)
+        /// <param name="queryType">Type.</param>
+        /// <param name="text">Text.</param>
+        /// <param name="local">Whether query should be executed locally.</param>
+        public TextQuery(string queryType, string text, bool local)
         {
-            Type = typ;
-            Text = txt;
-            Local = loc;
+            QueryType = queryType;
+            Text = text;
+            Local = local;
         }
 
         /// <summary>
         /// Type.
         /// </summary>
-        public string Type { get; set; }
+        public string QueryType { get; set; }
 
         /// <summary>
         /// Text.
@@ -86,12 +86,12 @@ namespace Apache.Ignite.Core.Cache.Query
             if (string.IsNullOrEmpty(Text))
                 throw new ArgumentException("Text cannot be null or empty");
 
-            if (string.IsNullOrEmpty(Type))
-                throw new ArgumentException("Type cannot be null or empty");
+            if (string.IsNullOrEmpty(QueryType))
+                throw new ArgumentException("QueryType cannot be null or empty");
 
             writer.WriteBoolean(Local);
             writer.WriteString(Text);
-            writer.WriteString(Type);
+            writer.WriteString(QueryType);
             writer.WriteInt(PageSize);
         }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Store/CacheParallelLoadStoreAdapter.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Store/CacheParallelLoadStoreAdapter.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Store/CacheParallelLoadStoreAdapter.cs
index cf4a77d..e80f1a7 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Store/CacheParallelLoadStoreAdapter.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Store/CacheParallelLoadStoreAdapter.cs
@@ -20,6 +20,7 @@ namespace Apache.Ignite.Core.Cache.Store
     using System;
     using System.Collections;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using System.Linq;
     using System.Threading.Tasks;
 
@@ -81,6 +82,7 @@ namespace Apache.Ignite.Core.Cache.Store
         /// <summary>
         /// Gets the input data sequence to be used in LoadCache.
         /// </summary>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         protected abstract IEnumerable GetInputData();
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/ICluster.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/ICluster.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/ICluster.cs
index 02d9a78..353ec34 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/ICluster.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/ICluster.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Cluster
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Common;
 
     /// <summary>
@@ -38,6 +39,7 @@ namespace Apache.Ignite.Core.Cluster
         /// Gets local Ignite node.
         /// </summary>
         /// <returns>Local Ignite node.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IClusterNode GetLocalNode();
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs
index 433ba40..4c2df73 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterGroup.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Cluster
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Compute;
     using Apache.Ignite.Core.Events;
     using Apache.Ignite.Core.Messaging;
@@ -64,6 +65,7 @@ namespace Apache.Ignite.Core.Cluster
         /// this projection.
         /// </summary>
         /// <returns>Compute instance over this grid projection.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         ICompute GetCompute();
 
         /// <summary>
@@ -181,6 +183,7 @@ namespace Apache.Ignite.Core.Cluster
         /// Gets read-only collections of nodes in this projection.
         /// </summary>
         /// <returns>All nodes in this projection.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         ICollection<IClusterNode> GetNodes();
 
         /// <summary>
@@ -195,12 +198,14 @@ namespace Apache.Ignite.Core.Cluster
         /// Gets first node from the list of nodes in this projection.
         /// </summary>
         /// <returns>Node.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IClusterNode GetNode();
 
         /// <summary>
         /// Gets a metrics snapshot for this projection
         /// </summary>
         /// <returns>Grid projection metrics snapshot.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IClusterMetrics GetMetrics();
 
         /// <summary>
@@ -208,6 +213,7 @@ namespace Apache.Ignite.Core.Cluster
         /// <see cref="IMessaging"/>> instance will only include nodes from current cluster group.
         /// </summary>
         /// <returns>Messaging instance over this cluster group.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IMessaging GetMessaging();
 
         /// <summary>
@@ -215,6 +221,7 @@ namespace Apache.Ignite.Core.Cluster
         /// <see cref="IEvents"/>> instance will only include nodes from current cluster group.
         /// </summary>
         /// <returns>Events instance over this cluster group.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IEvents GetEvents();
 
         /// <summary>
@@ -222,6 +229,7 @@ namespace Apache.Ignite.Core.Cluster
         /// <see cref="IServices"/>> instance will only include nodes from current cluster group.
         /// </summary>
         /// <returns>Services instance over this cluster group.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IServices GetServices();
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterMetrics.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterMetrics.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterMetrics.cs
index 4ea690c..d0a51aa 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterMetrics.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterMetrics.cs
@@ -36,259 +36,163 @@ namespace Apache.Ignite.Core.Cluster
         /// <summary>
         /// Last update time of this node metrics.
         /// </summary>
-        DateTime LastUpdateTime
-        {
-            get;
-        }
+        DateTime LastUpdateTime { get; }
 
         /// <summary>
         /// Maximum number of jobs that ever ran concurrently on this node.
         /// </summary>
-        int MaximumActiveJobs
-        {
-            get;
-        }
+        int MaximumActiveJobs { get; }
 
         /// <summary>
         /// Number of currently active jobs concurrently executing on the node.
         /// </summary>
-        int CurrentActiveJobs
-        {
-            get;
-        }
+        int CurrentActiveJobs { get; }
 
         /// <summary>
         /// Average number of active jobs. 
         /// </summary>
-        float AverageActiveJobs
-        {
-            get;
-        }
+        float AverageActiveJobs { get; }
 
         /// <summary>
         /// Maximum number of waiting jobs.
         /// </summary>
-        int MaximumWaitingJobs
-        {
-            get;
-        }
-        
+        int MaximumWaitingJobs { get; }
+
         /// <summary>
         /// Number of queued jobs currently waiting to be executed.
         /// </summary>
-        int CurrentWaitingJobs
-        {
-            get;
-        }
+        int CurrentWaitingJobs { get; }
 
         /// <summary>
         /// Average number of waiting jobs.
         /// </summary>
-        float AverageWaitingJobs
-        {
-            get;
-        }
+        float AverageWaitingJobs { get; }
 
         /// <summary>
         /// Maximum number of jobs rejected at once.
         /// </summary>
-        int MaximumRejectedJobs
-        {
-            get;
-        }
+        int MaximumRejectedJobs { get; }
 
         /// <summary>
         /// Number of jobs rejected after more recent collision resolution operation.
         /// </summary>
-        int CurrentRejectedJobs
-        {
-            get;
-        }
+        int CurrentRejectedJobs { get; }
 
         /// <summary>
         /// Average number of jobs this node rejects during collision resolution operations.
         /// </summary>
-        float AverageRejectedJobs
-        {
-            get;
-        }
+        float AverageRejectedJobs { get; }
 
         /// <summary>
         /// Total number of jobs this node rejects during collision resolution operations since node startup.
         /// </summary>
-        int TotalRejectedJobs
-        {
-            get;
-        }
+        int TotalRejectedJobs { get; }
 
         /// <summary>
         /// Maximum number of cancelled jobs ever had running concurrently.
         /// </summary>
-        int MaximumCancelledJobs
-        {
-            get;
-        }
+        int MaximumCancelledJobs { get; }
 
         /// <summary>
         /// Number of cancelled jobs that are still running.
         /// </summary>
-        int CurrentCancelledJobs
-        {
-            get;
-        }
+        int CurrentCancelledJobs { get; }
 
         /// <summary>
         /// Average number of cancelled jobs.
         /// </summary>
-        float AverageCancelledJobs
-        {
-            get;
-        }
+        float AverageCancelledJobs { get; }
 
         /// <summary>
         /// Total number of cancelled jobs since node startup.
         /// </summary>
-        int TotalCancelledJobs
-        {
-            get;
-        }
+        int TotalCancelledJobs { get; }
 
         /// <summary>
         /// Total number of jobs handled by the node since node startup.
         /// </summary>
-        int TotalExecutedJobs
-        {
-            get;
-        }
+        int TotalExecutedJobs { get; }
 
         /// <summary>
         /// Maximum time a job ever spent waiting in a queue to be executed.
         /// </summary>
-        long MaximumJobWaitTime
-        {
-            get;
-        }
+        long MaximumJobWaitTime { get; }
 
         /// <summary>
         /// Current time an oldest jobs has spent waiting to be executed.
         /// </summary>
-        long CurrentJobWaitTime
-        {
-            get;
-        }
+        long CurrentJobWaitTime { get; }
 
         /// <summary>
         /// Average time jobs spend waiting in the queue to be executed.
         /// </summary>
-        double AverageJobWaitTime
-        {
-            get;
-        }
+        double AverageJobWaitTime { get; }
 
         /// <summary>
         /// Time it took to execute the longest job on the node.
         /// </summary>
-        long MaximumJobExecuteTime
-        {
-            get;
-        }
+        long MaximumJobExecuteTime { get; }
 
         /// <summary>
         /// Longest time a current job has been executing for.
         /// </summary>
-        long CurrentJobExecuteTime
-        {
-            get;
-        }
+        long CurrentJobExecuteTime { get; }
 
         /// <summary>
         /// Average job execution time.
         /// </summary>
-        double AverageJobExecuteTime
-        {
-            get;
-        }
+        double AverageJobExecuteTime { get; }
 
         /// <summary>
         /// Total number of jobs handled by the node. 
         /// </summary>
-        int TotalExecutedTasks
-        {
-            get;
-        }
+        int TotalExecutedTasks { get; }
 
         /// <summary>
         /// Total time this node spent executing jobs.
         /// </summary>
-        long TotalBusyTime
-        {
-            get;
-        }
+        long TotalBusyTime { get; }
 
         /// <summary>
         /// Total time this node spent idling.
         /// </summary>
-        long TotalIdleTime
-        {
-            get;
-        }
+        long TotalIdleTime { get; }
 
         /// <summary>
         /// Time this node spend idling since executing last job.
         /// </summary>
-        long CurrentIdleTime
-        {
-            get;
-        }
+        long CurrentIdleTime { get; }
 
         /// <summary>
         /// Percentage of time this node is busy.
         /// </summary>
-        float BusyTimePercentage
-        {
-            get;
-        }
+        float BusyTimePercentage { get; }
 
         /// <summary>
         /// Percentage of time this node is idle
         /// </summary>
-        float IdleTimePercentage
-        {
-            get;
-        }
+        float IdleTimePercentage { get; }
 
         /// <summary>
         /// Returns the number of CPUs available to the Java Virtual Machine.
         /// </summary>
-        int TotalCpus
-        {
-            get;
-        }
+        int TotalCpus { get; }
 
         /// <summary>
         /// Returns the CPU usage usage in [0, 1] range.
         /// </summary>
-        double CurrentCpuLoad
-        {
-            get;
-        }
+        double CurrentCpuLoad { get; }
 
         /// <summary>
         /// Average of CPU load values in [0, 1] range over all metrics kept in the history.
         /// </summary>
-        double AverageCpuLoad
-        {
-            get;
-        }
+        double AverageCpuLoad { get; }
 
         /// <summary>
         /// Average time spent in CG since the last update.
         /// </summary>
-        double CurrentGcCpuLoad
-        {
-            get;
-        }
-        
+        double CurrentGcCpuLoad { get; }
+
         /// <summary>
         /// Amount of heap memory in bytes that the JVM
         /// initially requests from the operating system for memory management.
@@ -297,10 +201,7 @@ namespace Apache.Ignite.Core.Cluster
         /// This value represents a setting of the heap memory for Java VM and is
         /// not a sum of all initial heap values for all memory pools.
         /// </summary>
-        long HeapMemoryInitialized
-        {
-            get;
-        }
+        long HeapMemoryInitialized { get; }
 
         /// <summary>
         /// Current heap size that is used for object allocation.
@@ -311,20 +212,14 @@ namespace Apache.Ignite.Core.Cluster
         /// occupied by both live objects and garbage objects that have not
         /// been collected, if any.
         /// </summary>
-        long HeapMemoryUsed
-        {
-            get;
-        }
+        long HeapMemoryUsed { get; }
 
         /// <summary>
         /// Amount of heap memory in bytes that is committed for the JVM to use. This amount of memory is
         /// guaranteed for the JVM to use. The heap consists of one or more memory pools. This value is
         /// the sum of committed heap memory values of all heap memory pools.
         /// </summary>
-        long HeapMemoryCommitted
-        {
-            get;
-        }
+        long HeapMemoryCommitted { get; }
 
         /// <summary>
         /// Mmaximum amount of heap memory in bytes that can be used for memory management.
@@ -337,10 +232,7 @@ namespace Apache.Ignite.Core.Cluster
         /// This value represents a setting of the heap memory for Java VM and is
         /// not a sum of all initial heap values for all memory pools.
         /// </summary>
-        long HeapMemoryMaximum
-        {
-            get;
-        }
+        long HeapMemoryMaximum { get; }
 
         /// <summary>
         /// Total amount of heap memory in bytes. This method returns <code>-1</code>
@@ -353,163 +245,103 @@ namespace Apache.Ignite.Core.Cluster
         /// This value represents a setting of the heap memory for Java VM and is
         /// not a sum of all initial heap values for all memory pools.
         /// </summary>
-        long HeapMemoryTotal
-        {
-            get;
-        }
+        long HeapMemoryTotal { get; }
 
         /// <summary>
         /// Amount of non-heap memory in bytes that the JVM initially requests from the operating 
         /// system for memory management.
         /// </summary>
-        long NonHeapMemoryInitialized
-        {
-            get;
-        }
+        long NonHeapMemoryInitialized { get; }
 
         /// <summary>
         /// Current non-heap memory size that is used by Java VM.
         /// </summary>
-        long NonHeapMemoryUsed
-        {
-            get;
-        }
+        long NonHeapMemoryUsed { get; }
 
         /// <summary>
         /// Amount of non-heap memory in bytes that is committed for the JVM to use. 
         /// </summary>
-        long NonHeapMemoryCommitted
-        {
-            get;
-        }
-        
+        long NonHeapMemoryCommitted { get; }
+
         /// <summary>
         /// Maximum amount of non-heap memory in bytes that can be used for memory management.
         /// </summary>
-        long NonHeapMemoryMaximum
-        {
-            get;
-        }
+        long NonHeapMemoryMaximum { get; }
 
         /// <summary>
         /// Total amount of non-heap memory in bytes that can be used for memory management. 
         /// </summary>
-        long NonHeapMemoryTotal
-        {
-            get;
-        }
+        long NonHeapMemoryTotal { get; }
 
         /// <summary>
         /// Uptime of the JVM in milliseconds.
         /// </summary>
-        long UpTime
-        {
-            get;
-        }
+        long Uptime { get; }
 
         /// <summary>
         /// Start time of the JVM in milliseconds.
         /// </summary>
-        DateTime StartTime
-        {
-            get;
-        }
+        DateTime StartTime { get; }
 
         /// <summary>
         /// Start time of the Ignite node in milliseconds.
         /// </summary>
-        DateTime NodeStartTime
-        {
-            get;
-        }
+        DateTime NodeStartTime { get; }
 
         /// <summary>
         /// Current number of live threads.
         /// </summary>
-        int CurrentThreadCount
-        {
-            get;
-        }
+        int CurrentThreadCount { get; }
 
         /// <summary>
         /// The peak live thread count.
         /// </summary>
-        int MaximumThreadCount
-        {
-            get;
-        }
+        int MaximumThreadCount { get; }
 
         /// <summary>
         /// The total number of threads started.
         /// </summary>
-        long TotalStartedThreadCount
-        {
-            get;
-        }
+        long TotalStartedThreadCount { get; }
 
         /// <summary>
         /// Current number of live daemon threads.
         /// </summary>
-        int CurrentDaemonThreadCount
-        {
-            get;
-        }
+        int CurrentDaemonThreadCount { get; }
 
         /// <summary>
         /// Ignite assigns incremental versions to all cache operations. This property provides
         /// the latest data version on the node.
         /// </summary>
-        long LastDataVersion
-        {
-            get;
-        }
+        long LastDataVersion { get; }
 
         /// <summary>
         /// Sent messages count 
         /// </summary>
-        int SentMessagesCount
-        {
-            get;
-        }
+        int SentMessagesCount { get; }
 
         /// <summary>
         /// Sent bytes count.
         /// </summary>
-        long SentBytesCount
-        {
-            get;
-        }
+        long SentBytesCount { get; }
 
         /// <summary>
         /// Received messages count.
         /// </summary>
-        int ReceivedMessagesCount
-        {
-            get;
-        }
+        int ReceivedMessagesCount { get; }
 
         /// <summary>
         /// Received bytes count.
         /// </summary>
-        long ReceivedBytesCount
-        {
-            get;
-        }
+        long ReceivedBytesCount { get; }
 
         /// <summary>
         /// Outbound messages queue size.
         /// </summary>
-        int OutboundMessagesQueueSize
-        {
-            get;
-        }
+        int OutboundMessagesQueueSize { get; }
 
         /// <summary>
         /// Gets total number of nodes.
         /// </summary>
-        int TotalNodes
-        {
-            get;
-        }
+        int TotalNodes { get; }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterNode.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterNode.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterNode.cs
index 11b4c4a..8287821 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterNode.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cluster/IClusterNode.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Cluster
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
 
     /// <summary>
     /// Interface representing a single cluster node. Use <see cref="GetAttribute{T}"/> or
@@ -64,6 +65,7 @@ namespace Apache.Ignite.Core.Cluster
         /// Note that attributes cannot be changed at runtime.
         /// </summary>
         /// <returns>All node attributes.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IDictionary<string, object> GetAttributes();
 
         /// <summary>
@@ -116,6 +118,7 @@ namespace Apache.Ignite.Core.Cluster
         /// update will happen every <code>2</code> seconds.
         /// </summary>
         /// <returns>Runtime metrics snapshot for this node.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IClusterMetrics GetMetrics();
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Common/IgniteGuid.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Common/IgniteGuid.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Common/IgniteGuid.cs
index 53c7151..6c77531 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Common/IgniteGuid.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Common/IgniteGuid.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Common
 {
     using System;
+    using System.Globalization;
     using Apache.Ignite.Core.Portable;
 
     /// <summary>
@@ -83,7 +84,8 @@ namespace Apache.Ignite.Core.Common
         /** <inheritDoc /> */
         public override string ToString()
         {
-            return string.Format("IgniteGuid [GlobalId={0}, LocalId={1}]", GlobalId, LocalId);
+            return string.Format(CultureInfo.InvariantCulture, 
+                "IgniteGuid [GlobalId={0}, LocalId={1}]", GlobalId, LocalId);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Compute/ComputeJobAdapter.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Compute/ComputeJobAdapter.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Compute/ComputeJobAdapter.cs
index 92c6492..a472b50 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Compute/ComputeJobAdapter.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Compute/ComputeJobAdapter.cs
@@ -28,7 +28,7 @@ namespace Apache.Ignite.Core.Compute
     /// </li>
     /// <li>
     ///      Ability to set and get job arguments via <see cref="ComputeJobAdapter{T}.SetArguments(object[])"/>
-    ///      and <see cref="ComputeJobAdapter{T}.Argument{T}(int)"/> methods.
+    ///      and <see cref="GetArgument{TArg}"/> methods.
     /// </li>
     /// </ul>
     /// </summary>
@@ -40,7 +40,7 @@ namespace Apache.Ignite.Core.Compute
         private volatile bool _cancelled;
 
         /** Arguments. */
-        protected object[] Args;
+        private object[] _args;
 
         /// <summary>
         /// No-arg constructor.
@@ -56,7 +56,7 @@ namespace Apache.Ignite.Core.Compute
         /// <param name="args">Optional job arguments.</param>
         protected ComputeJobAdapter(params object[] args)
         {
-            Args = args;
+            _args = args;
         }
 
         /// <summary>
@@ -78,19 +78,19 @@ namespace Apache.Ignite.Core.Compute
         /// <param name="args">Optional job arguments to set.</param>
         public void SetArguments(params object[] args)
         {
-            Args = args;
+            _args = args;
         }
 
         /// <summary>
         /// Sets given arguments.
         /// </summary>
         /// <param name="idx">Index of the argument.</param>
-        public TArg Argument<TArg>(int idx)
+        public TArg GetArgument<TArg>(int idx)
         {
-            if (idx < 0 || idx >= Args.Length)
-                throw new ArgumentException("Invalid argument index: " + idx);
+            if (_args == null || idx < 0 || idx >= _args.Length)
+                throw new IndexOutOfRangeException("Invalid argument index: " + idx);
 
-            return (TArg)Args[idx];
+            return (TArg)_args[idx];
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Compute/IComputeJob.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Compute/IComputeJob.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Compute/IComputeJob.cs
index 3b8ac60..a755bac 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Compute/IComputeJob.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Compute/IComputeJob.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Compute
 {
     using System.Collections.Generic;
+    using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Resource;
 
     /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheEvent.cs
index ff5084b..bd8a41a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheEvent.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Events
 {
     using System;
+    using System.Globalization;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Portable;
@@ -169,7 +170,8 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: IsNear={1}, Key={2}, HasNewValue={3}, HasOldValue={4}, NodeId={5}", Name, 
+            return string.Format(CultureInfo.InvariantCulture, 
+                "{0}: IsNear={1}, Key={2}, HasNewValue={3}, HasOldValue={4}, NodeId={5}", Name, 
                 _isNear, _key, HasNewValue, HasOldValue, Node.Id);
 	    }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryExecutedEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryExecutedEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryExecutedEvent.cs
index 8443c68..5107b84 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryExecutedEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryExecutedEvent.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Events
 {
     using System;
+    using System.Globalization;
     using Apache.Ignite.Core.Portable;
 
     /// <summary>
@@ -90,8 +91,9 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: QueryType={1}, CacheName={2}, ClassName={3}, Clause={4}, SubjectId={5}, " +
-	                             "TaskName={6}", Name, QueryType, CacheName, ClassName, Clause, SubjectId, TaskName);
+	        return string.Format(CultureInfo.InvariantCulture,
+	            "{0}: QueryType={1}, CacheName={2}, ClassName={3}, Clause={4}, SubjectId={5}, " +
+	            "TaskName={6}", Name, QueryType, CacheName, ClassName, Clause, SubjectId, TaskName);
 	    }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryReadEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryReadEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryReadEvent.cs
index 7338eab..ea99927 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryReadEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheQueryReadEvent.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Events
 {
     using System;
+    using System.Globalization;
     using Apache.Ignite.Core.Portable;
 
     /// <summary>
@@ -126,9 +127,10 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: QueryType={1}, CacheName={2}, ClassName={3}, Clause={4}, SubjectId={5}, " +
-	                             "TaskName={6}, Key={7}, Value={8}, OldValue={9}, Row={10}", Name, QueryType, 
-                                 CacheName, ClassName, Clause, SubjectId, TaskName, Key, Value, OldValue, Row);
+	        return string.Format(CultureInfo.InvariantCulture,
+	            "{0}: QueryType={1}, CacheName={2}, ClassName={3}, Clause={4}, SubjectId={5}, " +
+	            "TaskName={6}, Key={7}, Value={8}, OldValue={9}, Row={10}", Name, QueryType,
+	            CacheName, ClassName, Clause, SubjectId, TaskName, Key, Value, OldValue, Row);
 	    }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheRebalancingEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheRebalancingEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheRebalancingEvent.cs
index 656550a..620c675 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheRebalancingEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CacheRebalancingEvent.cs
@@ -17,6 +17,7 @@
 
 namespace Apache.Ignite.Core.Events
 {
+    using System.Globalization;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Portable;
 
@@ -90,9 +91,10 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: CacheName={1}, Partition={2}, DiscoveryNode={3}, DiscoveryEventType={4}, " +
-	                             "DiscoveryEventName={5}, DiscoveryTimestamp={6}", Name, CacheName, Partition,
-	                             DiscoveryNode, DiscoveryEventType, DiscoveryEventName, DiscoveryTimestamp);
+	        return string.Format(CultureInfo.InvariantCulture,
+	            "{0}: CacheName={1}, Partition={2}, DiscoveryNode={3}, DiscoveryEventType={4}, " +
+	            "DiscoveryEventName={5}, DiscoveryTimestamp={6}", Name, CacheName, Partition,
+	            DiscoveryNode, DiscoveryEventType, DiscoveryEventName, DiscoveryTimestamp);
 	    }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/CheckpointEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CheckpointEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CheckpointEvent.cs
index 7b7ea59..298eed8 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/CheckpointEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/CheckpointEvent.cs
@@ -17,6 +17,7 @@
 
 namespace Apache.Ignite.Core.Events
 {
+    using System.Globalization;
     using Apache.Ignite.Core.Portable;
 
     /// <summary>
@@ -44,7 +45,7 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: Key={1}", Name, Key);
+            return string.Format(CultureInfo.InvariantCulture, "{0}: Key={1}", Name, Key);
 	    }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/DiscoveryEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/DiscoveryEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/DiscoveryEvent.cs
index 5b5443c..16b7a6a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/DiscoveryEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/DiscoveryEvent.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Events
 {
     using System.Collections.Generic;
     using System.Collections.ObjectModel;
+    using System.Globalization;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Impl;
     using Apache.Ignite.Core.Portable;
@@ -73,7 +74,8 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: EventNode={1}, TopologyVersion={2}, TopologyNodes={3}", Name, EventNode, 
+            return string.Format(CultureInfo.InvariantCulture, 
+                "{0}: EventNode={1}, TopologyVersion={2}, TopologyNodes={3}", Name, EventNode, 
                 TopologyVersion, TopologyNodes.Count);
 	    }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventBase.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventBase.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventBase.cs
index 2b905a1..a03c373 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventBase.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventBase.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Events
 {
     using System;
+    using System.Globalization;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Impl.Portable;
@@ -47,7 +48,7 @@ namespace Apache.Ignite.Core.Events
         private readonly string _name;
 
         /** */
-        private readonly DateTime _timeStamp;
+        private readonly DateTime _timestamp;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="EventBase"/> class.
@@ -64,7 +65,7 @@ namespace Apache.Ignite.Core.Events
             _message = r.ReadString();
             _type = r.ReadInt();
             _name = r.ReadString();
-            _timeStamp = r.ReadDate() ?? DateTime.Now;
+            _timestamp = r.ReadDate() ?? DateTime.Now;
         }
 
         /** <inheritDoc /> */
@@ -104,9 +105,9 @@ namespace Apache.Ignite.Core.Events
         }
 
         /** <inheritDoc /> */
-        public DateTime TimeStamp
+        public DateTime Timestamp
         {
-            get { return _timeStamp; }
+            get { return _timestamp; }
         }
 
         /** <inheritDoc /> */
@@ -143,8 +144,8 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
         public override string ToString()
         {
-            return string.Format("CacheEntry [Name={0}, Type={1}, TimeStamp={2}, Message={3}]", Name, Type, TimeStamp,
-                Message);
+            return string.Format(CultureInfo.InvariantCulture, 
+                "CacheEntry [Name={0}, Type={1}, Timestamp={2}, Message={3}]", Name, Type, Timestamp, Message);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventType.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventType.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventType.cs
index 1e649bb..5ac4330 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventType.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/EventType.cs
@@ -1,4 +1,4 @@
-/*
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -17,6 +17,7 @@
 
 namespace Apache.Ignite.Core.Events
 {
+    using System;
     using System.Diagnostics.CodeAnalysis;
     using System.Linq;
     using System.Reflection;
@@ -330,9 +331,7 @@ namespace Apache.Ignite.Core.Events
         /// All events indicating an error or failure condition. It is convenient to use when fetching all events 
         /// indicating error or failure.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsError =
+        private static readonly int[] EvtsError0 =
         {
             EvtJobTimedout,
             EvtJobFailed,
@@ -349,11 +348,9 @@ namespace Apache.Ignite.Core.Events
         /// All discovery events except for <see cref="EvtNodeMetricsUpdated" />. Subscription to <see 
         /// cref="EvtNodeMetricsUpdated" /> can generate massive amount of event processing in most cases is not 
         /// necessary. If this event is indeed required you can subscribe to it individually or use <see 
-        /// cref="EvtsDiscoveryAll" /> array.
+        /// cref="EvtsDiscoveryAll0" /> array.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsDiscovery =
+        private static readonly int[] EvtsDiscovery0 =
         {
             EvtNodeJoined,
             EvtNodeLeft,
@@ -366,9 +363,7 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All discovery events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsDiscoveryAll =
+        private static readonly int[] EvtsDiscoveryAll0 =
         {
             EvtNodeJoined,
             EvtNodeLeft,
@@ -382,9 +377,7 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All Ignite job execution events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsJobExecution =
+        private static readonly int[] EvtsJobExecution0 =
         {
             EvtJobMapped,
             EvtJobResulted,
@@ -401,9 +394,7 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All Ignite task execution events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsTaskExecution =
+        private static readonly int[] EvtsTaskExecution0 =
         {
             EvtTaskStarted,
             EvtTaskFinished,
@@ -416,9 +407,7 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All cache events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsCache =
+        private static readonly int[] EvtsCache0 =
         {
             EvtCacheEntryCreated,
             EvtCacheEntryDestroyed,
@@ -435,9 +424,7 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All cache rebalance events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsCacheRebalance =
+        private static readonly int[] EvtsCacheRebalance0 =
         {
             EvtCacheRebalanceStarted,
             EvtCacheRebalanceStopped,
@@ -451,9 +438,7 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All cache lifecycle events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsCacheLifecycle =
+        private static readonly int[] EvtsCacheLifecycle0 =
         {
             EvtCacheStarted,
             EvtCacheStopped,
@@ -463,9 +448,7 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All cache query events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsCacheQuery =
+        private static readonly int[] EvtsCacheQuery0 =
         {
             EvtCacheQueryExecuted,
             EvtCacheQueryObjectRead
@@ -474,9 +457,7 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All swap space events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsSwapspace =
+        private static readonly int[] EvtsSwapspace0 =
         {
             EvtSwapSpaceCleared,
             EvtSwapSpaceDataRemoved,
@@ -488,17 +469,125 @@ namespace Apache.Ignite.Core.Events
         /// <summary>
         /// All Ignite events.
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsAll = GetAllEvents();
+        private static readonly int[] EvtsAll0 = GetAllEvents();
 
         /// <summary>
         /// All Ignite events (<b>excluding</b> metric update event).
         /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly",
-            Justification = "Breaking change. Should be fixed in the next non-compatible release.")]
-        public static readonly int[] EvtsAllMinusMetricUpdate =
-            EvtsAll.Where(x => x != EvtNodeMetricsUpdated).ToArray();
+        private static readonly int[] EvtsAllMinusMetricUpdate0 =
+            EvtsAll0.Where(x => x != EvtNodeMetricsUpdated).ToArray();
+
+        /// <summary>
+        /// All events indicating an error or failure condition. It is convenient to use when fetching all events 
+        /// indicating error or failure.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsError
+        {
+            get { return CloneArray(EvtsError0); }
+        }
+
+        /// <summary>
+        /// All Ignite events (<b>excluding</b> metric update event).
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsAllMinusMetricUpdate
+        {
+            get { return CloneArray(EvtsAllMinusMetricUpdate0); }
+        }
+
+        /// <summary>
+        /// All swap space events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsSwapspace
+        {
+            get { return CloneArray(EvtsSwapspace0); }
+        }
+
+        /// <summary>
+        /// All cache query events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsCacheQuery
+        {
+            get { return CloneArray(EvtsCacheQuery0); }
+        }
+
+        /// <summary>
+        /// All cache lifecycle events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsCacheLifecycle
+        {
+            get { return CloneArray(EvtsCacheLifecycle0); }
+        }
+
+        /// <summary>
+        /// All cache rebalance events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsCacheRebalance
+        {
+            get { return CloneArray(EvtsCacheRebalance0); }
+        }
+
+        /// <summary>
+        /// All cache events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsCache
+        {
+            get { return CloneArray(EvtsCache0); }
+        }
+
+        /// <summary>
+        /// All Ignite task execution events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsTaskExecution
+        {
+            get { return CloneArray(EvtsTaskExecution0); }
+        }
+
+        /// <summary>
+        /// All Ignite job execution events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsJobExecution
+        {
+            get { return CloneArray(EvtsJobExecution0); }
+        }
+
+        /// <summary>
+        /// All discovery events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsDiscoveryAll
+        {
+            get { return CloneArray(EvtsDiscoveryAll0); }
+        }
+
+        /// <summary>
+        /// All discovery events except for <see cref="EvtNodeMetricsUpdated" />. Subscription to <see 
+        /// cref="EvtNodeMetricsUpdated" /> can generate massive amount of event processing in most cases is not 
+        /// necessary. If this event is indeed required you can subscribe to it individually or use <see 
+        /// cref="EvtsDiscoveryAll0" /> array.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsDiscovery
+        {
+            get { return CloneArray(EvtsDiscovery0); }
+        }
+
+        /// <summary>
+        /// All Ignite events.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
+        public static int[] EvtsAll
+        {
+            get { return CloneArray(EvtsAll0); }
+        }
 
         /// <summary>
         /// Gets all the events.
@@ -510,5 +599,19 @@ namespace Apache.Ignite.Core.Events
                 .Where(x => x.FieldType == typeof (int))
                 .Select(x => (int) x.GetValue(null)).ToArray();
         }
+
+        /// <summary>
+        /// Clones an array to return to the user.
+        /// </summary>
+        /// <param name="array">The array.</param>
+        /// <returns>Shallow copy of the array.</returns>
+        private static int[] CloneArray(int[] array)
+        {
+            var res = new int[array.Length];
+
+            Array.Copy(array, res, array.Length);
+
+            return res;
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/IEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/IEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/IEvent.cs
index 181aeef..e94374c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/IEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/IEvent.cs
@@ -64,7 +64,7 @@ namespace Apache.Ignite.Core.Events
         /// Note that more than one event can be generated with the same timestamp. 
         /// For ordering purposes use <see cref="LocalOrder"/> instead.
         /// </summary>
-        DateTime TimeStamp { get; }
+        DateTime Timestamp { get; }
 
         /// <summary>
         /// Gets shortened version of ToString result.

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/JobEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/JobEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/JobEvent.cs
index 81d537f..87090e4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/JobEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/JobEvent.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Events
 {
     using System;
+    using System.Globalization;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Portable;
@@ -92,9 +93,10 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: TaskName={1}, TaskClassName={2}, TaskSessionId={3}, JobId={4}, TaskNode={5}, " +
-	                             "TaskSubjectId={6}", Name, TaskName, TaskClassName, TaskSessionId, JobId, TaskNode, 
-                                 TaskSubjectId);
+	        return string.Format(CultureInfo.InvariantCulture,
+	            "{0}: TaskName={1}, TaskClassName={2}, TaskSessionId={3}, JobId={4}, TaskNode={5}, " +
+	            "TaskSubjectId={6}", Name, TaskName, TaskClassName, TaskSessionId, JobId, TaskNode,
+	            TaskSubjectId);
 	    }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/SwapSpaceEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/SwapSpaceEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/SwapSpaceEvent.cs
index 676c2e0..9eb7096 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/SwapSpaceEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/SwapSpaceEvent.cs
@@ -17,6 +17,7 @@
 
 namespace Apache.Ignite.Core.Events
 {
+    using System.Globalization;
     using Apache.Ignite.Core.Portable;
 
     /// <summary>
@@ -44,7 +45,7 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: Space={1}", Name, Space);
+            return string.Format(CultureInfo.InvariantCulture, "{0}: Space={1}", Name, Space);
 	    }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Events/TaskEvent.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Events/TaskEvent.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Events/TaskEvent.cs
index 7149fb3..c17e72b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Events/TaskEvent.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Events/TaskEvent.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Events
 {
     using System;
+    using System.Globalization;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Portable;
 
@@ -84,8 +85,9 @@ namespace Apache.Ignite.Core.Events
         /** <inheritDoc /> */
 	    public override string ToShortString()
 	    {
-	        return string.Format("{0}: TaskName={1}, TaskClassName={2}, TaskSessionId={3}, Internal={4}, " +
-	                             "SubjectId={5}", Name, TaskName, TaskClassName, TaskSessionId, Internal, SubjectId);
+	        return string.Format(CultureInfo.InvariantCulture,
+	            "{0}: TaskName={1}, TaskClassName={2}, TaskSessionId={3}, Internal={4}, " +
+	            "SubjectId={5}", Name, TaskName, TaskClassName, TaskSessionId, Internal, SubjectId);
 	    }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs b/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs
index a9fae89..851f231 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core
 {
     using System;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Cache;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Compute;
@@ -54,6 +55,7 @@ namespace Apache.Ignite.Core
         /// <summary>
         /// Gets an instance of <see cref="ICluster" /> interface.
         /// </summary>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         ICluster GetCluster();
 
         /// <summary>
@@ -62,6 +64,7 @@ namespace Apache.Ignite.Core
         /// this projection.
         /// </summary>
         /// <returns>Compute instance over this grid projection.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         ICompute GetCompute();
 
         /// <summary>
@@ -109,6 +112,7 @@ namespace Apache.Ignite.Core
         /// Gets an instance of <see cref="IPortables"/> interface.
         /// </summary>
         /// <returns>Instance of <see cref="IPortables"/> interface</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IPortables GetPortables();
 
         /// <summary>
@@ -121,24 +125,28 @@ namespace Apache.Ignite.Core
         /// <summary>
         /// Gets Ignite transactions facade.
         /// </summary>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         ITransactions GetTransactions();
 
         /// <summary>
         /// Gets messaging facade over all cluster nodes.
         /// </summary>
         /// <returns>Messaging instance over all cluster nodes.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IMessaging GetMessaging();
 
         /// <summary>
         /// Gets events facade over all cluster nodes.
         /// </summary>
         /// <returns>Events facade over all cluster nodes.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IEvents GetEvents();
 
         /// <summary>
         /// Gets services facade over all cluster nodes.
         /// </summary>
         /// <returns>Services facade over all cluster nodes.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
         IServices GetServices();
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
index 5a03e93..c921ef7 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
@@ -106,6 +106,7 @@ namespace Apache.Ignite.Core
         /// <summary>
         /// Collection of options passed to JVM on Ignite start.
         /// </summary>
+        [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
         public ICollection<string> JvmOptions { get; set; }
 
         /// <summary>
@@ -113,6 +114,7 @@ namespace Apache.Ignite.Core
         /// fully qualified assembly name, path to assembly to DLL or path to a directory when 
         /// assemblies reside.
         /// </summary>
+        [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
         public IList<string> Assemblies { get; set; }
 
         /// <summary>
@@ -123,6 +125,7 @@ namespace Apache.Ignite.Core
         /// <summary>
         /// Lifecycle beans.
         /// </summary>
+        [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
         public ICollection<ILifecycleBean> LifecycleBeans { get; set; }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs
index 96d002f..a34c4e5 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Ignition.cs
@@ -21,6 +21,7 @@ namespace Apache.Ignite.Core
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using System.IO;
     using System.Linq;
     using System.Reflection;
@@ -98,6 +99,7 @@ namespace Apache.Ignite.Core
         /// <summary>
         /// Static initializer.
         /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
         static Ignition()
         {
             AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
@@ -165,7 +167,7 @@ namespace Apache.Ignite.Core
 
                 var cbs = new UnmanagedCallbacks();
 
-                void* ctx = IgniteManager.GetContext(cfg, cbs);
+                IgniteManager.CreateJvmContext(cfg, cbs);
 
                 sbyte* cfgPath0 = IgniteUtils.StringToUtf8Unmanaged(cfg.SpringConfigUrl ?? DefaultCfg);
 
@@ -173,7 +175,7 @@ namespace Apache.Ignite.Core
                 sbyte* gridName0 = IgniteUtils.StringToUtf8Unmanaged(gridName);
 
                 // 3. Create startup object which will guide us through the rest of the process.
-                _startup = new Startup(cfg, cbs) { Context = ctx };
+                _startup = new Startup(cfg, cbs);
 
                 IUnmanagedTarget interopProc = null;
 
@@ -606,7 +608,7 @@ namespace Apache.Ignite.Core
         /// <summary>
         /// Value object to pass data between .Net methods during startup bypassing Java.
         /// </summary>
-        private unsafe class Startup
+        private class Startup
         {
             /// <summary>
             /// Constructor.
@@ -649,11 +651,6 @@ namespace Apache.Ignite.Core
             internal Exception Error { get; set; }
 
             /// <summary>
-            /// Gets or sets the context.
-            /// </summary>
-            internal void* Context { get; set; }
-
-            /// <summary>
             /// Gets or sets the ignite.
             /// </summary>
             internal Ignite Ignite { get; set; }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntry.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntry.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntry.cs
index e28b3e2..5537489 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntry.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntry.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Impl.Cache
 {
     using System.Collections.Generic;
+    using System.Globalization;
     using Apache.Ignite.Core.Cache;
 
     /// <summary>
@@ -94,7 +95,7 @@ namespace Apache.Ignite.Core.Impl.Cache
         /** <inheritDoc /> */
         public override string ToString()
         {
-            return string.Format("CacheEntry [Key={0}, Value={1}]", _key, _val);
+            return string.Format(CultureInfo.CurrentCulture, "CacheEntry [Key={0}, Value={1}]", _key, _val);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorResultHolder.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorResultHolder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorResultHolder.cs
index 04cd557..02928e9 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorResultHolder.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEntryProcessorResultHolder.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl.Cache
 {
     using System;
     using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
     using System.IO;
     using Apache.Ignite.Core.Impl.Common;
     using Apache.Ignite.Core.Impl.Portable;
@@ -111,13 +112,13 @@ namespace Apache.Ignite.Core.Impl.Cache
 
                 if (Error == null)
                 {
-                    writer.WriteString(string.Format(
+                    writer.WriteString(string.Format(CultureInfo.InvariantCulture,
                     "CacheEntryProcessor completed with error, but result serialization failed [errType={0}, " +
                     "err={1}, serializationErrMsg={2}]", marshErr.GetType().Name, marshErr, marshErr.Message));
                 }
                 else
                 {
-                    writer.WriteString(string.Format(
+                    writer.WriteString(string.Format(CultureInfo.InvariantCulture,
                     "CacheEntryProcessor completed with error, and error serialization failed [errType={0}, " +
                     "err={1}, serializationErrMsg={2}]", marshErr.GetType().Name, marshErr, marshErr.Message));
                 }


[2/3] ignite git commit: IGNITE-1282: Added FxCop warnings suppression.

Posted by vo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEnumeratorProxy.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEnumeratorProxy.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEnumeratorProxy.cs
index cadc58d..e9795c0 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEnumeratorProxy.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheEnumeratorProxy.cs
@@ -21,6 +21,7 @@ namespace Apache.Ignite.Core.Impl.Cache
     using System.Collections;
     using System.Collections.Generic;
     using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Cache;
 
     /// <summary>
@@ -110,6 +111,8 @@ namespace Apache.Ignite.Core.Impl.Cache
         }
 
         /** <inheritdoc /> */
+        [SuppressMessage("Microsoft.Usage", "CA1816:CallGCSuppressFinalizeCorrectly",
+            Justification = "There is no finalizer.")]
         public void Dispose()
         {
             if (!_disposed)

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs
index d8d014b..b292a13 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl.Cache.Query.Continuous
 {
     using System;
     using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Cache;
     using Apache.Ignite.Core.Cache.Event;
     using Apache.Ignite.Core.Cache.Query;
@@ -185,6 +186,8 @@ namespace Apache.Ignite.Core.Impl.Cache.Query.Continuous
         }
 
         /** <inheritdoc /> */
+        [SuppressMessage("Microsoft.Usage", "CA1816:CallGCSuppressFinalizeCorrectly",
+            Justification = "There is no finalizer.")]
         public void Dispose()
         {
             lock (this)

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterGroupImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterGroupImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterGroupImpl.cs
index 382ab1e..6b08a6f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterGroupImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterGroupImpl.cs
@@ -103,7 +103,6 @@ namespace Apache.Ignite.Core.Impl.Cluster
         private readonly Func<IClusterNode, bool> _pred;
 
         /** Topology version. */
-        [SuppressMessage("Microsoft.Performance", "CA1805:DoNotInitializeUnnecessarily")]
         private long _topVer = TopVerInit;
 
         /** Nodes for the given topology version. */
@@ -132,6 +131,7 @@ namespace Apache.Ignite.Core.Impl.Cluster
         /// <param name="marsh">Marshaller.</param>
         /// <param name="ignite">Grid.</param>
         /// <param name="pred">Predicate.</param>
+        [SuppressMessage("Microsoft.Performance", "CA1805:DoNotInitializeUnnecessarily")]
         public ClusterGroupImpl(IUnmanagedTarget proc, IUnmanagedTarget target, PortableMarshaller marsh,
             Ignite ignite, Func<IClusterNode, bool> pred)
             : base(target, marsh)

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterMetricsImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterMetricsImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterMetricsImpl.cs
index 664a1f1..52d5236 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterMetricsImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cluster/ClusterMetricsImpl.cs
@@ -82,7 +82,7 @@ namespace Apache.Ignite.Core.Impl.Cluster
             NonHeapMemoryCommitted = reader.ReadLong();
             NonHeapMemoryMaximum = reader.ReadLong();
             NonHeapMemoryTotal = reader.ReadLong();
-            UpTime = reader.ReadLong();
+            Uptime = reader.ReadLong();
 
             DateTime? startTime0 = reader.ReadDate();
 
@@ -184,7 +184,7 @@ namespace Apache.Ignite.Core.Impl.Cluster
         /** <inheritDoc /> */
         public long TotalBusyTime
         {
-            get { return UpTime - TotalIdleTime; }
+            get { return Uptime - TotalIdleTime; }
         }
 
         /** <inheritDoc /> */
@@ -202,7 +202,7 @@ namespace Apache.Ignite.Core.Impl.Cluster
         /** <inheritDoc /> */
         public float IdleTimePercentage
         {
-            get { return TotalIdleTime / (float) UpTime; }
+            get { return TotalIdleTime / (float) Uptime; }
         }
 
         /** <inheritDoc /> */
@@ -248,7 +248,7 @@ namespace Apache.Ignite.Core.Impl.Cluster
         public long NonHeapMemoryTotal { get; private set; }
 
         /** <inheritDoc /> */
-        public long UpTime { get; private set; }
+        public long Uptime { get; private set; }
 
         /** <inheritDoc /> */
         public DateTime StartTime { get; private set; }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Collections/MultiValueDictionary.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Collections/MultiValueDictionary.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Collections/MultiValueDictionary.cs
index bd7e895..2adb021 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Collections/MultiValueDictionary.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Collections/MultiValueDictionary.cs
@@ -18,10 +18,12 @@
 namespace Apache.Ignite.Core.Impl.Collections
 {
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
 
     /// <summary>
     /// Multiple-values-per-key dictionary.
     /// </summary>
+    [SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix")]
     public class MultiValueDictionary<TKey, TValue>
     {
         /** Inner dictionary */

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CompletedAsyncResult.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CompletedAsyncResult.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CompletedAsyncResult.cs
index 14195fd..febe969 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CompletedAsyncResult.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CompletedAsyncResult.cs
@@ -29,20 +29,9 @@ namespace Apache.Ignite.Core.Impl.Common
                         "to the client, and IAsyncResult is not IDisposable.")]
     public class CompletedAsyncResult : IAsyncResult
     {
-        /** Singleton instance. */
-        public static readonly IAsyncResult Instance = new CompletedAsyncResult();
-
         /** */
         private readonly WaitHandle _asyncWaitHandle = new ManualResetEvent(true);
 
-        /// <summary>
-        /// Prevents a default instance of the <see cref="CompletedAsyncResult"/> class from being created.
-        /// </summary>
-        private CompletedAsyncResult()
-        {
-            // No-op.
-        }
-
         /** <inheritdoc /> */
         public bool IsCompleted
         {

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CopyOnWriteConcurrentDictionary.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CopyOnWriteConcurrentDictionary.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CopyOnWriteConcurrentDictionary.cs
index fa785b2..918bbd1 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CopyOnWriteConcurrentDictionary.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/CopyOnWriteConcurrentDictionary.cs
@@ -19,11 +19,13 @@ namespace Apache.Ignite.Core.Impl.Common
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
 
     /// <summary>
     /// Concurrent dictionary with CopyOnWrite mechanism inside. 
     /// Good for frequent reads / infrequent writes scenarios.
     /// </summary>
+    [SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix")]
     public class CopyOnWriteConcurrentDictionary<TKey, TValue>
     {
         /** */

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs
index 8d7cb3a..5460037 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/DelegateTypeDescriptor.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Impl.Common
 {
     using System;
+    using System.Globalization;
     using Apache.Ignite.Core.Cache;
     using Apache.Ignite.Core.Compute;
     using Apache.Ignite.Core.Datastream;
@@ -191,9 +192,8 @@ namespace Apache.Ignite.Core.Impl.Common
         private static void ThrowIfMultipleInterfaces(object check, Type userType, Type interfaceType)
         {
             if (check != null)
-                throw new InvalidOperationException(
-                    string.Format("Not Supported: Type {0} implements interface {1} multiple times.", userType,
-                        interfaceType));
+                throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, 
+                    "Not Supported: Type {0} implements interface {1} multiple times.", userType, interfaceType));
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/Future.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/Future.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/Future.cs
index 92b4fce..a25bada 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/Future.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/Future.cs
@@ -165,7 +165,7 @@ namespace Apache.Ignite.Core.Impl.Common
         /** <inheritdoc/> */
         public IAsyncResult ToAsyncResult()
         {
-            return _done ? CompletedAsyncResult.Instance : new AsyncResult(this);
+            return _done ? (IAsyncResult) new CompletedAsyncResult() : new AsyncResult(this);
         }
 
         /** <inheritdoc/> */
@@ -193,6 +193,7 @@ namespace Apache.Ignite.Core.Impl.Common
         }
 
         /** <inheritdoc /> */
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         public void OnResult(IPortableStream stream)
         {
             try

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/FutureType.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/FutureType.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/FutureType.cs
index 0beff04..c9f1555 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/FutureType.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/FutureType.cs
@@ -17,9 +17,12 @@
 
 namespace Apache.Ignite.Core.Impl.Common
 {
+    using System.Diagnostics.CodeAnalysis;
+
     /// <summary>
     /// Future types.
     /// </summary>
+    [SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Justification = "Interoperability")]
     public enum FutureType
     {
         /** Future type: byte. */

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteArgumentCheck.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteArgumentCheck.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteArgumentCheck.cs
index e94c577..a633291 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteArgumentCheck.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteArgumentCheck.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl.Common
 {
     using System;
     using System.Collections.Generic;
+    using System.Globalization;
 
     /// <summary>
     /// Arguments check helpers.
@@ -44,8 +45,8 @@ namespace Apache.Ignite.Core.Impl.Common
         public static void NotNullOrEmpty(string arg, string argName)
         {
             if (string.IsNullOrEmpty(arg))
-                throw new ArgumentException(string.Format("'{0}' argument should not be null or empty.", argName),
-                    argName);
+                throw new ArgumentException(string.Format(CultureInfo.InvariantCulture,
+                    "'{0}' argument should not be null or empty.", argName), argName);
         }
 
         /// <summary>
@@ -56,8 +57,8 @@ namespace Apache.Ignite.Core.Impl.Common
         public static void NotNullOrEmpty<T>(ICollection<T> collection, string argName)
         {
             if (collection == null || collection.Count == 0)
-                throw new ArgumentException(string.Format("'{0}' argument should not be null or empty.", argName),
-                    argName);
+                throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, 
+                    "'{0}' argument should not be null or empty.", argName), argName);
         }
 
         /// <summary>
@@ -69,8 +70,8 @@ namespace Apache.Ignite.Core.Impl.Common
         public static void Ensure(bool condition, string argName, string message)
         {
             if (!condition)
-                throw new ArgumentException(string.Format("'{0}' argument is invalid: {1}", argName, message), 
-                    argName);
+                throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, 
+                    "'{0}' argument is invalid: {1}", argName, message), argName);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/TypeCaster.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/TypeCaster.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/TypeCaster.cs
index d0dd2a9..2d4936f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/TypeCaster.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/TypeCaster.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Impl.Common
 {
     using System;
+    using System.Diagnostics.CodeAnalysis;
     using System.Linq.Expressions;
 
     /// <summary>
@@ -34,6 +35,8 @@ namespace Apache.Ignite.Core.Impl.Common
         /// <typeparam name="TFrom">Source type to cast from.</typeparam>
         /// <param name="obj">The object to cast.</param>
         /// <returns>Casted object.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes",
+            Justification = "Intended usage to leverage compiler caching.")]
         public static T Cast<TFrom>(TFrom obj)
         {
             return Casters<TFrom>.Caster(obj);
@@ -47,6 +50,10 @@ namespace Apache.Ignite.Core.Impl.Common
             /// <summary>
             /// Compiled caster delegate.
             /// </summary>
+            [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", 
+                Justification = "Incorrect warning")]
+            [SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes",
+                Justification = "Intended usage to leverage compiler caching.")]
             internal static readonly Func<TFrom, T> Caster = Compile();
 
             /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeAsync.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeAsync.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeAsync.cs
index 199afc2..26c9bf4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeAsync.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Compute/ComputeAsync.cs
@@ -20,6 +20,7 @@ namespace Apache.Ignite.Core.Impl.Compute
     using System;
     using System.Collections.Generic;
     using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
     using System.Threading;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Common;
@@ -76,8 +77,9 @@ namespace Apache.Ignite.Core.Impl.Compute
 
             if (fut0 == null)
                 throw new InvalidOperationException(
-                    string.Format("Requested future type {0} is incompatible with current future type {1}",
-                        typeof(IFuture<TResult>), fut.GetType()));
+                    string.Format(CultureInfo.InvariantCulture,
+                        "Requested future type {0} is incompatible with current future type {1}",
+                        typeof (IFuture<TResult>), fut.GetType()));
 
             _curFut.Value = null;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerBatch.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerBatch.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerBatch.cs
index cbd26dd..49cbc5a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerBatch.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerBatch.cs
@@ -181,6 +181,7 @@ namespace Apache.Ignite.Core.Impl.Datastream
         /// <summary>
         /// Await completion of current and all previous loads.
         /// </summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         public void AwaitCompletion()
         {
             DataStreamerBatch<TK, TV> curBatch = this;

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerImpl.cs
index bf11397..9894e93 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Datastream/DataStreamerImpl.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl.Datastream
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using System.Threading;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Datastream;
@@ -523,6 +524,7 @@ namespace Apache.Ignite.Core.Impl.Datastream
         }
 
         /** <inheritDoc /> */
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         protected override void Dispose(bool disposing)
         {
             if (disposing)
@@ -671,12 +673,18 @@ namespace Apache.Ignite.Core.Impl.Datastream
             private const int StateStopped = 2;
 
             /** Data streamer. */
+            [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields",
+                Justification = "Incorrect warning")]
             private readonly WeakReference _ldrRef;
 
             /** Finish flag. */
+            [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields",
+                Justification = "Incorrect warning")]
             private int _state;
 
             /** Flush frequency. */
+            [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields",
+                Justification = "Incorrect warning")]
             private long _freq;
 
             /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/ExceptionUtils.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/ExceptionUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/ExceptionUtils.cs
index 066f345..ea109ba 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/ExceptionUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/ExceptionUtils.cs
@@ -20,6 +20,7 @@ namespace Apache.Ignite.Core.Impl
     using System;
     using System.Collections.Generic;
     using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
     using System.Runtime.InteropServices;
     using System.Security;
     using System.Threading;
@@ -55,6 +56,8 @@ namespace Apache.Ignite.Core.Impl
         /// <summary>
         /// Static initializer.
         /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline", 
+            Justification = "Readability")]
         static ExceptionUtils()
         {
             // Common Java exceptions mapped to common .Net exceptions.
@@ -129,6 +132,7 @@ namespace Apache.Ignite.Core.Impl
         /// <param name="msg">Message.</param>
         /// <param name="reader">Reader.</param>
         /// <returns></returns>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         private static Exception ProcessCachePartialUpdateException(string msg, PortableReaderImpl reader)
         {
             if (reader == null)

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Handle/HandleRegistry.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Handle/HandleRegistry.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Handle/HandleRegistry.cs
index 9c8178f..1979086 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Handle/HandleRegistry.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Handle/HandleRegistry.cs
@@ -20,6 +20,7 @@ namespace Apache.Ignite.Core.Impl.Handle
     using System;
     using System.Collections.Concurrent;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using System.Linq;
     using System.Threading;
 
@@ -197,6 +198,7 @@ namespace Apache.Ignite.Core.Impl.Handle
         /// </summary>
         /// <param name="target">Target.</param>
         /// <param name="quiet">Whether release must be quiet or not.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         private static void Release0(object target, bool quiet)
         {
             IHandle target0 = target as IHandle;
@@ -316,7 +318,8 @@ namespace Apache.Ignite.Core.Impl.Handle
         /// <summary>
         /// Gets a snapshot of currently referenced objects list.
         /// </summary>
-        public List<KeyValuePair<long, object>> GetItems()
+        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Semantics.")]
+        public IList<KeyValuePair<long, object>> GetItems()
         {
             Thread.MemoryBarrier();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs
index 5f764c1..5fdbe06 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs
@@ -21,6 +21,7 @@ namespace Apache.Ignite.Core.Impl
     using System.Collections.Concurrent;
     using System.Collections.Generic;
     using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
     using System.Linq;
     using Apache.Ignite.Core.Cache;
     using Apache.Ignite.Core.Cluster;
@@ -299,6 +300,10 @@ namespace Apache.Ignite.Core.Impl
         }
 
         /** <inheritdoc /> */
+        [SuppressMessage("Microsoft.Usage", "CA1816:CallGCSuppressFinalizeCorrectly",
+            Justification = "There is no finalizer.")]
+        [SuppressMessage("Microsoft.Usage", "CA2213:DisposableFieldsShouldBeDisposed", MessageId = "_proxy",
+            Justification = "Proxy does not need to be disposed.")]
         public void Dispose()
         {
             Ignition.Stop(Name, true);

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs
index d0ddefb..af2557c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteManager.cs
@@ -20,6 +20,7 @@ namespace Apache.Ignite.Core.Impl
     using System;
     using System.Collections.Generic;
     using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
     using System.IO;
     using System.Linq;
     using System.Reflection;
@@ -63,20 +64,12 @@ namespace Apache.Ignite.Core.Impl
         private static PlatformMemoryManager _mem;
 
         /// <summary>
-        /// Static initializer.
-        /// </summary>
-        static IgniteManager()
-        {
-            // No-op.
-        }
-
-        /// <summary>
         /// Create JVM.
         /// </summary>
         /// <param name="cfg">Configuration.</param>
         /// <param name="cbs">Callbacks.</param>
         /// <returns>Context.</returns>
-        internal static void* GetContext(IgniteConfiguration cfg, UnmanagedCallbacks cbs)
+        internal static void CreateJvmContext(IgniteConfiguration cfg, UnmanagedCallbacks cbs)
         {
             lock (SyncRoot)
             {
@@ -106,8 +99,6 @@ namespace Apache.Ignite.Core.Impl
                     _jvmCfg = jvmCfg;
                     _mem = new PlatformMemoryManager(1024);
                 }
-
-                return ctx;
             }
         }
         
@@ -195,10 +186,10 @@ namespace Apache.Ignite.Core.Impl
 
             // JvmInitialMemoryMB / JvmMaxMemoryMB have lower priority than CMD_JVM_OPT
             if (!jvmOpts.Any(opt => opt.StartsWith(CmdJvmMinMemJava, StringComparison.OrdinalIgnoreCase)))
-                jvmOpts.Add(string.Format("{0}{1}m", CmdJvmMinMemJava, cfg.JvmInitialMemoryMb));
+                jvmOpts.Add(string.Format(CultureInfo.InvariantCulture, "{0}{1}m", CmdJvmMinMemJava, cfg.JvmInitialMemoryMb));
 
             if (!jvmOpts.Any(opt => opt.StartsWith(CmdJvmMaxMemJava, StringComparison.OrdinalIgnoreCase)))
-                jvmOpts.Add(string.Format("{0}{1}m", CmdJvmMaxMemJava, cfg.JvmMaxMemoryMb));
+                jvmOpts.Add(string.Format(CultureInfo.InvariantCulture, "{0}{1}m", CmdJvmMaxMemJava, cfg.JvmMaxMemoryMb));
 
             return jvmOpts;
         }
@@ -248,12 +239,14 @@ namespace Apache.Ignite.Core.Impl
             if (string.IsNullOrWhiteSpace(home))
                 home = Environment.GetEnvironmentVariable(EnvIgniteHome);
             else if (!IsIgniteHome(new DirectoryInfo(home)))
-                throw new IgniteException(string.Format("IgniteConfiguration.IgniteHome is not valid: '{0}'", home));
+                throw new IgniteException(string.Format(CultureInfo.InvariantCulture, 
+                    "IgniteConfiguration.IgniteHome is not valid: '{0}'", home));
 
             if (string.IsNullOrWhiteSpace(home))
                 home = ResolveIgniteHome();
             else if (!IsIgniteHome(new DirectoryInfo(home)))
-                throw new IgniteException(string.Format("{0} is not valid: '{1}'", EnvIgniteHome, home));
+                throw new IgniteException(string.Format(CultureInfo.InvariantCulture, 
+                    "{0} is not valid: '{1}'", EnvIgniteHome, home));
 
             return home;
         }
@@ -330,7 +323,7 @@ namespace Apache.Ignite.Core.Impl
             {
                 cpStr.Append(cfg.JvmClasspath);
 
-                if (!cfg.JvmClasspath.EndsWith(";"))
+                if (!cfg.JvmClasspath.EndsWith(";", StringComparison.Ordinal))
                     cpStr.Append(';');
             }
 
@@ -364,7 +357,7 @@ namespace Apache.Ignite.Core.Impl
             {
                 foreach (string dir in Directory.EnumerateDirectories(ggLibs))
                 {
-                    if (!dir.EndsWith("optional"))
+                    if (!dir.EndsWith("optional", StringComparison.OrdinalIgnoreCase))
                         AppendJars(dir, cpStr);
                 }
             }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteProxy.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteProxy.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteProxy.cs
index 2e01a5b..3e26791 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteProxy.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteProxy.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Cache;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Compute;
@@ -210,6 +211,8 @@ namespace Apache.Ignite.Core.Impl
         }
 
         /** <inheritdoc /> */
+        [SuppressMessage("Microsoft.Usage", "CA1816:CallGCSuppressFinalizeCorrectly", 
+            Justification = "There is no finalizer.")]
         public void Dispose()
         {
             _ignite.Dispose();

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteUtils.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteUtils.cs
index 265fd0d..88ab75f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/IgniteUtils.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl
 {
     using System;
     using System.Collections.Generic;
+    using System.Globalization;
     using System.IO;
     using System.Linq;
     using System.Reflection;
@@ -189,7 +190,7 @@ namespace Apache.Ignite.Core.Impl
                 if (errCode == 0)
                     return;
 
-                messages.Add(string.Format("[option={0}, path={1}, errorCode={2}]", 
+                messages.Add(string.Format(CultureInfo.InvariantCulture, "[option={0}, path={1}, errorCode={2}]", 
                     dllPath.Key, dllPath.Value, errCode));
 
                 if (dllPath.Value == configJvmDllPath)
@@ -197,13 +198,18 @@ namespace Apache.Ignite.Core.Impl
             }
 
             if (!messages.Any())  // not loaded and no messages - everything was null
-                messages.Add(string.Format("Please specify IgniteConfiguration.JvmDllPath or {0}.", EnvJavaHome));
+                messages.Add(string.Format(CultureInfo.InvariantCulture, 
+                    "Please specify IgniteConfiguration.JvmDllPath or {0}.", EnvJavaHome));
 
             if (messages.Count == 1)
-                throw new IgniteException(string.Format("Failed to load {0} ({1})", FileJvmDll, messages[0]));
+                throw new IgniteException(string.Format(CultureInfo.InvariantCulture, "Failed to load {0} ({1})", 
+                    FileJvmDll, messages[0]));
 
-            var combinedMessage = messages.Aggregate((x, y) => string.Format("{0}\n{1}", x, y));
-            throw new IgniteException(string.Format("Failed to load {0}:\n{1}", FileJvmDll, combinedMessage));
+            var combinedMessage =
+                messages.Aggregate((x, y) => string.Format(CultureInfo.InvariantCulture, "{0}\n{1}", x, y));
+
+            throw new IgniteException(string.Format(CultureInfo.InvariantCulture, "Failed to load {0}:\n{1}", 
+                FileJvmDll, combinedMessage));
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemory.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemory.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemory.cs
index 3a9ed26..fb53abc 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemory.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemory.cs
@@ -26,7 +26,7 @@ namespace Apache.Ignite.Core.Impl.Memory
     public abstract class PlatformMemory : IPlatformMemory
     {
         /** Memory pointer. */
-        protected readonly long MemPtr;
+        private readonly long _memPtr;
 
         /// <summary>
         /// Constructor.
@@ -34,7 +34,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// <param name="memPtr">Memory pointer.</param>
         protected PlatformMemory(long memPtr)
         {
-            MemPtr = memPtr;
+            _memPtr = memPtr;
         }
 
         /** <inheritdoc /> */
@@ -47,26 +47,26 @@ namespace Apache.Ignite.Core.Impl.Memory
         /** <inheritdoc /> */
         public long Pointer
         {
-            get { return MemPtr; }
+            get { return _memPtr; }
         }
 
         /** <inheritdoc /> */
         public long Data
         {
-            get { return PlatformMemoryUtils.Data(MemPtr); }
+            get { return PlatformMemoryUtils.GetData(_memPtr); }
         }
 
         /** <inheritdoc /> */
         public int Capacity
         {
-            get { return PlatformMemoryUtils.Capacity(MemPtr); }
+            get { return PlatformMemoryUtils.GetCapacity(_memPtr); }
         }
 
         /** <inheritdoc /> */
         public int Length
         {
-            get { return PlatformMemoryUtils.Length(MemPtr); }
-            set { PlatformMemoryUtils.Length(MemPtr, value); }
+            get { return PlatformMemoryUtils.GetLength(_memPtr); }
+            set { PlatformMemoryUtils.SetLength(_memPtr, value); }
         }
 
         /** <inheritdoc /> */

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryManager.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryManager.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryManager.cs
index b280140..dccf8ab 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryManager.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryManager.cs
@@ -70,7 +70,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// <returns>Memory.</returns>
         public IPlatformMemory Get(long memPtr)
         {
-            int flags = PlatformMemoryUtils.Flags(memPtr);
+            int flags = PlatformMemoryUtils.GetFlags(memPtr);
 
             return PlatformMemoryUtils.IsExternal(flags) ? GetExternalMemory(memPtr)
                 : PlatformMemoryUtils.IsPooled(flags) ? Pool().Get(memPtr) : new PlatformUnpooledMemory(memPtr);

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryPool.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryPool.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryPool.cs
index 75e8965..18b44b6 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryPool.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryPool.cs
@@ -61,7 +61,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
         /// <param name="cap">Minimum capacity.</param>
-        public void Reallocate(long memPtr, int cap)
+        public static void Reallocate(long memPtr, int cap)
         {
             PlatformMemoryUtils.ReallocatePooled(memPtr, cap);
         }
@@ -70,7 +70,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// Release pooled memory chunk.
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
-        public void Release(long memPtr)
+        public static void Release(long memPtr)
         {
             PlatformMemoryUtils.ReleasePooled(memPtr);
         }
@@ -85,12 +85,12 @@ namespace Apache.Ignite.Core.Impl.Memory
             long delta = memPtr - handle.ToInt64();
 
             if (delta == PlatformMemoryUtils.PoolHdrOffMem1) 
-                return _mem1 ?? (_mem1 = new PlatformPooledMemory(this, memPtr));
+                return _mem1 ?? (_mem1 = new PlatformPooledMemory(memPtr));
             
             if (delta == PlatformMemoryUtils.PoolHdrOffMem2) 
-                return _mem2 ?? (_mem2 = new PlatformPooledMemory(this, memPtr));
+                return _mem2 ?? (_mem2 = new PlatformPooledMemory(memPtr));
 
-            return _mem3 ?? (_mem3 = new PlatformPooledMemory(this, memPtr));
+            return _mem3 ?? (_mem3 = new PlatformPooledMemory(memPtr));
         }
 
         /** <inheritdoc /> */

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryStream.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryStream.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryStream.cs
index 71da18f..0df4cb9 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryStream.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryStream.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Impl.Memory
 {
     using System;
+    using System.Diagnostics.CodeAnalysis;
     using System.IO;
     using System.Text;
     using Apache.Ignite.Core.Impl.Portable.IO;
@@ -26,6 +27,7 @@ namespace Apache.Ignite.Core.Impl.Memory
     /// Platform memory stream.
     /// </summary>
     [CLSCompliant(false)]
+    [SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix")]
     public unsafe class PlatformMemoryStream : IPortableStream
     {
         /** Length: 1 byte. */
@@ -53,7 +55,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         private readonly IPlatformMemory _mem;
 
         /** Actual data. */
-        protected byte* Data;
+        private byte* _data;
 
         /** CalculateCapacity. */
         private int _cap;
@@ -72,7 +74,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             _mem = mem;
 
-            Data = (byte*)mem.Data;
+            _data = (byte*)mem.Data;
             _cap = mem.Capacity;
             _len = mem.Length;
         }
@@ -84,7 +86,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureWriteCapacityAndShift(Len1);
 
-            *(Data + curPos) = val;
+            *(_data + curPos) = val;
         }
 
         /** <inheritdoc /> */
@@ -116,7 +118,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureWriteCapacityAndShift(Len2);
 
-            *((short*)(Data + curPos)) = val;
+            *((short*)(_data + curPos)) = val;
         }
 
         /** <inheritdoc /> */
@@ -133,7 +135,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureWriteCapacityAndShift(Len2);
 
-            *((char*)(Data + curPos)) = val;
+            *((char*)(_data + curPos)) = val;
         }
 
         /** <inheritdoc /> */
@@ -150,15 +152,16 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureWriteCapacityAndShift(Len4);
 
-            *((int*)(Data + curPos)) = val;
+            *((int*)(_data + curPos)) = val;
         }
 
         /** <inheritdoc /> */
+        [SuppressMessage("Microsoft.Usage", "CA2233:OperationsShouldNotOverflow", MessageId = "writePos+4")]
         public virtual void WriteInt(int writePos, int val)
         {
             EnsureWriteCapacity(writePos + 4);
 
-            *((int*)(Data + writePos)) = val;
+            *((int*)(_data + writePos)) = val;
         }
 
         /** <inheritdoc /> */
@@ -175,7 +178,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureWriteCapacityAndShift(Len8);
 
-            *((long*)(Data + curPos)) = val;
+            *((long*)(_data + curPos)) = val;
         }
 
         /** <inheritdoc /> */
@@ -192,7 +195,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureWriteCapacityAndShift(Len4);
 
-            *((float*)(Data + curPos)) = val;
+            *((float*)(_data + curPos)) = val;
         }
 
         /** <inheritdoc /> */
@@ -209,7 +212,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureWriteCapacityAndShift(Len8);
 
-            *((double*)(Data + curPos)) = val;
+            *((double*)(_data + curPos)) = val;
         }
 
         /** <inheritdoc /> */
@@ -222,11 +225,11 @@ namespace Apache.Ignite.Core.Impl.Memory
         }
 
         /** <inheritdoc /> */
-        public int WriteString(char* chars, int charCnt, int byteCnt, Encoding enc)
+        public int WriteString(char* chars, int charCnt, int byteCnt, Encoding encoding)
         {
             int curPos = EnsureWriteCapacityAndShift(byteCnt);
 
-            return enc.GetBytes(chars, charCnt, Data + curPos, byteCnt);
+            return encoding.GetBytes(chars, charCnt, _data + curPos, byteCnt);
         }
 
         /** <inheritdoc /> */
@@ -253,7 +256,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureReadCapacityAndShift(Len1);
 
-            return *(Data + curPos);
+            return *(_data + curPos);
         }
 
         /** <inheritdoc /> */
@@ -266,7 +269,7 @@ namespace Apache.Ignite.Core.Impl.Memory
 
             fixed (byte* res0 = res)
             {
-                PlatformMemoryUtils.CopyMemory(Data + curPos, res0, cnt);
+                PlatformMemoryUtils.CopyMemory(_data + curPos, res0, cnt);
             }
 
             return res;
@@ -296,7 +299,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureReadCapacityAndShift(Len2);
 
-            return *((short*)(Data + curPos));
+            return *((short*)(_data + curPos));
         }
 
         /** <inheritdoc /> */
@@ -317,7 +320,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureReadCapacityAndShift(Len2);
 
-            return *((char*)(Data + curPos));
+            return *((char*)(_data + curPos));
         }
 
         /** <inheritdoc /> */
@@ -338,7 +341,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureReadCapacityAndShift(Len4);
 
-            return *((int*)(Data + curPos));
+            return *((int*)(_data + curPos));
         }
         
         /** <inheritdoc /> */
@@ -359,7 +362,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureReadCapacityAndShift(Len8);
 
-            return *((long*)(Data + curPos));
+            return *((long*)(_data + curPos));
         }
         
         /** <inheritdoc /> */
@@ -380,7 +383,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureReadCapacityAndShift(Len4);
 
-            return *((float*)(Data + curPos));
+            return *((float*)(_data + curPos));
         }
 
         /** <inheritdoc /> */
@@ -401,7 +404,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureReadCapacityAndShift(Len8);
 
-            return *((double*)(Data + curPos));
+            return *((double*)(_data + curPos));
         }
 
         /** <inheritdoc /> */
@@ -464,7 +467,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         public void SynchronizeInput()
         {
-            Data = (byte*)_mem.Data;
+            _data = (byte*)_mem.Data;
             _cap = _mem.Capacity;
             _len = _mem.Length;
         }
@@ -482,7 +485,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         public void Reuse()
         {
-            Data = (byte*)_mem.Data;
+            _data = (byte*)_mem.Data;
             _cap = _mem.Capacity;
             _len = _mem.Length;
             _pos = 0;
@@ -553,7 +556,7 @@ namespace Apache.Ignite.Core.Impl.Memory
 
                 _mem.Reallocate(reqCap);
 
-                Data = (byte*)_mem.Data;
+                _data = (byte*)_mem.Data;
                 _cap = _mem.Capacity;
             }
         }
@@ -585,7 +588,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureReadCapacityAndShift(cnt);
 
-            PlatformMemoryUtils.CopyMemory(Data + curPos, dest, cnt);
+            PlatformMemoryUtils.CopyMemory(_data + curPos, dest, cnt);
         }
 
         /// <summary>
@@ -597,7 +600,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             int curPos = EnsureWriteCapacityAndShift(cnt);
 
-            PlatformMemoryUtils.CopyMemory(src, Data + curPos, cnt);
+            PlatformMemoryUtils.CopyMemory(src, _data + curPos, cnt);
         }
 
         /// <summary>
@@ -638,11 +641,34 @@ namespace Apache.Ignite.Core.Impl.Memory
         /** <inheritdoc /> */
         public void Dispose()
         {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        /** <inheritdoc /> */
+        ~PlatformMemoryStream()
+        {
+            Dispose(false);
+        }
+
+        /// <summary>
+        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+        /// </summary>
+        protected virtual void Dispose(bool disposing)
+        {
             SynchronizeOutput();
 
             _mem.Release();
         }
-        
+
+        /// <summary>
+        /// Gets the data.
+        /// </summary>
+        protected byte* Data
+        {
+            get { return _data; }
+        }
+
         #endregion
 
         #region ARRAYS
@@ -660,7 +686,7 @@ namespace Apache.Ignite.Core.Impl.Memory
 
             fixed (byte* res0 = res)
             {
-                PlatformMemoryUtils.CopyMemory(Data, res0, res.Length);
+                PlatformMemoryUtils.CopyMemory(_data, res0, res.Length);
             }
 
             return res;

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryUtils.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryUtils.cs
index dd53281..a991b3d 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformMemoryUtils.cs
@@ -72,7 +72,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
         /// <returns>Data pointer.</returns>
-        public static long Data(long memPtr)
+        public static long GetData(long memPtr)
         {
             return *((long*)memPtr);
         }
@@ -82,7 +82,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
         /// <returns>CalculateCapacity.</returns>
-        public static int Capacity(long memPtr) 
+        public static int GetCapacity(long memPtr) 
         {
             return *((int*)(memPtr + MemHdrOffCap));
         }
@@ -92,7 +92,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
         /// <param name="cap">CalculateCapacity.</param>
-        public static void Capacity(long memPtr, int cap) 
+        public static void SetCapacity(long memPtr, int cap) 
         {
             *((int*)(memPtr + MemHdrOffCap)) = cap;
         }
@@ -102,7 +102,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
         /// <returns>Length.</returns>
-        public static int Length(long memPtr) 
+        public static int GetLength(long memPtr) 
         {
             return *((int*)(memPtr + MemHdrOffLen));
         }
@@ -112,7 +112,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
         /// <param name="len">Length.</param>
-        public static void Length(long memPtr, int len) 
+        public static void SetLength(long memPtr, int len) 
         {
             *((int*)(memPtr + MemHdrOffLen)) = len;
         }
@@ -122,7 +122,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
         /// <returns>Flags.</returns>
-        public static int Flags(long memPtr) 
+        public static int GetFlags(long memPtr) 
         {
             return *((int*)(memPtr + MemHdrOffFlags));
         }
@@ -132,7 +132,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// </summary>
         /// <param name="memPtr">Memory pointer.</param>
         /// <param name="flags">Flags.</param>
-        public static void Flags(long memPtr, int flags) 
+        public static void SetFlags(long memPtr, int flags) 
         {
             *((int*)(memPtr + MemHdrOffFlags)) = flags;
         }
@@ -144,7 +144,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// <returns><c>True</c> if owned by Java.</returns>
         public static bool IsExternal(long memPtr) 
         {
-            return IsExternal(Flags(memPtr));
+            return IsExternal(GetFlags(memPtr));
         }
 
         /// <summary>
@@ -164,7 +164,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// <returns><c>True</c> if pooled.</returns>
         public static bool IsPooled(long memPtr) 
         {
-            return IsPooled(Flags(memPtr));
+            return IsPooled(GetFlags(memPtr));
         }
 
         /// <summary>
@@ -184,7 +184,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// <returns><c>True</c> if acquired.</returns>
         public static bool IsAcquired(long memPtr)
         {
-            return IsAcquired(Flags(memPtr));
+            return IsAcquired(GetFlags(memPtr));
         }
 
         /// <summary>
@@ -228,7 +228,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// <returns></returns>
         public static void ReallocateUnpooled(long memPtr, int cap)
         {
-            long dataPtr = Data(memPtr);
+            long dataPtr = GetData(memPtr);
 
             long newDataPtr = Marshal.ReAllocHGlobal((IntPtr)dataPtr, (IntPtr)cap).ToInt64();
 
@@ -244,7 +244,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// <param name="memPtr">Memory pointer.</param>
         public static void ReleaseUnpooled(long memPtr) 
         {
-            Marshal.FreeHGlobal((IntPtr)Data(memPtr));
+            Marshal.FreeHGlobal((IntPtr)GetData(memPtr));
             Marshal.FreeHGlobal((IntPtr)memPtr);
         }
 
@@ -266,9 +266,9 @@ namespace Apache.Ignite.Core.Impl.Memory
                 *((long*)(poolPtr + i)) = 0;
 
             // 3. Set flags for memory chunks.
-            Flags(poolPtr + PoolHdrOffMem1, FlagExt | FlagPooled);
-            Flags(poolPtr + PoolHdrOffMem2, FlagExt | FlagPooled);
-            Flags(poolPtr + PoolHdrOffMem3, FlagExt | FlagPooled);
+            SetFlags(poolPtr + PoolHdrOffMem1, FlagExt | FlagPooled);
+            SetFlags(poolPtr + PoolHdrOffMem2, FlagExt | FlagPooled);
+            SetFlags(poolPtr + PoolHdrOffMem3, FlagExt | FlagPooled);
 
             return poolPtr;
         }
@@ -349,7 +349,7 @@ namespace Apache.Ignite.Core.Impl.Memory
             }
             else {
                 // Ensure that we have enough capacity.
-                int curCap = Capacity(memPtr);
+                int curCap = GetCapacity(memPtr);
 
                 if (cap > curCap) {
                     data = Marshal.ReAllocHGlobal((IntPtr)data, (IntPtr)cap).ToInt64();
@@ -359,7 +359,7 @@ namespace Apache.Ignite.Core.Impl.Memory
                 }
             }
 
-            Flags(memPtr, FlagExt | FlagPooled | FlagAcquired);
+            SetFlags(memPtr, FlagExt | FlagPooled | FlagAcquired);
         }
 
         /// <summary>
@@ -371,7 +371,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         {
             long data = *((long*)memPtr);
 
-            int curCap = Capacity(memPtr);
+            int curCap = GetCapacity(memPtr);
 
             if (cap > curCap) {
                 data = Marshal.ReAllocHGlobal((IntPtr)data, (IntPtr)cap).ToInt64();
@@ -387,7 +387,7 @@ namespace Apache.Ignite.Core.Impl.Memory
         /// <param name="memPtr">Memory pointer.</param>
         public static void ReleasePooled(long memPtr) 
         {
-            Flags(memPtr, Flags(memPtr) ^ FlagAcquired);
+            SetFlags(memPtr, GetFlags(memPtr) ^ FlagAcquired);
         }
 
         #endregion
@@ -401,12 +401,14 @@ namespace Apache.Ignite.Core.Impl.Memory
         private static readonly MemCopy Memcpy;
 
         /** Whether src and dest arguments are inverted. */
+        [SuppressMessage("Microsoft.Performance", "CA1802:UseLiteralsWhereAppropriate")]
         private static readonly bool MemcpyInverted;
 
         /// <summary>
         /// Static initializer.
         /// </summary>
         [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations")]
+        [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
         static PlatformMemoryUtils()
         {
             Type type = typeof(Buffer);

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs
index 206df4b..8428be7 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs
@@ -22,20 +22,16 @@ namespace Apache.Ignite.Core.Impl.Memory
     /// </summary>
     internal class PlatformPooledMemory : PlatformMemory
     {
-        /** Pool. */
-        private readonly PlatformMemoryPool _pool;
-
         /** Cached stream. */
         private PlatformMemoryStream _stream;
 
         /// <summary>
         /// Constructor.
         /// </summary>
-        /// <param name="pool">Pool.</param>
         /// <param name="memPtr">Memory pointer.</param>
-        public PlatformPooledMemory(PlatformMemoryPool pool, long memPtr) : base(memPtr)
+        public PlatformPooledMemory(long memPtr) : base(memPtr)
         {
-            _pool = pool;
+            // No-op.
         }
 
         /** <inheritdoc /> */
@@ -53,18 +49,18 @@ namespace Apache.Ignite.Core.Impl.Memory
         public override void Reallocate(int cap)
         {
             // Try doubling capacity to avoid excessive allocations.
-            int doubledCap = PlatformMemoryUtils.Capacity(MemPtr) << 1;
+            int doubledCap = PlatformMemoryUtils.GetCapacity(Pointer) << 1;
 
             if (doubledCap > cap)
                 cap = doubledCap;
 
-            _pool.Reallocate(MemPtr, cap);
+            PlatformMemoryPool.Reallocate(Pointer, cap);
         }
 
         /** <inheritdoc /> */
         public override void Release()
         {
-            _pool.Release(MemPtr); // Return to the pool.
+            PlatformMemoryPool.Release(Pointer); // Return to the pool.
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs
index 26c1bc1..e3da868 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs
@@ -35,18 +35,18 @@ namespace Apache.Ignite.Core.Impl.Memory
         public override void Reallocate(int cap)
         {
             // Try doubling capacity to avoid excessive allocations.
-            int doubledCap = ((PlatformMemoryUtils.Capacity(MemPtr) + 16) << 1) - 16;
+            int doubledCap = ((PlatformMemoryUtils.GetCapacity(Pointer) + 16) << 1) - 16;
 
             if (doubledCap > cap)
                 cap = doubledCap;
 
-            PlatformMemoryUtils.ReallocateUnpooled(MemPtr, cap);
+            PlatformMemoryUtils.ReallocateUnpooled(Pointer, cap);
         }
 
         /** <inheritdoc /> */
         public override void Release()
         {
-            PlatformMemoryUtils.ReleaseUnpooled(MemPtr);
+            PlatformMemoryUtils.ReleaseUnpooled(Pointer);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs
index 8111117..73d5a51 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs
@@ -19,6 +19,7 @@
 namespace Apache.Ignite.Core.Impl.Portable.IO
 {
     using System;
+    using System.Diagnostics.CodeAnalysis;
     using System.IO;
     using System.Text;
 
@@ -26,6 +27,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
     /// Stream capable of working with portable objects.
     /// </summary>
     [CLSCompliant(false)]
+    [SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix")]
     public unsafe interface IPortableStream : IDisposable
     {
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/PortableAbstractStream.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/PortableAbstractStream.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/PortableAbstractStream.cs
index 648d754..f84b5a3 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/PortableAbstractStream.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/Io/PortableAbstractStream.cs
@@ -37,16 +37,17 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         private static readonly MemCopy Memcpy;
 
         /** Whether src and dest arguments are inverted. */
+        [SuppressMessage("Microsoft.Performance", "CA1802:UseLiteralsWhereAppropriate")]
         private static readonly bool MemcpyInverted;
 
         /** Byte: zero. */
-        protected const byte ByteZero = 0;
+        private const byte ByteZero = 0;
 
         /** Byte: one. */
-        protected const byte ByteOne = 1;
+        private const byte ByteOne = 1;
 
         /** LITTLE_ENDIAN flag. */
-        protected static readonly bool LittleEndian = BitConverter.IsLittleEndian;
+        private static readonly bool LittleEndian = BitConverter.IsLittleEndian;
 
         /** Position. */
         protected int Pos;
@@ -58,6 +59,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// Static initializer.
         /// </summary>
         [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations")]
+        [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
         static PortableAbstractStream()
         {
             Type type = typeof(Buffer);
@@ -109,7 +111,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// </summary>
         /// <param name="val">Byte array.</param>
         /// <param name="data">Data pointer.</param>
-        protected void WriteByteArray0(byte[] val, byte* data)
+        protected static void WriteByteArray0(byte[] val, byte* data)
         {
             fixed (byte* val0 = val)
             {
@@ -132,7 +134,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="len">Array length.</param>
         /// <param name="data">Data pointer.</param>
         /// <returns>Byte array</returns>
-        protected byte[] ReadByteArray0(int len, byte* data)
+        protected static byte[] ReadByteArray0(int len, byte* data)
         {
             byte[] res = new byte[len];
 
@@ -175,7 +177,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// </summary>
         /// <param name="val">Bool array.</param>
         /// <param name="data">Data pointer.</param>
-        protected void WriteBoolArray0(bool[] val, byte* data)
+        protected static void WriteBoolArray0(bool[] val, byte* data)
         {
             fixed (bool* val0 = val)
             {
@@ -198,7 +200,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="len">Array length.</param>
         /// <param name="data">Data pointer.</param>
         /// <returns>Bool array</returns>
-        protected bool[] ReadBoolArray0(int len, byte* data)
+        protected static bool[] ReadBoolArray0(int len, byte* data)
         {
             bool[] res = new bool[len];
 
@@ -221,7 +223,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// </summary>
         /// <param name="val">Short value.</param>
         /// <param name="data">Data pointer.</param>
-        protected void WriteShort0(short val, byte* data)
+        protected static void WriteShort0(short val, byte* data)
         {
             if (LittleEndian)
                 *((short*)data) = val;
@@ -247,7 +249,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// </summary>
         /// <param name="data">Data pointer.</param>
         /// <returns>Short value</returns>
-        protected short ReadShort0(byte* data)
+        protected static short ReadShort0(byte* data)
         {
             short val;
 
@@ -276,7 +278,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="val">Short array.</param>
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
-        protected void WriteShortArray0(short[] val, byte* data, int cnt)
+        protected static void WriteShortArray0(short[] val, byte* data, int cnt)
         {
             if (LittleEndian)
             {
@@ -317,7 +319,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
         /// <returns>Short array</returns>
-        protected short[] ReadShortArray0(int len, byte* data, int cnt)
+        protected static short[] ReadShortArray0(int len, byte* data, int cnt)
         {
             short[] res = new short[len];
 
@@ -380,7 +382,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="val">Char array.</param>
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
-        protected void WriteCharArray0(char[] val, byte* data, int cnt)
+        protected static void WriteCharArray0(char[] val, byte* data, int cnt)
         {
             if (LittleEndian)
             {
@@ -421,7 +423,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
         /// <returns>Char array</returns>
-        protected char[] ReadCharArray0(int len, byte* data, int cnt)
+        protected static char[] ReadCharArray0(int len, byte* data, int cnt)
         {
             char[] res = new char[len];
 
@@ -468,7 +470,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// </summary>
         /// <param name="val">Int value.</param>
         /// <param name="data">Data pointer.</param>
-        protected void WriteInt0(int val, byte* data)
+        protected static void WriteInt0(int val, byte* data)
         {
             if (LittleEndian)
                 *((int*)data) = val;
@@ -496,7 +498,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// </summary>
         /// <param name="data">Data pointer.</param>
         /// <returns>Int value</returns>
-        protected int ReadInt0(byte* data) {
+        protected static int ReadInt0(byte* data) {
             int val;
 
             if (LittleEndian)
@@ -526,7 +528,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="val">Int array.</param>
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
-        protected void WriteIntArray0(int[] val, byte* data, int cnt)
+        protected static void WriteIntArray0(int[] val, byte* data, int cnt)
         {
             if (LittleEndian)
             {
@@ -569,7 +571,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
         /// <returns>Int array</returns>
-        protected int[] ReadIntArray0(int len, byte* data, int cnt)
+        protected static int[] ReadIntArray0(int len, byte* data, int cnt)
         {
             int[] res = new int[len];
 
@@ -636,7 +638,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="val">Int array.</param>
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
-        protected void WriteFloatArray0(float[] val, byte* data, int cnt)
+        protected static void WriteFloatArray0(float[] val, byte* data, int cnt)
         {
             if (LittleEndian)
             {
@@ -679,7 +681,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
         /// <returns>Float array</returns>
-        protected float[] ReadFloatArray0(int len, byte* data, int cnt)
+        protected static float[] ReadFloatArray0(int len, byte* data, int cnt)
         {
             float[] res = new float[len];
 
@@ -721,7 +723,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// </summary>
         /// <param name="val">Long value.</param>
         /// <param name="data">Data pointer.</param>
-        protected void WriteLong0(long val, byte* data)
+        protected static void WriteLong0(long val, byte* data)
         {
             if (LittleEndian)
                 *((long*)data) = val;
@@ -753,7 +755,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// </summary>
         /// <param name="data">Data pointer.</param>
         /// <returns>Long value</returns>
-        protected long ReadLong0(byte* data)
+        protected static long ReadLong0(byte* data)
         {
             long val;
 
@@ -788,7 +790,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="val">Long array.</param>
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
-        protected void WriteLongArray0(long[] val, byte* data, int cnt)
+        protected static void WriteLongArray0(long[] val, byte* data, int cnt)
         {
             if (LittleEndian)
             {
@@ -835,7 +837,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
         /// <returns>Long array</returns>
-        protected long[] ReadLongArray0(int len, byte* data, int cnt)
+        protected static long[] ReadLongArray0(int len, byte* data, int cnt)
         {
             long[] res = new long[len];
 
@@ -906,7 +908,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="val">Double array.</param>
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
-        protected void WriteDoubleArray0(double[] val, byte* data, int cnt)
+        protected static void WriteDoubleArray0(double[] val, byte* data, int cnt)
         {
             if (LittleEndian)
             {
@@ -953,7 +955,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="data">Data pointer.</param>
         /// <param name="cnt">Bytes count.</param>
         /// <returns>Double array</returns>
-        protected double[] ReadDoubleArray0(int len, byte* data, int cnt)
+        protected static double[] ReadDoubleArray0(int len, byte* data, int cnt)
         {
             double[] res = new double[len];
 
@@ -1009,7 +1011,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="enc">Encoding.</param>
         /// <param name="data">Data.</param>
         /// <returns>Amount of bytes written.</returns>
-        protected int WriteString0(char* chars, int charCnt, int byteCnt, Encoding enc, byte* data)
+        protected static int WriteString0(char* chars, int charCnt, int byteCnt, Encoding enc, byte* data)
         {
             return enc.GetBytes(chars, charCnt, data, byteCnt);
         }
@@ -1253,7 +1255,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// Shift position due to read.
         /// </summary>
         /// <param name="cnt">Bytes count.</param>
-        protected void ShiftRead(int cnt)
+        private void ShiftRead(int cnt)
         {
             Pos += cnt;
         }
@@ -1287,7 +1289,7 @@ namespace Apache.Ignite.Core.Impl.Portable.IO
         /// <param name="src">Source.</param>
         /// <param name="dest">Destination.</param>
         /// <param name="len">Length.</param>
-        public static void CopyMemory(byte* src, byte* dest, int len)
+        private static void CopyMemory(byte* src, byte* dest, int len)
         {
             if (MemcpyInverted)
                 Memcpy.Invoke(dest, src, len);

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableBuilderImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableBuilderImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableBuilderImpl.cs
index 7ea565b..d18434a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableBuilderImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableBuilderImpl.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl.Portable
 {
     using System;
     using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
     using System.IO;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Impl.Portable.IO;
@@ -66,6 +67,7 @@ namespace Apache.Ignite.Core.Impl.Portable
         /// <summary>
         /// Static initializer.
         /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
         static PortableBuilderImpl()
         {
             TypeIds = new Dictionary<Type, int>();
@@ -112,18 +114,6 @@ namespace Apache.Ignite.Core.Impl.Portable
         /// Constructor.
         /// </summary>
         /// <param name="portables">Portables.</param>
-        /// <param name="obj">Initial portable object.</param>
-        /// <param name="desc">Type descriptor.</param>
-        public PortableBuilderImpl(PortablesImpl portables, PortableUserObject obj,
-            IPortableTypeDescriptor desc) : this(portables, null, obj, desc) 
-        { 
-            // No-op.
-        }
-
-        /// <summary>
-        /// Constructor.
-        /// </summary>
-        /// <param name="portables">Portables.</param>
         /// <param name="parent">Parent builder.</param>
         /// <param name="obj">Initial portable object.</param>
         /// <param name="desc">Type descriptor.</param>
@@ -220,7 +210,9 @@ namespace Apache.Ignite.Core.Impl.Portable
         /// <returns>Child builder.</returns>
         public PortableBuilderImpl Child(PortableUserObject obj)
         {
-            return _portables.ChildBuilder(_parent, obj);
+            var desc = _portables.Marshaller.Descriptor(true, obj.TypeId);
+
+            return new PortableBuilderImpl(_portables, null, obj, desc);
         }
         
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableMarshaller.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableMarshaller.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableMarshaller.cs
index f41962d..c7a0b7b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableMarshaller.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableMarshaller.cs
@@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl.Portable
 {
     using System;
     using System.Collections.Generic;
+    using System.Globalization;
     using System.Linq;
     using Apache.Ignite.Core.Impl.Cache;
     using Apache.Ignite.Core.Impl.Cache.Query.Continuous;
@@ -533,7 +534,7 @@ namespace Apache.Ignite.Core.Impl.Portable
 
             var args = type.GetGenericArguments().Select(GetTypeName).Aggregate((x, y) => x + "," + y);
 
-            return string.Format("{0}[{1}]", type.Name, args);
+            return string.Format(CultureInfo.InvariantCulture, "{0}[{1}]", type.Name, args);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableSystemHandlers.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableSystemHandlers.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableSystemHandlers.cs
index 4e67370..c02c457 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableSystemHandlers.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableSystemHandlers.cs
@@ -22,6 +22,7 @@ namespace Apache.Ignite.Core.Impl.Portable
     using System.Collections.Concurrent;
     using System.Collections.Generic;
     using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Impl.Common;
     using Apache.Ignite.Core.Impl.Portable.IO;
 
@@ -70,9 +71,11 @@ namespace Apache.Ignite.Core.Impl.Portable
         public static readonly PortableSystemWriteDelegate WriteHndGenericDictionary =
             WriteGenericDictionary;
 
-        /**
-         * <summary>Static initializer.</summary>
-         */
+        /// <summary>
+        /// Initializes the <see cref="PortableSystemHandlers"/> class.
+        /// </summary>
+        [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline", 
+            Justification = "Readability.")]
         static PortableSystemHandlers()
         {
             // 1. Primitives.

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs
index 546ccaa..2344db2 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortableUtils.cs
@@ -22,6 +22,7 @@ namespace Apache.Ignite.Core.Impl.Portable
     using System.Collections.Concurrent;
     using System.Collections.Generic;
     using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
     using System.IO;
     using System.Reflection;
     using System.Runtime.Serialization.Formatters.Binary;
@@ -1543,7 +1544,7 @@ namespace Apache.Ignite.Core.Impl.Portable
             if (Enum.GetUnderlyingType(val.GetType()) == TypInt)
             {
                 stream.WriteInt(ObjTypeId);
-                stream.WriteInt(Convert.ToInt32(val));
+                stream.WriteInt((int) (object) val);
             }
             else
                 throw new PortableException("Only Int32 underlying type is supported for enums: " +
@@ -1610,7 +1611,8 @@ namespace Apache.Ignite.Core.Impl.Portable
 
         public static string CleanFieldName(string fieldName)
         {
-            if (fieldName.StartsWith("<") && fieldName.EndsWith(">k__BackingField"))
+            if (fieldName.StartsWith("<", StringComparison.Ordinal)
+                && fieldName.EndsWith(">k__BackingField", StringComparison.Ordinal))
                 return fieldName.Substring(1, fieldName.IndexOf(">", StringComparison.Ordinal) - 1);
             
             return fieldName;
@@ -1934,6 +1936,7 @@ namespace Apache.Ignite.Core.Impl.Portable
         /// <param name="writer">Writer.</param>
         /// <param name="success">Success flag.</param>
         /// <param name="res">Result.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         public static void WriteWrappedInvocationResult(PortableWriterImpl writer, bool success, object res)
         {
             var pos = writer.Stream.Position;
@@ -1976,6 +1979,7 @@ namespace Apache.Ignite.Core.Impl.Portable
         /// <param name="writer">Writer.</param>
         /// <param name="success">Success flag.</param>
         /// <param name="res">Result.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         public static void WriteInvocationResult(PortableWriterImpl writer, bool success, object res)
         {
             var pos = writer.Stream.Position;

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortablesImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortablesImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortablesImpl.cs
index f769e3f..b120041 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortablesImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/PortablesImpl.cs
@@ -147,19 +147,6 @@ namespace Apache.Ignite.Core.Impl.Portable
         }
 
         /// <summary>
-        /// Create child builder.
-        /// </summary>
-        /// <param name="parent">Parent builder.</param>
-        /// <param name="obj">Portable object.</param>
-        /// <returns></returns>
-        internal PortableBuilderImpl ChildBuilder(PortableBuilderImpl parent, PortableUserObject obj)
-        {
-            IPortableTypeDescriptor desc = _marsh.Descriptor(true, obj.TypeId);
-
-            return Builder0(null, obj, desc);
-        }
-
-        /// <summary>
         /// Marshaller.
         /// </summary>
         internal PortableMarshaller Marshaller

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs
index 0785f4a..8a738c2 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs
@@ -21,6 +21,7 @@ namespace Apache.Ignite.Core.Impl.Portable
     using System.Collections.Generic;
     using System.Diagnostics;
     using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
     using System.Linq;
     using System.Reflection;
     using System.Text.RegularExpressions;
@@ -118,7 +119,8 @@ namespace Apache.Ignite.Core.Impl.Portable
                 return null;
 
             var genericType = ResolveNonGenericType(assemblyName,
-                string.Format("{0}`{1}", match.Groups[1].Value, genericArgs.Length), assemblies);
+                string.Format(CultureInfo.InvariantCulture, "{0}`{1}", match.Groups[1].Value, genericArgs.Length),
+                assemblies);
 
             if (genericType == null)
                 return null;
@@ -131,7 +133,9 @@ namespace Apache.Ignite.Core.Impl.Portable
         /// </summary>
         private static string TrimBrackets(string s)
         {
-            return s.StartsWith("[") && s.EndsWith("]") ? s.Substring(1, s.Length - 2) : s;
+            return s.StartsWith("[", StringComparison.Ordinal) && s.EndsWith("]", StringComparison.Ordinal) 
+                ? s.Substring(1, s.Length - 2) 
+                : s;
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxyInvoker.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxyInvoker.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxyInvoker.cs
index fa5da17..9cf173b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxyInvoker.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxyInvoker.cs
@@ -20,6 +20,8 @@ namespace Apache.Ignite.Core.Impl.Services
     using System;
     using System.Collections.Generic;
     using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
     using System.Linq;
     using System.Reflection;
 
@@ -36,6 +38,7 @@ namespace Apache.Ignite.Core.Impl.Services
         /// <param name="methodName">Name of the method.</param>
         /// <param name="arguments">Arguments.</param>
         /// <returns>Pair of method return value and invocation exception.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
         public static KeyValuePair<object, Exception> InvokeServiceMethod(object svc, string methodName, 
             object[] arguments)
         {
@@ -75,8 +78,8 @@ namespace Apache.Ignite.Core.Impl.Services
 
             if (methods.Length == 0)
                 throw new InvalidOperationException(
-                    string.Format("Failed to invoke proxy: there is no method '{0}' in type '{1}'", 
-                    methodName, svcType));
+                    string.Format(CultureInfo.InvariantCulture,
+                        "Failed to invoke proxy: there is no method '{0}' in type '{1}'", methodName, svcType));
 
             // 2) There is more than 1 method with specified name - resolve with argument types.
             methods = methods.Where(m => AreMethodArgsCompatible(arguments, m.GetParameters())).ToArray();
@@ -93,12 +96,14 @@ namespace Apache.Ignite.Core.Impl.Services
 
             if (methods.Length == 0)
                 throw new InvalidOperationException(
-                    string.Format("Failed to invoke proxy: there is no method '{0}' in type '{1}' with {2} arguments",
-                    methodName, svcType, argsString));
+                    string.Format(CultureInfo.InvariantCulture,
+                        "Failed to invoke proxy: there is no method '{0}' in type '{1}' with {2} arguments",
+                        methodName, svcType, argsString));
 
             throw new InvalidOperationException(
-                string.Format("Failed to invoke proxy: there are {2} methods '{0}' in type '{1}' with {3} " +
-                              "arguments, can't resolve ambiguity.", methodName, svcType, methods.Length, argsString));
+                string.Format(CultureInfo.InvariantCulture,
+                    "Failed to invoke proxy: there are {2} methods '{0}' in type '{1}' with {3} " +
+                    "arguments, can't resolve ambiguity.", methodName, svcType, methods.Length, argsString));
         }
         
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs
index 47c9f93..35dad92 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Impl.Transactions
 {
     using System;
+    using System.Diagnostics.CodeAnalysis;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Transactions;
 
@@ -39,6 +40,8 @@ namespace Apache.Ignite.Core.Impl.Transactions
         }
 
         /** <inheritDoc /> */
+        [SuppressMessage("Microsoft.Usage", "CA1816:CallGCSuppressFinalizeCorrectly",
+            Justification = "There is no finalizer.")]
         public void Dispose()
         {
             Tx.Dispose();

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9256a1e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs
index 9e71181..3d1e57d 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs
@@ -18,6 +18,7 @@
 namespace Apache.Ignite.Core.Impl.Transactions
 {
     using System;
+    using System.Globalization;
     using System.Threading;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Impl.Common;
@@ -26,7 +27,7 @@ namespace Apache.Ignite.Core.Impl.Transactions
     /// <summary>
     /// Grid cache transaction implementation.
     /// </summary>
-    internal sealed class TransactionImpl
+    internal sealed class TransactionImpl : IDisposable
     {
         /** Metadatas. */
         private object[] _metas;
@@ -400,7 +401,8 @@ namespace Apache.Ignite.Core.Impl.Transactions
         /// </summary>
         private InvalidOperationException GetClosedException()
         {
-            return new InvalidOperationException(string.Format("Transaction {0} is closed, state is {1}", Id, State));
+            return new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, 
+                "Transaction {0} is closed, state is {1}", Id, State));
         }
 
         /// <summary>