import { criarOcorrencia } from '../../../types/index.js';
export const detectorAzurePerformance = {
    nome: 'detector-azure-performance',
    categoria: 'performance',
    descricao: 'Detecta problemas de performance em Azure Pipelines',
    test: (relPath) => relPath.includes('azure-pipelines') && /\.(ya?ml)$/i.test(relPath),
    aplicar: (src, relPath) => {
        if (!src)
            return [];
        const ocorrencias = [];
        if (!/task:\s*Cache@/i.test(src) && !/CacheBeta@/i.test(src)) {
            ocorrencias.push(criarOcorrencia({
                tipo: 'azure-pipelines-missing-cache',
                nivel: 'aviso',
                mensagem: 'Tarefa de Cache (Cache@2) não configurada',
                relPath,
                linha: 1,
                sugestao: 'Implemente Cache@2 para dependências (npm, nuget, maven) para reduzir o tempo de build'
            }));
        }
        if (/task:\s*DotNetCoreCLI@.*test/i.test(src) || /task:\s*Npm@.*test/i.test(src)) {
            if (!/parallel:\s*\d+/i.test(src) && !/strategy:\s*matrix:/i.test(src)) {
                ocorrencias.push(criarOcorrencia({
                    tipo: 'azure-pipelines-optimization-parallel',
                    nivel: 'info',
                    mensagem: 'Testes detectados sem estratégia de paralelismo',
                    relPath,
                    linha: 1,
                    sugestao: 'Use "strategy: parallel" ou "matrix" para dividir a carga de testes entre múltiplos agentes'
                }));
            }
        }
        if (/(stage|job).*deploy/i.test(src) && !/checkout:\s*none/i.test(src)) {
            ocorrencias.push(criarOcorrencia({
                tipo: 'azure-pipelines-checkout-none',
                nivel: 'info',
                mensagem: 'Job de deploy pode não precisar do código fonte completo',
                relPath,
                linha: 1,
                sugestao: 'Use "checkout: none" se o job apenas consome artifacts, economizando tempo de clonagem'
            }));
        }
        return ocorrencias;
    }
};
//# sourceMappingURL=detector-azure-performance.js.map