Sobre o projeto
O AutoFFF é uma utilidade baseada em Python projetada para gerar automaticamente definições de funções fake do FFF (Fake Functions Framework) a partir de arquivos de header de APIs C, resolvendo um problema comum nos testes unitários de código C embarcado.
O problema central que ele resolve é que testar código C embarcado em uma máquina host frequentemente é inviável, pois a arquitetura do host difere da plataforma de destino, e ambientes embarcados normalmente não suportam link dinâmico, enquanto C não possui reflexão de runtime integrada para manipular o código sob teste em tempo de execução. Faking das APIs da plataforma de destino vinculando o código sob teste a implementações fake resolve isso, mas escrever manualmente definições fake para funções de API é tedioso, trabalhoso e propenso a erros, com headers de teste mantidos manualmente sujeitos a "deterioração de código" conforme as APIs originais evoluem.
O AutoFFF automatiza esse processo analisando arquivos de header de API C e gerando headers de teste prontos para uso com definições fake compatíveis com FFF. Ele segue a filosofia de faking por "wrap": os headers de teste gerados incluem o header original da API para herdar todas as declarações de tipos, variáveis e funções, adicionando apenas as definições fake necessárias. Essa abordagem é muito mais mantível do que a estratégia alternativa de "banimento", que exige redeclarar manualmente todos os elementos da API e é mais propensa a ficar dessincronizada dos headers originais.
A ferramenta inclui uma solução alternativa embutida para funções definidas diretamente dentro de arquivos de header, que normalmente causariam erros de redefinição ao serem fakes. Essa solução usa redirecionamento de macro para redirecionar chamadas à função original no header para o fake gerado, desde que o header de teste seja incluído antes do código sob teste nos arquivos de teste.
O AutoFFF suporta trabalho com bibliotecas que possuem políticas rigorosas de include (como FreeRTOS ou CMSIS) por meio de opções de linha de comando para injetar headers obrigatórios ou definir macros de pré-processamento durante a análise. Oferece múltiplas opções de integração: pode ser executado como módulo de linha de comando standalone, usado como pacote Python em scripts personalizados ou integrado a sistemas de build como Make por meio de Makefiles de exemplo fornecidos.
Ele oferece dois modos de geração: o BareFakeGenerator produz apenas definições de macros FFF brutas sem a estrutura de header para usuários que desejam adicionar processamento personalizado, enquanto o SimpleFakeGenerator gera headers de teste mínimos, compiláveis e prontos para uso, com include guards e includes necessários.
O AutoFFF é distribuído sob a licença MIT, disponível via PyPI, e requer a coleção de headers fake_libc_include do projeto pycparser para análise C, que não é empacotada com a release do pip e deve ser obtida separadamente no repositório do pycparser.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.