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); } } }