import { messages } from '../../../core/messages/index.js';
import { maskPythonComments, splitLines } from '../../../shared/helpers/index.js';
import { criarOcorrencia } from '../../../types/index.js';
export function detectarCorrecoesPython(src, _relPath) {
    const correcoes = [];
    const scan = maskPythonComments(src);
    const linhas = splitLines(scan);
    linhas.forEach((linha, index) => {
        const numeroLinha = index + 1;
        if (/^\s*except\s*:/.test(linha)) {
            correcoes.push({
                tipo: 'python-bare-except',
                original: linha.trim(),
                sugerido: linha.replace(/except\s*:/, 'except Exception:'),
                linha: numeroLinha,
                confianca: 95
            });
        }
        if (/def\s+\w+\s*\([^)]*=\s*(?:\[|\{)[^\)]*\)/.test(linha)) {
            const match = linha.match(/def\s+(\w+)\s*\(([^)]*)\)/);
            if (match) {
                correcoes.push({
                    tipo: 'python-mutable-default',
                    original: linha.trim(),
                    sugerido: `# Refatore: def ${match[1]}(${match[2].replace(/=\s*(?:\[|\{)/, '=None')})`,
                    linha: numeroLinha,
                    confianca: 85
                });
            }
        }
        if (/^\s*print\s*\(/.test(linha)) {
            correcoes.push({
                tipo: 'python-print-to-logging',
                original: linha.trim(),
                sugerido: linha.replace(/^\s*print\s*\(/, 'logging.info('),
                linha: numeroLinha,
                confianca: 70
            });
        }
    });
    return correcoes;
}
export const correctionPython = {
    nome: 'correction-python',
    categoria: 'framework',
    descricao: 'Correções automáticas para problemas Python',
    test: (relPath) => /\.(py|pyx|pyi)$/i.test(relPath),
    aplicar: (src, relPath) => {
        if (!src)
            return [];
        const correcoes = detectarCorrecoesPython(src, relPath);
        return correcoes.map(elem => criarOcorrencia({
            tipo: `correction-${elem.tipo}`,
            nivel: elem.confianca > 85 ? 'aviso' : 'info',
            mensagem: messages.SharedCommonMensagens.correcaoSugerida(elem.tipo),
            relPath,
            linha: elem.linha,
            sugestao: `[ERRO] ${elem.original}\n[OK] ${elem.sugerido}\nConfiança: ${elem.confianca}%`
        }));
    }
};
//# sourceMappingURL=correction-python.js.map