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 本身无关。