Swagger json 验证未使用的模型警告
Swagger json validation unused model warnings
我在使用 OpenApi json 数据验证时遇到问题。基于 OpenApi 验证(或 editor.swagger.io),我的 JSON 文件有未使用的模型。我应该摆脱警告,几乎所有警告都来自 System.Reflection 命名空间。
示例:
: System.Reflection
- Unused model: PropertyInfo
- Unused model: MethodImplAttributes
- Unused model: FieldAttributes
- Unused model: EventAttributes
- Unused model: MethodAttributes
- Unused model: FieldInfo
- Unused model: PropertyAttributes
:其余全部
- Unused model: Type --system
- Unused model: SecurityRuleSet --system.security
当我运行 应用程序(.NET Core 3.1 with swagger package)时生成json
Install-Package Swashbuckle.AspNetCore -Version 5.6.3
Startup.cs
// Clears servers list and adds default server entry with relative url respecting
app.UseSwagger(c=>c.ForceSingleServerWithRelativeAddress());
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = string.Empty;
c.EnableDeepLinking();
});
如果在项目的其他地方使用了 System.Reflection 包(或任何其他命名空间,如 System.Security 等),我如何才能消除这些警告。我不能只是自定义 MS 包来摆脱未使用的模型,它就是这样。
我在 Swagger 设置过程中是否遗漏了任何启动选项,是否会导致问题?
警告(未使用的模型)没有给我任何堆栈跟踪、root 或任何东西,仅仅是因为项目中不存在未使用的模型吗?
项目某处使用system.reflection的exmaple方法:
public async Task<IEnumerable<IssueSimple>> GetSimpleIssues(int id)
{
string method = MethodBase.GetCurrentMethod().Name; //that one using System.Reflection
return null; // not to expose business logic
}
打开Api命令用于验证(json和打开api文件必须在同一文件夹中)
java -jar openapi-generator-cli-5.1.1.jar validate -i gittesting.json
json 文件的一部分:
"PropertyInfo": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true,
"readOnly": true
},
"declaringType": {
"$ref": "#/components/schemas/Type"
},
"reflectedType": {
"$ref": "#/components/schemas/Type"
},
"customAttributes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CustomAttributeData"
},
"nullable": true,
"readOnly": true
},
"isCollectible": {
"type": "boolean",
"readOnly": true
},
"metadataToken": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"memberType": {
"$ref": "#/components/schemas/MemberTypes"
},
"propertyType": {
"$ref": "#/components/schemas/Type"
},
"attributes": {
"$ref": "#/components/schemas/PropertyAttributes"
},
"isSpecialName": {
"type": "boolean",
"readOnly": true
},
"canRead": {
"type": "boolean",
"readOnly": true
},
"canWrite": {
"type": "boolean",
"readOnly": true
}
},
"additionalProperties": false
////////////////////////////////////////////////////
////////////////////////////////////////////////////
"PropertyAttributes": {
"enum": [
"None",
"SpecialName",
"RTSpecialName",
"HasDefault",
"Reserved2",
"Reserved3",
"Reserved4",
"ReservedMask"
],
"type": "string",
"format": "int32"
},
普遍的问题是为什么在这个模型不用的时候添加这个?当 MS 软件包全局添加未使用的模型时,我如何摆脱这些模型?
这是由内部控制器属性和错误 return 类型(设置不正确)引起的。与 open api/swagger 本身无关。
我在使用 OpenApi json 数据验证时遇到问题。基于 OpenApi 验证(或 editor.swagger.io),我的 JSON 文件有未使用的模型。我应该摆脱警告,几乎所有警告都来自 System.Reflection 命名空间。
示例:
: System.Reflection
- Unused model: PropertyInfo
- Unused model: MethodImplAttributes
- Unused model: FieldAttributes
- Unused model: EventAttributes
- Unused model: MethodAttributes
- Unused model: FieldInfo
- Unused model: PropertyAttributes
:其余全部
- Unused model: Type --system
- Unused model: SecurityRuleSet --system.security
当我运行 应用程序(.NET Core 3.1 with swagger package)时生成json
Install-Package Swashbuckle.AspNetCore -Version 5.6.3
Startup.cs
// Clears servers list and adds default server entry with relative url respecting
app.UseSwagger(c=>c.ForceSingleServerWithRelativeAddress());
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = string.Empty;
c.EnableDeepLinking();
});
如果在项目的其他地方使用了 System.Reflection 包(或任何其他命名空间,如 System.Security 等),我如何才能消除这些警告。我不能只是自定义 MS 包来摆脱未使用的模型,它就是这样。
我在 Swagger 设置过程中是否遗漏了任何启动选项,是否会导致问题?
警告(未使用的模型)没有给我任何堆栈跟踪、root 或任何东西,仅仅是因为项目中不存在未使用的模型吗?
项目某处使用system.reflection的exmaple方法:
public async Task<IEnumerable<IssueSimple>> GetSimpleIssues(int id)
{
string method = MethodBase.GetCurrentMethod().Name; //that one using System.Reflection
return null; // not to expose business logic
}
打开Api命令用于验证(json和打开api文件必须在同一文件夹中)
java -jar openapi-generator-cli-5.1.1.jar validate -i gittesting.json
json 文件的一部分:
"PropertyInfo": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true,
"readOnly": true
},
"declaringType": {
"$ref": "#/components/schemas/Type"
},
"reflectedType": {
"$ref": "#/components/schemas/Type"
},
"customAttributes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CustomAttributeData"
},
"nullable": true,
"readOnly": true
},
"isCollectible": {
"type": "boolean",
"readOnly": true
},
"metadataToken": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"memberType": {
"$ref": "#/components/schemas/MemberTypes"
},
"propertyType": {
"$ref": "#/components/schemas/Type"
},
"attributes": {
"$ref": "#/components/schemas/PropertyAttributes"
},
"isSpecialName": {
"type": "boolean",
"readOnly": true
},
"canRead": {
"type": "boolean",
"readOnly": true
},
"canWrite": {
"type": "boolean",
"readOnly": true
}
},
"additionalProperties": false
////////////////////////////////////////////////////
////////////////////////////////////////////////////
"PropertyAttributes": {
"enum": [
"None",
"SpecialName",
"RTSpecialName",
"HasDefault",
"Reserved2",
"Reserved3",
"Reserved4",
"ReservedMask"
],
"type": "string",
"format": "int32"
},
普遍的问题是为什么在这个模型不用的时候添加这个?当 MS 软件包全局添加未使用的模型时,我如何摆脱这些模型?
这是由内部控制器属性和错误 return 类型(设置不正确)引起的。与 open api/swagger 本身无关。