PySonar:Python的类型推理机和索引器
PySonar:Python的类型推理机和索引器,PySonar是Python的类型推理机和索引器。它包括强大的类型系统和复杂的跨过程分析。相比风格检查工具或者IDE,PySonar以更深的层次分析程序并产生更精准的结果。PySonar比传统的IDE解决更多的名字。目前针对Python标准库的解析率大概是97%。
示例
为了快速感受PySonar可以干什么,这里是一小部分Python标准库的样本分析结果。
有什么?
强大的类型系统。
除了程序设计语言中的常见类型,PySonar的类型系统包括union类型和交叉类型—在我的PL搜索中发现的最强大的元素中的两个。程序设计语言中很少使用它们。我只知道有两种语言静态检查union类型:TypedRacket和Ceylon。不同于这些语言,PySonar没有任何类型的注解可以工作。这意味着所有的类型通过跨过程分析。
控制流程感知跨过程分析。
由于Python具有动态多态性语义,不包含类型注解,那么模块式推理系统如Hindley-Milner系统将不起作用。PySonar第一版中我实际实现一个HM-like系统,但它没有很好的工作。因此,通过跨过程分析所有类型,它遵循的是控制流程和一些其它方面的语义。
Python的动态处理。
Python静态分析很难,因为它有很多的动态特征。他们有助于程序简洁而灵活,但他们也使自动推理Python程序变难。有些特性可以合理的处理,有些却不能。对于不可判定的代码,PySonar尝试报告所有已知的可能性。例如,它可以推断出包含可能包含的所有可能类型的union类型:
高精度语义索引。
PySonar可以建立范围和类型的代码索引器。由于它执行跨过程的分析,所以通常能够在函数参数内部找到属性的定义。它跨函数,类和模块工作。下面的图像显示,它可以准确定位x.z指的是B1类和C1类中的”z”,不是A1中的。
获取
代码是开源的,来自我的GitHub仓库。
用户
Pysonar的一些用户:
GoogleGoogle使用PySonar1.0来索引数百万行的Python代码,服务器内部代码搜索和分析服务如Grok和代码搜索
SourceGraphSourceGrap是一个语义代码搜索引擎。他们使用PySonar来索引数十万开源的Python仓库。他们最初使用PySonar1.0作为其网站的Python分析。我最近加入他们并完成PySonar2.0的整合
Python培训、Python培训班、Python培训机构,就选光环大数据!
还不够过瘾?想学习更多?点击 http://hadoop.aura.cn/python/ 进行Python学习!
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服!