diff --git a/install/StyleCop.nuspec b/install/StyleCop.nuspec
index 09bf4cc..706016b 100644
--- a/install/StyleCop.nuspec
+++ b/install/StyleCop.nuspec
@@ -9,6 +9,7 @@
StyleCop analyzes C# source code to enforce a set of style and consistency rules. Maintained by JetBrains
StyleCop analyzes C# source code to enforce a set of style and consistency rules. This plugin is compatible with StyleCop 4.7.54, and maintained by JetBrains.
+• Create SuppressMessage attribute parameters more reliably
• Works properly if StyleCop 4.7.49 is already loaded in Visual Studio
From 2016.1.3:
diff --git a/src/StyleCop.ReSharper/BulbItems/Framework/SuppressMessageBulbItem.cs b/src/StyleCop.ReSharper/BulbItems/Framework/SuppressMessageBulbItem.cs
index c7a0af2..e9c4634 100644
--- a/src/StyleCop.ReSharper/BulbItems/Framework/SuppressMessageBulbItem.cs
+++ b/src/StyleCop.ReSharper/BulbItems/Framework/SuppressMessageBulbItem.cs
@@ -21,7 +21,9 @@ namespace StyleCop.ReSharper.BulbItems.Framework
using JetBrains.Application.Settings;
using JetBrains.ProjectModel;
using JetBrains.ReSharper.Psi;
+ using JetBrains.ReSharper.Psi.CodeStyle;
using JetBrains.ReSharper.Psi.CSharp;
+ using JetBrains.ReSharper.Psi.CSharp.CodeStyle;
using JetBrains.ReSharper.Psi.CSharp.Tree;
using JetBrains.TextControl;
@@ -61,8 +63,6 @@ public override void ExecuteTransactionInner(ISolution solution, ITextControl te
string justificationText = settingsStore.GetValue((StyleCopOptionsSettingsKey key) => key.SuppressStyleCopAttributeJustificationText);
- IAttributesOwnerDeclaration attributesOwnerDeclaration = declaration as IAttributesOwnerDeclaration;
-
CSharpElementFactory factory = CSharpElementFactory.GetInstance(declaration.GetPsiModule());
ITypeElement typeElement = Utils.GetTypeElement(declaration, "System.Diagnostics.CodeAnalysis.SuppressMessageAttribute");
@@ -73,9 +73,12 @@ public override void ExecuteTransactionInner(ISolution solution, ITextControl te
ICSharpArgument newArg2 = attribute.AddArgumentAfter(Utils.CreateConstructorArgumentValueExpression(declaration.GetPsiModule(), ruleText), newArg1);
- attribute.AddArgumentAfter(Utils.CreateArgumentValueExpression(declaration.GetPsiModule(), "Justification = \"" + justificationText + "\""), newArg2);
+ IPropertyAssignment propertyAssignment = factory.CreatePropertyAssignment(
+ "Justification",
+ factory.CreateExpression("\"$0\"", justificationText));
+ attribute.AddPropertyAssignmentAfter(propertyAssignment, null);
- attributesOwnerDeclaration.AddAttributeAfter(attribute, null);
+ declaration.AddAttributeAfter(attribute, null);
}
}
}