Diagnóstico do Dev Proxy Toolkit

A extensão do Dev Proxy Toolkit VS Code analisa os seus ficheiros de configuração do Proxy de Desenvolvimento e destaca potenciais problemas. Cada diagnóstico tem um código que liga a esta página para orientação de resolução.

Referência de códigos de diagnóstico

Código Severity Description
apiCenterPluginOrder Advertência Ordem incorreta dos plugins para o API Center
deprecatedPluginPath Erro Usando o antigo caminho DLL do plugin
emptyUrlsToWatch Informação Nenhuma URL configurada para intercetar
invalidConfigSection Advertência Secção de configuração órfã
invalidConfigSectionSchema Advertência Incompatibilidade de versão do esquema da secção de configuração
invalidConfigValue Erro Valor inválido na secção de configuração
invalidSchema Advertência Incompatibilidade da versão do esquema com o Proxy de Desenvolvimento instalado
MissingLanguageModel Informação O plugin pode usar o modelo de linguagem local para melhorar a saída
NoEnabledPlugins Advertência Nenhum plugin está ativado
pluginConfigMissing Erro/Aviso Secção de configuração referenciada em falta
pluginConfigNãoNecessário Erro/Aviso Secção de configuração desnecessária
pluginConfigRequired Erro/Aviso O plugin requer configuração
repórterPosição Advertência O plugin Reporter não está no fim da lista
resumoSemRepórter Advertência Plugin de resumo sem repárter
unknownConfigProperty Advertência Propriedade desconhecida na secção de configuração

apiCenterPluginOrder

Gravidade: Aviso
Soluçã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

Lugar 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"
  }
}

deprecatedPluginPath

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

Utiliza pluginPath um formato de path obsoleto.

Motivo

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

Resolução

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

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

emptyUrlsToWatch

Gravidade: Informação
Solução rápida disponível: Não

O urlsToWatch array está vazio.

Motivo

O Proxy de desenvolvimento é usado urlsToWatch para determinar quais os pedidos a interceptar. Um array vazio significa que nenhum pedido será processado.

Resolução

Adicionar padrões de URL para intercetar:

{
  "$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
Solução rápida disponível: Não

Existe uma secção de configuração, mas nenhum plugin a referencia.

Motivo

Existe um objeto de topo que não é usado como configSection um por nenhum plugin. Isto acontece frequentemente depois de remover um plugin mas esquecer de remover a sua configuração.

Resolução

Ou remove a secção dos órfãos ou adiciona um plugin que a referencia:

{
  "$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
Solução rápida disponível: Sim

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

Motivo

A sua secção de configuração refere-se a uma versão de esquema diferente do Proxy de Desenvolvimento instalado. Isto pode causar problemas de validação ou falta de funcionalidades.

Resolução

Atualize a propriedade da $schema secção de configuração para corresponder à sua versão instalada. Use a soluçã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
Solução rápida disponível: Não

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

Motivo

O valor pode ser do tipo errado (por exemplo, string em vez de number), fora dos intervalos permitidos, ou não estar na lista de opções válidas.

Resolução

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

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

invalidSchema

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

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

Motivo

A tua configuração refere-se a uma versão diferente do esquema do Proxy de Desenvolvimento instalado. Isto pode causar problemas de validação ou falta de funcionalidades.

Resolução

Atualize a $schema propriedade para corresponder à sua versão instalada. Use a soluçã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ção
Solução rápida disponível: Sim

Um plugin pode usar um modelo de linguagem local, mas languageModel.enabled não trueé .

Motivo

Plugins como OpenAIMockResponsePlugin, OpenApiSpecGeneratorPlugin, e TypeSpecGeneratorPlugin podem usar um modelo de linguagem local para melhorar a sua saída. Ao ligar o Dev Proxy a um modelo de linguagem local, pode beneficiar da funcionalidade melhorada sem incorrer em custos adicionais.

Resolução

Adicione ou atualize a languageModel configuração. Use a solução rápida para adicionar ou atualizar languageModel.enabled: true automaticamente. Para mais informações, veja Usar modelo de linguagem local com Devy Proxy.

{
  "$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
Solução rápida disponível: Não

O plugins array está vazio ou todos os plugins estão desativados.

Motivo

O Proxy de desenvolvimento requer pelo menos um plugin ativado para processar pedidos.

Resolução

Adicione pelo menos um plugin 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 (plugin ativado) / Aviso (plugin desativado)
Solução rápida disponível: Não

Um plugin faz referência a configSection um que não existe.

Motivo

O plugin tem uma configSection propriedade, mas o objeto de configuração correspondente está ausente no ficheiro.

Resolução

Adicione a secção de configuração em falta. Use o nome do excerto 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"
  }
}

pluginConfigNãoNecessário

Gravidade: Erro (plugin ativado) / Aviso (plugin desativado)
Solução rápida disponível: Não

Um plugin tem um configSection mas não suporta configuração.

Motivo

Nem todos os plugins suportam configuração personalizada. Adicionar a configSection a a um plugin que não precisa de um não tem efeito.

Resolução

Remover 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 (plugin ativado) / Aviso (plugin desativado)
Solução rápida disponível: Não

Um plugin requer um configSection mas nenhum é especificado.

Motivo

Alguns plugins requerem configuração para funcionar. A definição do plugin não tem essa configSection propriedade.

Resolução

Adicione uma configSection propriedade e crie o objeto de configuração. Use o nome do excerto 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
  }
}

repórterPosição

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

Um plugin repórter é colocado antes de outros plugins não repórter.

Motivo

Os plugins do Reporter recolhem a saída de outros plugins. Colocá-los antes de outros plugins significa que não vão capturar todos os dados.

Resolução

Mover os plugins do repórter para o final do plugins array:

{
  "$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
  }
}

resumoSemRepórter

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

Um plugin de resumo está ativado sem um plugin de repórter.

Motivo

Os plugins gostam ExecutionSummaryPlugin e UrlDiscoveryPlugin geram dados que requerem um plugin de repórter para serem produzidos.

Resolução

Adicione um plugin de repórter após o plugin 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
Solução rápida disponível: Sim

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

Motivo

A propriedade pode estar mal escrita, de uma versão diferente do Dev Proxy, ou não existir para este plugin.

Resolução

Remova ou renomeie a propriedade desconhecida. Use a solução rápida para remover automaticamente.

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