2012-02-14 45 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