2017-03-16 84 views
0

我有香草js文件的行號,我需要找到特定行的源代碼,然後是父函數。我使用node.js並想知道是否有方法來提取源代碼,並可能知道該特定行的父功能。如何在javascript中查找特定行號的源代碼?

function helloworld(){ 
    var a=5; 
    var b=6; //line number 3 
} 

對於上述功能,我需要函數helloworld只有行號?

編輯更加清晰:

當代碼被壓入式回購,我們可以得到的行號,其中變化有occured.Using這些行號,我想在尋父的功能正如我所說的above.I想要找到父函數的名字,所以我只能運行特定的茉莉花測試文件。

例: 可以說我有一個茉莉花規範文件是這樣的:

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的名稱,以便我稍後可以解析茉莉花spec文件,並將x添加到除改變的所有規格外。此示例將解釋我的意思:

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) 
    }) 
})  

現在我可以添加解析我的茉莉花文件並在描述之前添加x,但是我想知道的是被修改的特定行的父函數。

+1

我不知道你在做什麼,但這可能有幫助http://stackoverflow.com/a/280396/5515745 –

+0

我想獲得函數名,所以我可以使用它們在茉莉花中只運行特定的測試spec文件。我不想運行整個測試文件在源代碼中的單行更改。我可以解析茉莉花文件並添加xdescribe並跳過我不想運行的規格。 –

+0

你在問什麼?如何解析腳本?有什麼條件可以找到代碼?這太模糊了。爲清晰起見 –

回答

0

我是一個傳統主義者,所以我編寫shell腳本來完成這樣的事情。在終端 試試這個命令:$head -<LineNumber> <FullPathToFile> | tac | grep -m 1 "PatternYouWantToMatch"

例如,head -50 /home/test.js | tac | grep -m 1 "function"

說明:

  • 命令將獲取所有的行,直到你給
  • TAC行號命令將顛倒線的順序,即第一行將成爲最後一行,反之亦然。
  • grep -m 1將匹配倒排文件中的第一個模式。

不是最好的解決方案,但它會完成你的工作!希望它是有用的。

-1

我的確希望有一種提取函數的神奇方式,它的名字來自一個文件,但是我不知道如果你使用JS來提取它,我希望我錯了。

但是,如果您需要在JS中完成,raw-loader可以幫助您。加載原始文件可以完成工作,但您必須手動解析它。它顯然以原始格式加載任何文件,並且可以手動遍歷文件。我們也使用它來提取我們的JSDoc。

+0

如果您能解釋投票,我會很感激。 – JohnnyQ

+0

嗯,我沒有downvote ... –

+0

@AnanthaPadmanaban我知道,你沒有足夠的代表來做到這一點。儘管如此,我希望這個答案能幫助你。 :) – JohnnyQ

相關問題