Some checks failed
Publish NuGet Packages / publish (pull_request) Has been cancelled
Introduce a Roslyn analyzer to enforce unique ownership semantics for structs marked with the `[NonCopyable]` attribute. Added a corresponding code fix to resolve violations by suggesting the use of `Share()` or other ownership transfer methods. Key changes: - Added `StructCopyCodeAnalyzer` to detect invalid struct copies. - Implemented `StructCopyCodeFixProvider` to provide code fixes. - Created `Misaki.HighPerformance.Analyzer` and `CodeFixes` projects. - Added unit tests for the analyzer and code fixes. - Introduced `UniquePtr<T>` and `SharedPtr<T>` for pointer ownership. - Added a Visual Studio extension project and packaging support. - Updated `UnsafeUtility` to use `nint`/`nuint` for indices.
39 lines
1.7 KiB
C#
39 lines
1.7 KiB
C#
using Microsoft.CodeAnalysis;
|
|
using Microsoft.CodeAnalysis.Diagnostics;
|
|
using Microsoft.CodeAnalysis.Testing;
|
|
using Microsoft.CodeAnalysis.Testing.Verifiers;
|
|
using Microsoft.CodeAnalysis.VisualBasic.Testing;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Misaki.HighPerformance.Analyzer.Test
|
|
{
|
|
public static partial class VisualBasicAnalyzerVerifier<TAnalyzer>
|
|
where TAnalyzer : DiagnosticAnalyzer, new()
|
|
{
|
|
/// <inheritdoc cref="AnalyzerVerifier{TAnalyzer, TTest, TVerifier}.Diagnostic()"/>
|
|
public static DiagnosticResult Diagnostic()
|
|
=> VisualBasicAnalyzerVerifier<TAnalyzer, MSTestVerifier>.Diagnostic();
|
|
|
|
/// <inheritdoc cref="AnalyzerVerifier{TAnalyzer, TTest, TVerifier}.Diagnostic(string)"/>
|
|
public static DiagnosticResult Diagnostic(string diagnosticId)
|
|
=> VisualBasicAnalyzerVerifier<TAnalyzer, MSTestVerifier>.Diagnostic(diagnosticId);
|
|
|
|
/// <inheritdoc cref="AnalyzerVerifier{TAnalyzer, TTest, TVerifier}.Diagnostic(DiagnosticDescriptor)"/>
|
|
public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor)
|
|
=> VisualBasicAnalyzerVerifier<TAnalyzer, MSTestVerifier>.Diagnostic(descriptor);
|
|
|
|
/// <inheritdoc cref="AnalyzerVerifier{TAnalyzer, TTest, TVerifier}.VerifyAnalyzerAsync(string, DiagnosticResult[])"/>
|
|
public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected)
|
|
{
|
|
var test = new Test
|
|
{
|
|
TestCode = source,
|
|
};
|
|
|
|
test.ExpectedDiagnostics.AddRange(expected);
|
|
await test.RunAsync(CancellationToken.None);
|
|
}
|
|
}
|
|
}
|