import { detectorJenkinsBestPractices } from '../detectors/detector-jenkins-best-practices.js';
import { detectorJenkinsSecurity } from '../detectors/detector-jenkins-security.js';
export const analistaJenkins = {
    nome: 'jenkins',
    categoria: 'workflows',
    descricao: 'Analista de pipelines Jenkins (Jenkinsfile)',
    test: (relPath) => relPath.toLowerCase().includes('jenkinsfile'),
    aplicar: async (conteudo, relPath, _ast = null, _fc, contexto) => {
        const ocorrencias = [];
        const securityResults = await Promise.resolve(detectorJenkinsSecurity.aplicar(conteudo, relPath, null, _fc, contexto));
        const bestPracticesResults = await Promise.resolve(detectorJenkinsBestPractices.aplicar(conteudo, relPath, null, _fc, contexto));
        ocorrencias.push(...securityResults, ...bestPracticesResults);
        if (!/pipeline\s*\{/i.test(conteudo) && !/node\s*\{/i.test(conteudo)) {
            ocorrencias.push({
                tipo: 'JENKINS_INVALID_STRUCTURE',
                mensagem: 'O arquivo não parece ser um Jenkinsfile válido (falta bloco pipeline ou node)',
                relPath,
                linha: 1,
                nivel: 'erro',
                sugestao: 'Certifique-se de que o arquivo segue a sintaxe Declarativa (pipeline { ... }) ou Scripted (node { ... })'
            });
        }
        return ocorrencias;
    }
};
//# sourceMappingURL=analyst-jenkins.js.map