相关疑难解决方法(0)

语义差异实用程序

我试图找到一些语义差异/合并实用程序的好例子.比较源代码文件的传统范例通过比较行和字符来工作..但是有没有任何实用程序(对于任何语言)在比较文件时实际考虑代码结构

例如,现有的差异程序将报告"在第125行的字符2处找到的差异.文件x包含void,其中文件y包含bool".一个专门的工具应该能够报告"返回类型的方法doSomething()从void更改为bool".

我认为这种类型的语义信息实际上是用户在比较代码时所寻求的,并且应该是下一代编程工具的目标.可用工具中是否有这方面的例子?

language-agnostic diff semantics

105
推荐指数
5
解决办法
1万
查看次数

用于从文件中选择单个 Python 函数的 Bash 脚本

对于git 别名问题,我希望能够按名称从文件中选择单个 Python 函数。例如:

  ...
  def notyet():
      wait for it

  def ok_start(x):
      stuff
      stuff
      def dontgettrickednow():
         keep going
  #stuff
      more stuff

  def ok_stop_now():
Run Code Online (Sandbox Code Playgroud)

从算法的角度来看,以下内容已经足够接近了:

  1. 当找到匹配的行时开始过滤/^(\s*)def $1[^a-zA-Z0-9]/
  2. 继续匹配,直到找到不是or ^\s*#的行^/\1\s](即,可能是缩进的注释,或者比前一个缩进长的行)

(我并不关心以下函数之前的装饰器是否被选取。结果供人类阅读。)

我试图用 Awk 来做到这一点(我几乎不知道),但这比我想象的要难一些。对于初学者来说,我需要一种方法来存储原始 之前的缩进长度def

python bash awk parsing git-diff

4
推荐指数
1
解决办法
752
查看次数

标签 统计

awk ×1

bash ×1

diff ×1

git-diff ×1

language-agnostic ×1

parsing ×1

python ×1

semantics ×1