在python应用程序中静态分析源并提取有关调用库函数的信息

invectio的Python项目详细描述


一个简单的基于静态的库调用和属性使用收集工具 分析python应用程序的源代码。

安装

可以从PyPI安装invectio,使用:

$ pip3 install invectio
$ invectio --help

用法

您可以将此库用作cli工具或python模块:

invectio project-dir/   # To scan all Python files recursively.
invectio app.py         # To perform usage gathering just on app.py file.
frominvectioimportgather_library_calls# To scan all Python files recursively.result:dict=gather_library_usage("project-dir")# To perform usage gathering just on app.py file.result:dict=gather_library_usage("app.py")

限制

由于python是一种动态编程语言,因此不可能获得所有 只需执行 消息来源。一个人仍然可以做一些“疯狂”的事情,比如:

importtensorflowgetattr(tensorflow,"const"+"ant")("Hello, Invectio")

这个库尽力检测内部使用的所有函数/属性 python源代码,但是上面所示的用法不能由static 分析源代码。

开发

要创建开发环境,请克隆invectio repo并安装所有依赖项:

git clone https:://github.com/thoth-station/invectio && cd invectio
pipenv install --dev

要对tests/目录中的单元测试执行检查, 从git repo的根目录下发出以下命令:

pipenv run python3 setup.py test

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java变量始终存储0值。为什么?   如何使用Java/REST将Azure blob从一个存储容器移动到另一个存储容器?   java将commons DBCP从1.2升级到1.4,我应该害怕吗?   java如何使用分隔符拆分字符串?   java使用数组读取json对象   java在groovy中切片字符串   交换数组java的两个邻域元素   java移动用于确定字符串是否为回文的逻辑   java Android应用程序在一个活动中崩溃   java Sparkjava将webapp文件夹设置为静态资源/模板的文件夹   java复杂条件表达式,用户易用。   java如何仅在表存在时从表中选择值   java I无法将数据从Recyclerview传递到其他活动   java数据结构最佳设计(大数据)   java Android从DatePickerDialogFragment中删除日历视图   java将数据从Firebase获取到片段   数组。sort()在java中运行不正常