2012-02-14 44 views
3

我想在所有的JavaScript文件中自動運行JSHINT作爲我們持續集成環境的一部分(實際上,可能是TFS門控簽入的一部分,但我不確定,因爲它取決於速度)。如何在構建過程中自動化jshint?

我試圖用犀牛jshint這樣的:

java -jar js.jar jshint-rhino.js myFile.js 

,但我怎麼可以設置所需要的JSHint選擇?我知道我可以在myfile.js頂部的評論中列出它們,但我有很多JavaScript文件,並且我不想在所有源文件中複製選項。 (或者,JavaScript是否包含我不知道的「包含」功能?)

我曾希望在命令行上將options.js文件作爲參數傳遞,然後在版本控制下保留options.js。但我不認爲這是可能的與jshint-rhino.js。我們使用Visual studio extension'JSHint'保存所有JavaScript文件。但是這個工具不能在命令行上運行。我們希望兩全其美 - 在Visual Studio中運行JSHint,在CI構建中運行Automated,然後不重複選項(並且確實將選項保留在版本控制下)。

所以問題是,其他人如何在他們的開發過程中自動化JSHint?

+0

這只是你想要的,基於工作流的自動化構建過程中運行命令行實用程序? – 2012-02-21 19:56:30

+0

@Ed - 是的,這是總結。我現在使用SharpLinter,並將分析作爲Post Build Event的一部分。 – GarethOwen 2012-02-22 07:46:46

回答

2

由於您基本上想在TFS 2010構建過程中使用命令行活動,因此它實際上非常簡單。您需要在要運行此工具的位置添加InvokeProcess工作流程活動(see MSDN documentation)。

實際上有一個walkthrough可用於如何使用不同的命令行實用程序來完成此操作,但您只需將其替換爲您自己的。工作流活動,甚至允許您指定一組命令行參數,你可以通過。

+0

感謝您的InvokeProcess鏈接。我是TFS構建新手,並且添加一個簡單的命令行調用作爲構建序列的一部分,看起來很複雜 - 但也許它很簡單。 – GarethOwen 2012-02-22 13:55:40

+0

它當然是!這是否最終解決了你的問題? – 2012-03-21 12:42:14

+0

仍然將其稱爲構建後事件。它正在工作,而且速度很快,所以我還沒有達到將它作爲InvokeProcess(尚未)的要求。 – GarethOwen 2012-03-21 13:12:55

3

如果要檢查你的Javascript同時運行TFS建立我會建議在看看sharplinter:

https://github.com/jamietre/SharpLinter

這包含一個可執行文件,它允許您使用的JSLint/JSHint檢查你的JavaScript文件。要在TFS構建過程中運行此代碼,您可以創建一個代碼活動,並將其包含到工作流程中。

由Techclays 2012的Marcel de Vries製作的這段視頻將逐步完成自動構建流程,並演示如何包含您的自定義活動。

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2361

+0

的確我們正在使用SharpLinter。我們有一個批處理文件,它可以在給定的Visual Studio項目中查找所有JavaScript文件,並將它們發送到SharpLinter。我們將該批處理文件稱爲Visual Studio項目的構建後事件。我們尚未能升級到Visual Studio 2012 - 我們正在使用2010. – GarethOwen 2013-04-11 10:50:33

+0

這意味着您的代碼在TFS構建過程中不會被檢查,但代碼只會在您的本地環境中進行檢查。如果這適用於您,則無需更改它,但如果您正在與團隊合作,則可能需要檢查實際TFS構建中的錯誤。這篇文章是我整合sharplinter的起點,所以即使它沒有幫助你,也許還有其他人可能對它有幫助:)。 – 2013-04-11 14:53:39

+0

哦,我同意 - SharpLinter很棒。但是這個解決方案不僅適用於本地環境 - 當PostBuild事件失敗時,TFS構建也會失敗。因爲它從命令行使用MSBuild構建項目,並且我們在TFS構建中使用的項目配置中存在ostBuild事件。該解決方案對我們來說工作得很好 - 一個由10個開發人員組成的團隊 – GarethOwen 2013-04-12 08:22:11