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.
27 lines
1.0 KiB
C#
27 lines
1.0 KiB
C#
using Microsoft.CodeAnalysis.CodeRefactorings;
|
|
using Microsoft.CodeAnalysis.CSharp.Testing;
|
|
using Microsoft.CodeAnalysis.Testing.Verifiers;
|
|
|
|
namespace Misaki.HighPerformance.Analyzer.Test
|
|
{
|
|
public static partial class CSharpCodeRefactoringVerifier<TCodeRefactoring>
|
|
where TCodeRefactoring : CodeRefactoringProvider, new()
|
|
{
|
|
public class Test : CSharpCodeRefactoringTest<TCodeRefactoring, MSTestVerifier>
|
|
{
|
|
public Test()
|
|
{
|
|
SolutionTransforms.Add((solution, projectId) =>
|
|
{
|
|
var compilationOptions = solution.GetProject(projectId).CompilationOptions;
|
|
compilationOptions = compilationOptions.WithSpecificDiagnosticOptions(
|
|
compilationOptions.SpecificDiagnosticOptions.SetItems(CSharpVerifierHelper.NullableWarnings));
|
|
solution = solution.WithProjectCompilationOptions(projectId, compilationOptions);
|
|
|
|
return solution;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|