我有vanilla js文件的行号,我需要找到该特定行的源代码,然后是父函数。我正在使用node.js,并想知道是否有办法提取源代码和可能知道该特定行的父函数。
function helloworld(){
var a=5;
var b=6; //line number 3
}
对于上述功能,我需要的函数helloworld只有行号?
编辑更清晰:
当代码被推入回购时我们可以得到发生变化的行号。使用这些行号我想找到父函数,如上所述。我想找到父函数的名称所以我只能运行特定的jasmine测试文件。
实施例: 假设我有一个像这样的茉莉花规格文件:
describe("helloworld",function(){
it("test1",function(){
expect(true).toBe(true)
});
});
describe("someotherfun",function(){
it("test2",function(){
expect(true).toBe(true)
})
})
说有一个这样的脚本文件:
function helloworld(){ . //line 1
console.log('hi') . //line 2
}
function someotherfun(){
console.log('hi')
} . //line 6
让我们说一些编辑第2行我想得到helloworld的名字,所以我可以稍后解析茉莉花规格文件并将x添加到所有规格,除了更改的那个。这个例子将解释我的意思:< / p>
describe("helloworld",function(){
it("test1",function(){
expect(true).toBe(true)
});
});
xdescribe("someotherfun",function(){ //wont run this test because this function was not modified
it("test2",function(){
expect(true).toBe(true)
})
})
现在我可以添加解析我的jasmine文件并在描述之前添加x,但我想知道的是修改后的特定行的父函数。
答案 0 :(得分:0)
我有点像传统主义者,所以我编写了shell脚本来完成这些工作。
在终端中尝试此命令:$head -<LineNumber> <FullPathToFile> | tac | grep -m 1 "PatternYouWantToMatch"
例如,head -50 /home/test.js | tac | grep -m 1 "function"
说明:
不是最好的解决方案,但它会让你的事情完成!希望它有用。
答案 1 :(得分:-1)
我希望有一种从文件中提取函数及其名称的神奇方法,但我知道如果你使用JS来提取它,我希望我没错。
但是,如果您需要在JS中执行此操作,raw-loader可以帮助您。加载原始文件可以完成工作,但您必须自己手动解析它。它显然以原始格式加载任何文件,您可以手动遍历文件。我们还用它来提取我们的JSDoc。