Python 代码静态分析

发布于 2022-09-01 16:12:19 字数 478 浏览 26 评论 0

有大量的Python代码, 伪代码类似以下

#! /usr/bin/env python
# -*- coding: utf-8 -*-

class TestClass():
    a = 'a'

    def __init__(self):
        self.b = 'b'

如何通过代码静态分析, 再不修改源代码的基础上. 获取self.b的值.
有什么值得推荐的代码静态分析工具? 或者好的思路


这并不是一个伪需求.
1. 提取插件信息
有许多人用Python写的框架, 并发布出来让其他人写插件.
插件中包含了插件相关的一些信息, 我需要对这些信息做出检索. 方便本人快速的搜索插件.
因为写插件的人的代码规范各不相同, 所以正则类的方法不太适用.
2. 批量提出插件对框架的依赖
框架虽然不大, 但是故意对代码进行了混淆.
我希望剔除插件对框架的依赖

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

好多鱼好多余 2022-09-08 16:12:19

个人对静态代码分析不熟

大神王垠开源过一个 python代码分析器 pysonar2

或十年 2022-09-08 16:12:19

用ast库解决了, 不过操作还是太麻烦. 实际使用中需要大量遍历, 判断类型.

以下粗糙的实现

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import ast


def readfile(filename):
    f = open(filename, 'r').read()
    return f

code = readfile('./test.py')
code_ast = ast.parse(code)

print code_ast.body[0].body[1].body[1].value.s
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文