Sobre o projeto

PyFlow é um framework de análise de programas em estágio alfa para Python, projetado como um kit de ferramentas de pesquisa que combina infraestrutura de análise de programas, passes de otimização experimentais e verificação de segurança. Ele fornece uma ampla variedade de representações intermediárias (CFG, CDG, DDG, PDG, CPG, IR de fluxo de dados rebaixado e um modelo de grafo de armazenamento compartilhado) e suporta múltiplas técnicas de análise, incluindo construção de grafo de chamadas, IFDS, alias, IPA, CPA, shape, lifetime e análise de tipos. O framework inclui um pipeline de otimização modular com passes como simplificação, otimização de chamadas de métodos, clonagem, normalização de argumentos e eliminação de load/store. Para segurança, oferece engines de análise de segurança baseadas em correspondência de padrões AST, fluxo de dados baseado em AST, CPG e IFDS. Também inclui capacidades de análise da cadeia de suprimentos para geração local de SBOM, auditoria de integridade de distribuição e extração de metadados de dependências. O PyFlow vem com uma CLI que suporta comandos para despejo de IR, geração de grafo de chamadas, análise de segurança, análise de alias, geração de entradas de testes concolic e operações da cadeia de suprimentos. Também fornece modos de servidor LSP e MCP para integração com IDE e consultas semânticas. O projeto inclui resultados de avaliação no microbenchmark PySASTBench, mostrando métricas de precisão/abrangência para suas engines de segurança. A instalação requer Python 3.10+ e Graphviz para visualização. Pode ser instalado a partir do código-fonte via pip, com extras opcionais para desenvolvimento e algoritmos de grafo de chamadas baseados em PyCG. O projeto inclui suítes de testes unitários e de integração cobrindo componentes de IR, frontend, API e checker.