À propos du projet
PyFlow est un framework d'analyse de programmes pour Python, au stade alpha, conçu comme une boîte à outils de recherche combinant une infrastructure d'analyse de programmes, des passes d'optimisation expérimentales et la vérification de sécurité. Il fournit une large gamme de représentations intermédiaires (CFG, CDG, DDG, PDG, CPG, IR de flux de données abaissée et un modèle de graphe de magasin partagé) et prend en charge plusieurs techniques d'analyse, notamment la construction de graphes d'appels, IFDS, l'analyse d'alias, IPA, CPA, l'analyse de forme, de durée de vie et de type.
Le framework comprend un pipeline d'optimisation modulaire avec des passes telles que la simplification, l'optimisation des appels de méthodes, le clonage, la normalisation des arguments et l'élimination des chargements/stockages. Pour la sécurité, il propose des moteurs d'analyse basés sur la correspondance de motifs AST, le flux de données basé sur AST, le CPG et IFDS. Il inclut également des capacités d'analyse de chaîne d'approvisionnement pour la génération locale de SBOM, l'audit d'intégrité de distribution et l'extraction de métadonnées de dépendances.
PyFlow est livré avec une CLI prenant en charge des commandes pour le vidage d'IR, la génération de graphes d'appels, l'analyse de sécurité, l'analyse d'alias, la génération de tests d'entrée concoliques et les opérations de chaîne d'approvisionnement. Il fournit également des modes serveur LSP et MCP pour l'intégration IDE et les requêtes sémantiques. Le projet inclut des résultats d'évaluation sur le microbenchmark PySASTBench, montrant des métriques de précision/rappel pour ses moteurs de sécurité.
L'installation nécessite Python 3.10+ et Graphviz pour la visualisation. Il peut être installé à partir des sources via pip, avec des extras optionnels pour le développement et les algorithmes de graphes d'appels basés sur PyCG. Le projet comprend des suites de tests unitaires et d'intégration couvrant les composants IR, frontend, API et vérificateur.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.