-
Notifications
You must be signed in to change notification settings - Fork 0
Diagnósticos e quick fix
A extensão oferece dois tipos de diagnóstico automático para reduzir o atrito de configuração e acelerar o ciclo TDD:
- Compilation diagnostics — erros de compilação PL/SQL capturados do output dos testes e exibidos como sublinhados no editor.
- Setup diagnostics — validação proativa de CLI, conexão, grants e versão do utPLSQL, com quick-fix actions no Problems Panel.
Após cada execução de testes, a extensão analisa o output do CLI em busca de
erros de compilação Oracle (PLS-*, ORA-06550) e os exibe como
vscode.Diagnostic no editor.
executeRun() → CLI executa → stdout contém erros de compilação
→ compilationDiagnostics.parseFromOutput() → resolveFiles() → apply()
→ VSCode Problems Panel mostra os erros
→ Editor mostra sublinhados vermelhos
Se um pacote de teste tem erro de sintaxe:
create or replace package test_foo as
-- %suite(Foo)
procedure bar;
end;
-- falta o END; no bodyO output do CLI conterá:
Package TEST_FOO compiled with errors
ORA-06550: line 12, column 5:
PLS-00103: Encountered the symbol "END"
A extensão extrai isso e mostra no editor:
-
Arquivo:
tests/test_foo.pks - Linha 12, coluna 5 — sublinhado vermelho
-
Problems Panel:
[PLS-00103] Encountered the symbol "END"(source: "utPLSQL Compilation")

- Funciona apenas no modo CLI (parse do stdout). O modo Oracle direto não gera compilation diagnostics.
- Mapeia erros para arquivos
.pks/.pkbno workspace. Código externo (ex.: packages padrão Oracle) é ignorado.
Na ativação da extensão, o SetupValidator verifica proativamente problemas
comuns de configuração:
| Verificação | Diagnostic | Severity |
|---|---|---|
| CLI não encontrado | UTPLSQL_NO_CLI |
Error |
| Java não encontrado (modo java) | UTPLSQL_NO_JAVA |
Error |
| Conexão Oracle inválida | UTPLSQL_BAD_CONN |
Error |
| utPLSQL < 3.1.0 no banco | UTPLSQL_OLD_VERSION |
Warning |
| Objetos inválidos no schema utPLSQL | UTPLSQL_INVALID_OBJECTS |
Warning |
| Cobertura falhou (pós-execução) | UTPLSQL_NO_COVERAGE |
Warning |
A verificação de objetos inválidos (ALL_OBJECTS para PACKAGE/TYPE/
PACKAGE BODY no schema utPLSQL) é best-effort: assíncrona, sem prompt de
conexão, timeout de 5s e silenciosa em falha. Gates: setupDiagnostics.enabled: false ou runnerMode: cli suprimem a verificação.
Os resultados aparecem no Problems Panel com source "utPLSQL Setup".
Cada diagnostic oferece uma Code Action (ícone de lâmpada 💡 ou Ctrl+.):
| Diagnostic | Quick-fix |
|---|---|
| CLI não encontrado | Configurar utplsql.cliPath → abre settings.json |
| Conexão inválida |
Reconfigurar conexão → abre settings em utplsql.connection
|
| Grants de cobertura | Copiar grants para clipboard → copia SQL pronto para colar |
| Objetos inválidos no utPLSQL |
Recompilar UT3 → DBMS_UTILITY.COMPILE_SCHEMA e re-verifica |
| Comando | Descrição |
|---|---|
utPLSQL: Validar configuração |
Roda validação completa (setup + integridade da instalação utPLSQL) e mostra resultado no Problems Panel |
utPLSQL: Configurar conexão |
Abre settings em utplsql.connection
|
utPLSQL: Copiar grants de cobertura |
Copia GRANT EXECUTE ON DBMS_PROFILER ... para clipboard |
Recompilar UT3 não é um comando da paleta — é um quick-fix (
utplsql.recompileUt3, interno) disponível apenas no diagnosticUTPLSQL_INVALID_OBJECTS.
{
// Habilitado por padrão. Desabilite para remover os diagnósticos:
"utplsql.setupDiagnostics.enabled": false
}O fluxo completo de diagnóstico cobre todo o ciclo de vida:

Abrir workspace
→ Setup diagnostics: CLI OK? Conexão OK? Versão OK? Instalação utPLSQL íntegra?
→ Se problemas: Problems Panel + quick-fix actions
Rodar testes
→ Compilation diagnostics: erros PL/SQL no editor
Após execução
→ Se cobertura falhou: diagnostic com grants
Todos os diagnósticos são não-bloqueantes — os testes rodam mesmo com warnings. Apenas erros críticos (sem CLI, sem conexão) impedem a execução.
- Getting Started
- Usage
- Advanced Tools
- Reference
- Development
- Help
{ // Habilitado por padrão. Desabilite se não quiser os sublinhados: "utplsql.compilationDiagnostics.enabled": false }