静态分析源代码并提取Python应用程序中调用的和导出的库函数信息
项目描述
一个简单的工具,用于通过静态分析Python应用程序的源代码来收集提供的符号、库调用和属性使用情况。
请参阅[描述此工具的链接文章](https://developers.redhat.com/articles/2022/01/05/extracting-information-python-source-code)。
安装
可以使用PyPI安装Invectio,地址为PyPI。
$ pip3 install invectio
$ invectio --help
使用方法
您可以将此库用作CLI工具或Python模块。
invectio whatprovides project-dir/ # To scan all Python files recursively for symbols provided.
invectio whatprovides app.py # To perform symbols gathering on app.py file.
invectio whatuses project-dir/ # To scan all Python files recursively for symbols used from libraries.
invectio whatuses app.py # To perform gather symbols used from libraries on app.py file.
from invectio import gather_library_calls
from invectio import gather_symbols_provided
result: dict = gather_library_usage("project-dir")
result: dict = gather_library_usage("app.py")
result: dict = gather_symbols_provided("project-dir")
result: dict = gather_symbols_provided("app.py")
限制
由于Python是一种动态编程语言,因此仅通过源代码的静态分析无法获取所有库函数/属性的用法。人们仍然可以执行“疯狂”的事情,例如
import tensorflow
getattr(tensorflow, "const" + "ant")("Hello, Invectio")
此库尽最大努力检测Python源代码中使用的所有函数/属性,但像上面显示的使用情况不能仅通过源代码的静态分析来检测。
开发
要创建开发环境,克隆invectio仓库并安装所有依赖项。
git clone https://github.com/thoth-station/invectio && cd invectio
pipenv install --dev
要从根目录的tests/目录中的单元测试执行检查,请从git仓库的根目录执行以下命令
pipenv run python3 setup.py test
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
invectio-0.2.2.tar.gz (20.8 kB 查看哈希值)
构建分发
invectio-0.2.2-py3-none-any.whl (21.3 kB 查看哈希值)
关闭
invectio-0.2.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f20c8a35f1747eff5cc0a2d5222b0427f75d6096712e67ec2829f491bc5ed82e |
|
MD5 | 275fb12fd9249a9a4f763a5e923920db |
|
BLAKE2b-256 | f7ecb400457660d1298f21ee89c47258b91e2dfe058cd0d5d73513832f06bbc0 |
关闭
invectio-0.2.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc1a2e69dd95ab98d90bc23fa6ad245d7f1a5f58b40cc9320c4d81786db01bdb |
|
MD5 | 98248aa249e122acf0a9e3a903e93aab |
|
BLAKE2b-256 | 0f3c98d23e4011f3ceb2d05bfb67878b469c6cd81b60b0104ddac73f2679275b |