Skip to content

Commit 2729559

Browse files
committed
Create SuppressMessage attribute params properly
1 parent dbb14a1 commit 2729559

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

install/StyleCop.nuspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<summary>StyleCop analyzes C# source code to enforce a set of style and consistency rules. Maintained by JetBrains</summary>
1010
<description>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.</description>
1111
<releaseNotes>
12+
&#8226; Create SuppressMessage attribute parameters more reliably
1213
&#8226; Works properly if StyleCop 4.7.49 is already loaded in Visual Studio
1314

1415
From 2016.1.3:

src/StyleCop.ReSharper/BulbItems/Framework/SuppressMessageBulbItem.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ namespace StyleCop.ReSharper.BulbItems.Framework
2121
using JetBrains.Application.Settings;
2222
using JetBrains.ProjectModel;
2323
using JetBrains.ReSharper.Psi;
24+
using JetBrains.ReSharper.Psi.CodeStyle;
2425
using JetBrains.ReSharper.Psi.CSharp;
26+
using JetBrains.ReSharper.Psi.CSharp.CodeStyle;
2527
using JetBrains.ReSharper.Psi.CSharp.Tree;
2628
using JetBrains.TextControl;
2729

@@ -61,8 +63,6 @@ public override void ExecuteTransactionInner(ISolution solution, ITextControl te
6163

6264
string justificationText = settingsStore.GetValue((StyleCopOptionsSettingsKey key) => key.SuppressStyleCopAttributeJustificationText);
6365

64-
IAttributesOwnerDeclaration attributesOwnerDeclaration = declaration as IAttributesOwnerDeclaration;
65-
6666
CSharpElementFactory factory = CSharpElementFactory.GetInstance(declaration.GetPsiModule());
6767

6868
ITypeElement typeElement = Utils.GetTypeElement(declaration, "System.Diagnostics.CodeAnalysis.SuppressMessageAttribute");
@@ -73,9 +73,12 @@ public override void ExecuteTransactionInner(ISolution solution, ITextControl te
7373

7474
ICSharpArgument newArg2 = attribute.AddArgumentAfter(Utils.CreateConstructorArgumentValueExpression(declaration.GetPsiModule(), ruleText), newArg1);
7575

76-
attribute.AddArgumentAfter(Utils.CreateArgumentValueExpression(declaration.GetPsiModule(), "Justification = \"" + justificationText + "\""), newArg2);
76+
IPropertyAssignment propertyAssignment = factory.CreatePropertyAssignment(
77+
"Justification",
78+
factory.CreateExpression("\"$0\"", justificationText));
79+
attribute.AddPropertyAssignmentAfter(propertyAssignment, null);
7780

78-
attributesOwnerDeclaration.AddAttributeAfter(attribute, null);
81+
declaration.AddAttributeAfter(attribute, null);
7982
}
8083
}
8184
}

0 commit comments

Comments
 (0)