1

我刚刚完成了一段长代码的重构。

我的重构包括将源代码分解为许多文件夹中许多文件中的许多函数。

现在我已经完成了,我想确保原始代码中没有我创建的新文件之一中不存在的行。

我需要的伪代码是这样的:

for line in sourceCode:
    if length(grep line refacoredLib)==0:
        print line + " does not exist in refactored code"

我的第一个想法是编写一个 python\bash 实现,你知道有没有更优雅的解决方案?谢谢!

4

2 回答 2

6

或者,如果您不想重新发明轮子:

cat newfiles/* | sort > /tmp/new
cat oldfile.py | sort > /tmp/old
comm -23 /tmp/old /tmp/new

不是 Python,我知道,但仍然如此。

于 2013-05-05T12:56:31.297 回答
1

好吧,您可以比较 Python 中的行集,但这不会是单行的。

source_files = ['source1.py', 'source2.py']
new_files = ['new1.py', 'new2.py']

old_lines, new_lines = set(), set()
for source in source_files:
   with open(source) as sf:
       old_lines.update(sf)
for new in new_files:
   with open(new) as nf:
       new_lines.update(nf)
for line in old_lines - new_lines:
    print line + " does not exist in refactored code" 
于 2013-05-05T12:19:39.963 回答