Skip to content

Commit

Permalink
Merge pull request #6192 from yaakov-h/yaakov/ca2101-bestfitmapping
Browse files Browse the repository at this point in the history
Fix CA2101 triggering when BestFitMapping=false
  • Loading branch information
mavasani authored Oct 2, 2022
2 parents e63ca39 + 049eddb commit 7916ed7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public void AnalyzeSymbol(SymbolAnalysisContext context)
}

// CA2101 - Specify marshalling for PInvoke string arguments
if (dllImportData.BestFitMapping != false ||
if (dllImportData.BestFitMapping != false &&
context.Options.GetMSBuildPropertyValue(MSBuildPropertyOptionNames.InvariantGlobalization, context.Compilation) is not "true")
{
bool appliedCA2101ToMethod = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,43 @@ End Class
BasicResult2101(22, 30));
}

[Fact]
public async Task CA2101WithoutBestFitMappingCSharpTestAsync()
{
await VerifyCS.VerifyAnalyzerAsync(@"
using System.Runtime.InteropServices;
using System.Text;
class C
{
[DllImport(""user32.dll"", BestFitMapping = false)]
private static extern void Method1(string s);
[DllImport(""user32.dll"", CharSet = CharSet.Ansi, BestFitMapping = false)]
private static extern void Method2(string s);
[DllImport(""user32.dll"", BestFitMapping = false)]
private static extern void Method3(StringBuilder s);
[DllImport(""user32.dll"", CharSet = CharSet.Ansi, BestFitMapping = false)]
private static extern void Method4(StringBuilder s);
[DllImport(""user32.dll"", BestFitMapping = false)]
private static extern string Method5();
[DllImport(""user32.dll"", BestFitMapping = false)]
private static extern StringBuilder Method6();
[DllImport(""user32.dll"", CharSet = CharSet.Ansi, BestFitMapping = false)]
private static extern string Method7();
[DllImport(""user32.dll"", CharSet = CharSet.Ansi, BestFitMapping = false)]
private static extern StringBuilder Method8();
}
");
}

#endregion
}
}

0 comments on commit 7916ed7

Please sign in to comment.