Semantic

程序代码解析、分析和比较工具
授权协议 MIT
开发语言 Haskell
所属分类 开发工具、 代码管理分析/审查/优化
软件类型 开源软件
地区 不详
投 递 者 萧鸿轩
操作系统 跨平台
开源组织 GitHub
适用人群 未知
 软件概览

semantic 是一个 Haskell 库和命令行工具,用来解析、分析和比较程序代码。

使用方法:

Parse

Usage: semantic parse ([--sexpression] | [--json] | [--json-graph] | [--symbols]
                      | [--dot] | [--show] | [--quiet]) [FILES...]
  Generate parse trees for path(s)

Available options:
  --sexpression            Output s-expression parse trees (default)
  --json                   Output JSON parse trees
  --json-graph             Output JSON adjacency list
  --symbols                Output JSON symbol list
  --dot                    Output DOT graph parse trees
  --show                   Output using the Show instance (debug only, format
                           subject to change without notice)
  --quiet                  Don't produce output, but show timing stats

Diff

Usage: semantic diff ([--sexpression] | [--json] | [--json-graph] | [--toc] |
                     [--dot] | [--show]) [FILE_A] [FILE_B]
  Compute changes between paths

Available options:
  --sexpression            Output s-expression diff tree (default)
  --json                   Output JSON diff trees
  --json-graph             Output JSON diff trees
  --toc                    Output JSON table of contents diff summary
  --dot                    Output the diff as a DOT graph
  --show                   Output using the Show instance (debug only, format
                           subject to change without notice)

Graph

Usage: semantic graph ([--imports] | [--calls]) [--packages] ([--dot] | [--json]
                      | [--show]) ([--root DIR] [--exclude-dir DIR]
                      DIR:LANGUAGE | FILE | --language ARG (FILES... | --stdin))
  Compute a graph for a directory or from a top-level entry point module

Available options:
  --imports                Compute an import graph (default)
  --calls                  Compute a call graph
  --packages               Include a vertex for the package, with edges from it
                           to each module
  --dot                    Output in DOT graph format (default)
  --json                   Output JSON graph
  --show                   Output using the Show instance (debug only, format
                           subject to change without notice)
  --root DIR               Root directory of project. Optional, defaults to
                           entry file/directory.
  --exclude-dir DIR        Exclude a directory (e.g. vendor)
  --language ARG           The language for the analysis.
  --stdin                  Read a list of newline-separated paths to analyze
                           from stdin.

支持的编程语言:

 

  • Syntax是语法上的,Sematic是语义上的。 在自然语言范围内举个简单的例子The dog is a man.从syntax上来说,这句话没有错,主谓宾齐全而且各个成分的性和格也没错,但是语义上来说是错的,dog 怎么能是man呢。4楼说的不错,在不同的领域,syntax 和semantic有着不同的对照,但大致关系和自然语言里是差不多的。 syntactic,也就是句法,指的是语言的结构,

 相关资料
  • 本文向大家介绍JEE与Spring Boot代码性能比较分析,包括了JEE与Spring Boot代码性能比较分析的使用技巧和注意事项,需要的朋友参考一下 JavaEE与Spring Boot其实很难比较测试,前者适合单体SOA架构,后者适合微服务,但是还是有好事者把两者放在一起比较性能。 我把一些JEE和Spring代码放在一起做了同样的事情。Spring做了一些开箱即用的好东西,所以我在一些J

  • 本文向大家介绍C#排序算法的比较分析,包括了C#排序算法的比较分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了C#的各种排序算法。分享给大家供大家参考。具体分析如下: 首先通过图表比较不同排序算法的时间复杂度和稳定性。   排序方法 平均时间 最坏情况 最好情况 辅助空间 稳定性 直接插入排序 O(n2) O(n2) O(n) O(1) 是 冒泡排序 O(n2) O(n2) O(n)

  • 阅读优秀开源项目源码是提高能力的重要手段,营造舒适、便利的阅读环境至关重要。 4.1 语法高亮 代码只有一种颜色的编辑器,就好像红绿灯只有一种颜色的路口,全然无指引。现在已是千禧年后的十年了,早已告别上世纪六、七十年代黑底白字的时代,即使在字符模式下编程(感谢伟大的 fbterm),我也需要语法高亮。所幸 vim 自身支持语法高亮,只需显式打开即可: " 开启语法高亮功能 syntax enabl

  • 问题内容: 我想找到一种方法来确定PHP中的每个函数以及PHP中的每个文件需要花费多长时间。我有一个旧的遗留PHP应用程序,试图在其中找到“粗糙点”,因此,我想客观地确定哪些例程和页面需要花费很长时间来加载。 是否有任何允许这样做的预制工具,还是我只能使用microtime并构建自己的性能分析框架? 问题答案: 实际上,上周我已经做了一些优化工作。XDebug确实是必经之路。 只需将其启用为扩展名

  • 本文向大家介绍Java比较问题详细分析,包括了Java比较问题详细分析的使用技巧和注意事项,需要的朋友参考一下 Java中的比较问题是一个很基础又很容易混淆的问题。今天就几个容易出错的点作一个比较详细的归纳与整理,希望对大家的学习与面试有帮助。 一、==与equals()的区别 首先,我们需要知道==与equals()的区别,==号比较的一直是地址值,对于基本数据类型来说,==比较实际上就是变量数

  • 分析器类会在页面下方显示基准测试结果,运行过的 SQL 语句, 以及 $_POST 数据。这些信息有助于开发过程中的调试和优化。 初始化类 重要 这个类无须初始化,如果已按照下面的方式启用, 他将被 输出类 自动加载。 启用分析器 要启用分析器,你可以在你的 控制器 方法的任何位置添加一行下面的代码: $this->output->enable_profiler(TRUE); 当启用之后,将会生

  • 本文向大家介绍Python解析json代码实例解析,包括了Python解析json代码实例解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python解析json代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 什么是json格式: JSON(JavaScript Object Notation):一种轻量级数据交换格式

  • 我想知道是否有一个工具,它将我的代码库和一个jar文件作为输入,它将在代码库中搜索这个jar文件正在使用的任何地方,并给我输出。不应使用Eclispe IDE。(变得微不足道)。我已经搜索了一些静态代码分析工具,如PMD、Checkstyle、findbugs。但他们都没有我需要的选择。你能给我推荐一个能完成上述任务的工具吗?