import { messages } from '../../../core/messages/index.js';
import { detectarContextoProjeto } from '../../../shared/index.js';
import { detectarComentariosPendentes } from '../../../shared/helpers/index.js';
import { criarOcorrencia } from '../../../types/index.js';
export const analistaTodoComentarios = {
    nome: 'todo-comments',
    categoria: 'qualidade',
    descricao: 'Detecta comentários TODO/FIXME deixados no código.',
    global: false,
    test(relPath) {
        const contextoArquivo = detectarContextoProjeto({
            arquivo: relPath,
            conteudo: '',
            relPath
        });
        if (contextoArquivo.isTest || contextoArquivo.isConfiguracao || contextoArquivo.frameworks.includes('types')) {
            return false;
        }
        if (/analistas[\\\/]analista-todo-comments\.(ts|js)$/i.test(relPath))
            return false;
        return /\.(ts|js|tsx|jsx)$/i.test(relPath);
    },
    aplicar(src, relPath, _ast) {
        if (!src || typeof src !== 'string')
            return null;
        const contextoArquivo = detectarContextoProjeto({
            arquivo: relPath,
            conteudo: src,
            relPath
        });
        const nivelTodo = contextoArquivo.isLibrary ? 'aviso' : 'info';
        const todos = detectarComentariosPendentes(src);
        if (todos.length === 0)
            return null;
        return todos.map(todo => criarOcorrencia({
            tipo: 'TODO-pendente',
            mensagem: messages.TodoComentariosMensagens.todoOrFixmeFound(todo.tipo === 'FIXME' ? 'FIXME' : 'TODO', todo.texto.substring(0, 50)),
            nivel: todo.tipo === 'FIXME' ? 'aviso' : nivelTodo,
            relPath,
            linha: todo.linha,
            origem: 'todo-comments'
        }));
    }
};
//# sourceMappingURL=analyst-todo-comments.js.map