返回提交历史
Added
XFE各类拓展.NetCore.XUnit.Analyzer/AnalyzerReleases.Shipped.md
+3
-0
Added
XFE各类拓展.NetCore.XUnit.Analyzer/AnalyzerReleases.Unshipped.md
+8
-0
Added
XFE各类拓展.NetCore.XUnit.Analyzer/XUnitCodeAnalyzer.cs
+54
-0
Modified
XFE各类拓展.NetCore.XUnit.Analyzer/XUnitCodeGenerator.cs
+1
-3
Added
XFE各类拓展.NetCore.XUnit.Test/Program.cs
+10
-0
Added
XFE各类拓展.NetCore.XUnit.Test/XFE各类拓展.NetCore.XUnit.Test.csproj
+20
-0
Modified
XFE各类拓展.NetCore.XUnit.sln
+8
-2
XFEstudio/XFEExtension.NetCore.XUnit
添加错误分析器的静态方法分析功能
ed2822d
代码差异
7 个文件
+104
-5
@@ -0,0 +1,3 @@
1
; Shipped analyzer releases
2
; https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md
3
@@ -0,0 +1,8 @@
1
; Unshipped analyzer release
2
; https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md
3
4
### New Rules
5
6
Rule ID | Category | Severity | Notes
7
--------|----------|----------|-------
8
XFE0001 | XFE各类拓展.NetCore.XUnit.Analyzer | Error | XUnitCodeAnalyzer
@@ -0,0 +1,54 @@
1
using Microsoft.CodeAnalysis;
2
using Microsoft.CodeAnalysis.CSharp;
3
using Microsoft.CodeAnalysis.CSharp.Syntax;
4
using System.Linq;
5
6
namespace XFE各类拓展.NetCore.XUnit.Analyzer
7
{
8
[Generator]
9
public class XUnitCodeAnalyzer : ISourceGenerator
10
{
11
public static readonly DiagnosticDescriptor SMTestError = new DiagnosticDescriptor("XFE0001",
12
"不能标记非静态方法",
13
"SMTest特性不能用在静态方法之外的地方:'{0}'",
14
"XFE各类拓展.NetCore.XUnit.Analyzer",
15
DiagnosticSeverity.Error,
16
true,
17
"SMTest特性不能用在静态方法之外的地方.",
18
null);
19
public void Initialize(GeneratorInitializationContext context)
20
{
21
}
22
23
public void Execute(GeneratorExecutionContext context)
24
{
25
AttributeAnalyzer(context);
26
}
27
public static void AttributeAnalyzer(GeneratorExecutionContext context)
28
{
29
var syntaxTrees = context.Compilation.SyntaxTrees;
30
foreach (var syntaxTree in syntaxTrees)
31
{
32
var root = syntaxTree.GetRoot();
33
var classes = root.DescendantNodes().OfType<ClassDeclarationSyntax>();
34
var methodDeclarations = root.DescendantNodes().OfType<MethodDeclarationSyntax>();
35
foreach (var methodDeclaration in methodDeclarations)
36
{
37
var modifiers = methodDeclaration.Modifiers;
38
bool isStatic = modifiers.Any(modifier => modifier.IsKind(SyntaxKind.StaticKeyword));
39
if (isStatic)
40
continue;
41
var methodName = methodDeclaration.Identifier.ValueText;
42
var attributes = methodDeclaration.AttributeLists.SelectMany(attributeList => attributeList.Attributes);
43
foreach (var attribute in attributes)
44
{
45
if (attribute.Name.ToString() != "SMTest")
46
continue;
47
var diagnostic = Diagnostic.Create(SMTestError, attribute.GetLocation(), methodName);
48
context.ReportDiagnostic(diagnostic);
49
}
50
}
51
}
52
}
53
}
54
}
@@ -11,9 +11,7 @@ namespace XFE各类拓展.NetCore.XUnit
11
11
12
12
public void Execute(GeneratorExecutionContext context)
13
13
{
14
string source = $@"global using XFE各类拓展.NetCore.XUnit;
15
16
namespace XFE各类拓展.NetCore.XUnit
14
string source = $@"namespace XFE各类拓展.NetCore.XUnit
17
15
{{
18
16
public static class XUnitCode
19
17
{{
@@ -0,0 +1,10 @@
1
namespace XFE各类拓展.NetCore.XUnit.Test;
2
3
class Program
4
{
5
[SMTest]
6
static void MainTest()
7
{
8
Console.WriteLine("Hello World!");
9
}
10
}
@@ -0,0 +1,20 @@
1
<Project Sdk="Microsoft.NET.Sdk">
2
3
<PropertyGroup>
4
<OutputType>Exe</OutputType>
5
<TargetFramework>net8.0</TargetFramework>
6
<ImplicitUsings>enable</ImplicitUsings>
7
<Nullable>enable</Nullable>
8
</PropertyGroup>
9
10
<ItemGroup>
11
<ProjectReference Include="..\XFE各类拓展.NetCore.XUnit.Analyzer\XFE各类拓展.NetCore.XUnit.Analyzer.csproj"
12
OutputItemType="Analyzer"
13
ReferenceOutputAssembly="false" />
14
</ItemGroup>
15
16
<ItemGroup>
17
<PackageReference Include="XFE各类拓展.NetCore" Version="1.5.3" />
18
</ItemGroup>
19
20
</Project>
@@ -3,12 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
3
3
# Visual Studio Version 17
4
4
VisualStudioVersion = 17.8.34525.116
5
5
MinimumVisualStudioVersion = 10.0.40219.1
6
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XFE各类拓展.NetCore.XUnit", "XFE各类拓展.NetCore.XUnit\XFE各类拓展.NetCore.XUnit.csproj", "{024C8A43-C965-48EC-A6B8-A06765698D4D}"
6
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XFE各类拓展.NetCore.XUnit", "XFE各类拓展.NetCore.XUnit\XFE各类拓展.NetCore.XUnit.csproj", "{024C8A43-C965-48EC-A6B8-A06765698D4D}"
7
7
ProjectSection(ProjectDependencies) = postProject
8
8
{4E353122-756D-4DBF-A97B-F364DDB2BF5F} = {4E353122-756D-4DBF-A97B-F364DDB2BF5F}
9
9
EndProjectSection
10
10
EndProject
11
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XFE各类拓展.NetCore.XUnit.Analyzer", "XFE各类拓展.NetCore.XUnit.Analyzer\XFE各类拓展.NetCore.XUnit.Analyzer.csproj", "{4E353122-756D-4DBF-A97B-F364DDB2BF5F}"
11
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XFE各类拓展.NetCore.XUnit.Analyzer", "XFE各类拓展.NetCore.XUnit.Analyzer\XFE各类拓展.NetCore.XUnit.Analyzer.csproj", "{4E353122-756D-4DBF-A97B-F364DDB2BF5F}"
12
EndProject
13
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XFE各类拓展.NetCore.XUnit.Test", "XFE各类拓展.NetCore.XUnit.Test\XFE各类拓展.NetCore.XUnit.Test.csproj", "{0D786DCC-9157-4F27-BBA8-247BFED38F4B}"
12
14
EndProject
13
15
Global
14
16
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -24,6 +26,10 @@ Global
24
26
{4E353122-756D-4DBF-A97B-F364DDB2BF5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
25
27
{4E353122-756D-4DBF-A97B-F364DDB2BF5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
26
28
{4E353122-756D-4DBF-A97B-F364DDB2BF5F}.Release|Any CPU.Build.0 = Release|Any CPU
29
{0D786DCC-9157-4F27-BBA8-247BFED38F4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30
{0D786DCC-9157-4F27-BBA8-247BFED38F4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
31
{0D786DCC-9157-4F27-BBA8-247BFED38F4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
32
{0D786DCC-9157-4F27-BBA8-247BFED38F4B}.Release|Any CPU.Build.0 = Release|Any CPU
27
33
EndGlobalSection
28
34
GlobalSection(SolutionProperties) = preSolution
29
35
HideSolutionNode = FALSE