Diagnóstico do Kit de Ferramentas de Proxy de Desenvolvimento

A extensão vs code do Kit de Ferramentas de Proxy de Desenvolvimento analisa os arquivos de configuração do Proxy de Desenvolvimento e realça possíveis problemas. Cada diagnóstico tem um código que é vinculado a esta página para obter diretrizes de resolução.

Referência de códigos de diagnóstico

Code Severity Description
apiCenterPluginOrder Aviso Ordem de plug-in incorreta para o Centro de API
preteridoPluginPath Erro Usando o caminho DLL do plug-in antigo
emptyUrlsToWatch Informação Nenhuma URL configurada para interceptar
invalidConfigSection Aviso Seção de configuração órfã
invalidConfigSectionSchema Aviso Incompatibilidade de versão do esquema da seção de configuração
invalidConfigValue Erro Valor inválido na seção de configuração
invalidSchema Aviso Incompatibilidade de versão do esquema com o Proxy de Desenvolvimento instalado
missingLanguageModel Informação O plug-in pode usar o modelo de idioma local para melhorar a saída
noEnabledPlugins Aviso Nenhum plug-in está habilitado
pluginConfigMissing Erro/Aviso Seção de configuração referenciada ausente
pluginConfigNotRequired Erro/Aviso Seção de configuração desnecessária
pluginConfigRequired Erro/Aviso O plug-in requer configuração
reporterPosition Aviso Plug-in de repórter não no final da lista
summaryWithoutReporter Aviso Plug-in de resumo sem repórter
unknownConfigProperty Aviso Propriedade desconhecida na seção de configuração

apiCenterPluginOrder

Gravidade: Aviso
Correção rápida disponível: Não

OpenApiSpecGeneratorPlugin é colocado após ApiCenterOnboardingPlugin.

Motivo

OpenApiSpecGeneratorPlugin deve gerar a especificação OpenAPI antes ApiCenterOnboardingPlugin de poder usá-la.

Resolução

Coloque OpenApiSpecGeneratorPlugin antes ApiCenterOnboardingPlugin:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "OpenApiSpecGeneratorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/apicenteronboardingplugin.schema.json",
    "subscriptionId": "your-subscription-id",
    "resourceGroupName": "your-resource-group",
    "serviceName": "your-api-center",
    "workspaceName": "default"
  }
}

preteridoPluginPath

Gravidade: Erro
Correção rápida disponível: Sim

O pluginPath usa um formato de caminho preterido.

Motivo

No Proxy de Desenvolvimento v0.29, a DLL do plug-in foi renomeada de dev-proxy-plugins.dll para DevProxy.Plugins.dll.

Resolução

Atualize o pluginPath formato para usar o novo formato. Use a correção rápida para atualizar automaticamente.

{
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
}

emptyUrlsToWatch

Gravidade: Informações
Correção rápida disponível: Não

A urlsToWatch matriz está vazia.

Motivo

O Proxy de Desenvolvimento usa urlsToWatch para determinar quais solicitações interceptar. Uma matriz vazia significa que nenhuma solicitação será processada.

Resolução

Adicione padrões de URL para interceptar:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*",
    "https://graph.microsoft.com/v1.0/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

invalidConfigSection

Gravidade: Aviso
Correção rápida disponível: Não

Existe uma seção de configuração, mas nenhum plug-in faz referência a ela.

Motivo

Existe um objeto de nível superior que não é usado como um configSection por qualquer plug-in. Isso geralmente acontece depois de remover um plug-in, mas esquecer de remover sua configuração.

Resolução

Remova a seção órfã ou adicione um plug-in que faça referência a ela:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
    "rate": 50
  }
}

invalidConfigSectionSchema

Gravidade: Aviso
Correção rápida disponível: Sim

A propriedade da $schema seção de configuração não corresponde à versão do Proxy de Desenvolvimento instalada.

Motivo

Sua seção de configuração faz referência a uma versão de esquema diferente do Proxy de Desenvolvimento instalado. Isso pode causar problemas de validação ou recursos ausentes.

Resolução

Atualize a propriedade da $schema seção de configuração para corresponder à sua versão instalada. Use a correção rápida (ícone de lâmpada ou Ctrl+. / Cmd+.) para atualizar automaticamente.

{
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

invalidConfigValue

Gravidade: Erro
Correção rápida disponível: Não

Um valor de propriedade na seção de configuração não corresponde ao tipo esperado ou às restrições definidas no esquema.

Motivo

O valor pode ser o tipo errado (por exemplo, cadeia de caracteres em vez de número), intervalos permitidos externos ou não na lista de opções válidas.

Resolução

Verifique a documentação do esquema para o formato de valor esperado e atualize adequadamente.

{
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
    "rate": 50
  }
}

invalidSchema

Gravidade: Aviso
Correção rápida disponível: Sim

A $schema propriedade não corresponde à versão do Proxy de Desenvolvimento instalada.

Motivo

Sua configuração faz referência a uma versão de esquema diferente do Proxy de Desenvolvimento instalado. Isso pode causar problemas de validação ou recursos ausentes.

Resolução

Atualize a $schema propriedade para corresponder à sua versão instalada. Use a correção rápida (ícone de lâmpada ou Ctrl+. / Cmd+.) para atualizar automaticamente.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json"
}

missingLanguageModel

Gravidade: Informações
Correção rápida disponível: Sim

Um plug-in pode usar um modelo de idioma local, mas languageModel.enabled não trueé .

Motivo

Plug-ins como OpenAIMockResponsePlugin, OpenApiSpecGeneratorPlugine TypeSpecGeneratorPlugin podem usar um modelo de idioma local para melhorar sua saída. Ao conectar o Proxy de Desenvolvimento a um modelo de idioma local, você pode se beneficiar da funcionalidade aprimorada sem incorrer em custos extras.

Resolução

Adicione ou atualize a languageModel configuração. Use a correção rápida para adicionar ou atualizar languageModel.enabled: true automaticamente. Para obter mais informações, consulte Usar o modelo de idioma local com o Proxy de Desenvolvimento.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "OpenAIMockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "openAIMockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.openai.com/*"
  ],
  "languageModel": {
    "enabled": true
  },
  "openAIMockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/openaimockresponseplugin.schema.json"
  }
}

noEnabledPlugins

Gravidade: Aviso
Correção rápida disponível: Não

A plugins matriz está vazia ou todos os plug-ins estão desabilitados.

Motivo

O Proxy de Desenvolvimento requer pelo menos um plug-in habilitado para processar solicitações.

Resolução

Adicione pelo menos um plug-in com enabled: true:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

pluginConfigMissing

Gravidade: Erro (plug-in habilitado) /Aviso (plug-in desabilitado)
Correção rápida disponível: Não

Um plug-in faz referência a um configSection que não existe.

Motivo

O plug-in tem uma configSection propriedade, mas o objeto de configuração correspondente está ausente do arquivo.

Resolução

Adicione a seção de configuração ausente. Use o nome do snippet mostrado na mensagem de diagnóstico.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

pluginConfigNotRequired

Gravidade: Erro (plug-in habilitado) /Aviso (plug-in desabilitado)
Correção rápida disponível: Não

Um plug-in tem uma configSection configuração mas não dá suporte à configuração.

Motivo

Nem todos os plug-ins dão suporte à configuração personalizada. Adicionar um configSection plug-in que não precisa de um não tem efeito.

Resolução

Remova a configSection propriedade:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "RetryAfterPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ]
}

pluginConfigRequired

Gravidade: Erro (plug-in habilitado) /Aviso (plug-in desabilitado)
Correção rápida disponível: Não

Um plug-in requer um configSection , mas nenhum é especificado.

Motivo

Alguns plug-ins exigem a configuração para funcionar. A definição do plug-in não tem a configSection propriedade.

Resolução

Adicione uma configSection propriedade e crie o objeto de configuração. Use o nome do snippet mostrado na mensagem de diagnóstico.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "errors.json",
    "rate": 50
  }
}

reporterPosition

Gravidade: Aviso
Correção rápida disponível: Não

Um plug-in de repórter é colocado antes de outros plug-ins não reportadores.

Motivo

Os plug-ins do repórter coletam a saída de outros plug-ins. Colocá-los antes de outros plug-ins significa que eles não capturarão todos os dados.

Resolução

Mover plug-ins de repórter para o final da plugins matriz:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    },
    {
      "name": "LatencyPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "latencyPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  },
  "latencyPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/latencyplugin.schema.json",
    "minMs": 200,
    "maxMs": 10000
  }
}

summaryWithoutReporter

Gravidade: Aviso
Correção rápida disponível: Não

Um plug-in de resumo está habilitado sem um plug-in de repórter.

Motivo

Os plug-ins gostam ExecutionSummaryPlugin e UrlDiscoveryPlugin geram dados que exigem um plug-in de repórter para a saída.

Resolução

Adicione um plug-in de repórter após o plug-in de resumo:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "ExecutionSummaryPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ]
}

unknownConfigProperty

Gravidade: Aviso
Correção rápida disponível: Sim

Uma seção de configuração contém uma propriedade que não está definida em seu esquema.

Motivo

A propriedade pode ser incorreta, de uma versão diferente do Proxy de Desenvolvimento ou não existe para esse plug-in.

Resolução

Remova ou renomeie a propriedade desconhecida. Use a correção rápida para removê-la automaticamente.

{
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}