Analisador Estático Baseado em AST para Detecção de Padrões MC³ em Submissões Funcionalmente Corretas (AC)

Módulo pós-AC via AST/CFG (tree-sitter, ast, libclang) para identificar Misconceptions in Correct Code sem alterar o veredito do juiz

[object Object]
Feedback Formativo
Sem CEP
Data de Publicação

14/11/2026

Data de Modificação

14/11/2026

Código: TCC 10 · Trilha: Trilha 3: Análise Estática e Linguagens · Status: Disponível · Modalidade: Compiladores / Análise Estática + Benchmark · Perfil: Individual · Complexidade: Alta · Regime Ético: Sem CEP (Computacional)

1. Contexto e Problema

Em juízes online, uma submissão que recebe o veredito AC (Accepted) é considerada encerrada. Porém, conforme evidenciado por Silva (2024) no referencial da tese (cap02-referencial.tex), estudantes iniciantes frequentemente escrevem códigos funcionalmente corretos que contêm sérios erros conceituais estruturais (\(\text{MC}^3\) — Misconceptions in Correct Code): comparações booleanas redundantes (if (cond == true) return true; else return false;), variáveis de controle mutadas indevidamente dentro de laços, código morto ou recursão frágil.

Testes caixa-preta dinâmicos são cegos a esses padrões; a própria tese delimita que propriedades \(\text{MC}^3\) exigem análise estática sobre a Árvore Sintática Abstrata (AST) e o Grafo de Fluxo de Controle (CFG) — módulo que ainda não existe no WOKDEX.

2. O que será feito (Objetivos Técnicos e Escopo)

  1. Selecionar e formalizar um subconjunto representativo (ex.: 15 a 25 padrões) do catálogo \(\text{MC}^3\) (Silva, 2024) aplicável a Python e/ou C/C++ no ciclo básico (CS1/CS2);
  2. Projetar e implementar um analisador estático determinístico baseado em AST/CFG (tree-sitter / Python ast / libclang) acoplável ao contrato WOKDEX como módulo pós-AC (preservando o veredito técnico AC intacto);
  3. Estender o Extended Profile do schema (wok-scheme.json) com um bloco declarativo opcional para regras estruturais revisáveis e mensagens não punitivas;
  4. Avaliar precisão, revocação e taxa de falsos positivos sobre um corpus curado de submissões AC anotadas manualmente por dois revisores independentes (ou banco público anotado de códigos estudantis).

3. Perguntas para você refletir

Se você se identifica com as questões abaixo, este tema pode ser uma boa escolha:

  • Como distinguir na AST uma construção idiomática válida de um padrão \(\text{MC}^3\) real para minimizar falsos positivos que confundem o iniciante?
  • Quais padrões exigem apenas travessia simples de AST e quais demandam análise de fluxo de controle (CFG) ou escopo de variáveis?
  • Como acoplar dicas estruturais pós-AC ao contrato WOKDEX de maneira formativa e não punitiva?

4. Divisão Sugerida (TCC 1 e TCC 2)

  • TCC 1: Estudo dos 45 padrões \(\text{MC}^3\) (Silva, 2024) e técnicas de análise AST/CFG (Keuning, 2023), seleção do catálogo alvo e projeto do analisador.
  • TCC 2: Implementação dos detectores AST/CFG para Python e/ou C/C++, extensão do contrato JSON WOKDEX e benchmark de acurácia e desempenho.

5. Entregáveis e Métricas de Avaliação

6. Pré-requisitos e Tecnologias Sugeridas

  • Base necessária: Compiladores, Estruturas de Dados (árvores e grafos), Python/C++ e interesse em análise estática de código.
  • Tecnologias e conceitos envolvidos: tree-sitter, módulo ast (Python), libclang, Grafo de Fluxo de Controle (CFG), pylint/flake8 (comparação/referência), JSON Schema.

7. Origem e Ponto de Partida

  • Origem na pesquisa WOKDEX:
    • cap02-referencial.tex (Silva 2024 — 45 padrões \(\text{MC}^3\); Keuning 2023 — análise AST/estática em educação);
    • cap04-metodologia.tex, cap05-implementacao.tex e cap06-avaliacao-experimental.tex (delimitação explícita de que \(\text{MC}^3\) requer análise estática futura);
    • apendices/arquivo-editorial/apendice-f-configuracao-ampliada.tex (configuração histórica de pylint e flake8 removida do baseline).
  • Consulte também o guia de Metodologia e Ética.

8. Como demonstrar interesse

Antes de agendarmos uma conversa, prepare respostas curtas para:

  1. Por que esse tema chamou sua atenção?
  2. Você prefere direcionar o analisador para Python, C/C++ ou multi-linguagem com tree-sitter?
  3. Qual sua disponibilidade semanal estimada para o TCC?
De volta ao topo