Python 代码静态分析

fidllrldf
  • 1.1k

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

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

class TestClass():
    a = 'a'

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

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


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

回复
阅读 4.1k
2 个回答
✓ 已被采纳

个人对静态代码分析不熟

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

用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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏