如何在JavaScript代码中包含HTML标签时使JSHint发出警告
How to make JSHint warn when HTML tags are included in JavaScript code?
在我们的开发车间中,我们使用客户端模板,并且在JavaScript代码中不包含HTML标记。
在我们的持续集成过程中,我们在每次提交(Jenkins中的构建后操作)后自动运行JSHint来验证是否符合我们的编码风格指南。
我想配置JSHint,当它在.js文件中找到HTML标记时抛出警告。
我怎样才能做到这一点?我已经搜索过了,但是我找不到HTML标签警告的例子,也找不到JSHint的自定义规则。
编辑:只是为了清楚,我试图捕获这样的代码:
var newDiv = "<div>Hello World!</div>";
$("body").append(newDiv);
如果我能让JSHint为上面示例中的第一行生成一个警告,那就太棒了。
第二个编辑:
如果Jenkins的post-build插件可以抛出验证错误,如果在.js文件中发现HTML,那么这也是一个很好的替代解决方案。
答案
不,jSHint不支持禁止任意字符串内容或字符串内的HTML标记。它目前也不支持自定义规则,尽管作者已经讨论过将来添加一个公共api。
我的猜测(因为我不是内部人士)关于为什么
你提出的解决方案(在任何场景中禁止任何HTML标签)将禁止各种高度有效的用例,无论你对在js中创建HTML有何看法。我理解这是您的团队想要做的事情,但是这样一个生硬的规则将不具有jshint其他规则的一般适用性。他们的重点是加强风格规则。因为你不允许在字符串中使用所有的HTML标签,这实际上更多的是内容验证而不是样式验证。它将消除以下内容示例,它们与DOM注入/关注点分离无关。
例如:var example="I'm writing a report on <div> tags and css";
或
var htmlStrippedText = text.replace("<div>","");
我的建议当然,缺乏广泛的适用性不是你不这样做的理由。如果您真的想这样过滤内容,请使用命令行脚本使用正则表达式进行搜索。因为你只想看看是否有HTML,而不是它是否有效,你可以只是搜索的东西在形式<[div|span|body|html...
以及document.createElement
,它应该是好的(虽然你可能不得不更有创意,如果你想允许它在评论)。只是不要使用nodejs用JS运行你的脚本,否则它将无法验证自己。:)
当然这些都不能阻止一个坚定的开发者:
var topSecretDOMObject,topSecretFunction,topSecretArgument;
topSecretFunction = "create"+"Element";
topSecretArgument = "d" + "i" + "v";
topSecretDOMObject = document[topSecretFunction](topSecretArgument);
- 如何永久停止jshint'只读'警告/错误
- JShint-.jshintrc中的ES6有esversion,但仍收到警告(使用atom)
- 我怎样才能抑制JSHint“;JSCS:非法空间“;Visual Studio 2013中的警告
- JSC_TRAILING_COMMA:分析错误.IE8(及以下版本)-jshint可以警告我使用左尾逗号吗
- 如何重写此 Javascript 代码以避免 JSHint 警告
- JSHint是否可以输出有关全局变量的警告
- JSHint with Atom Editor - 忽略警告
- 如何在 jshint 中删除
的错误转义警告 - 禁用 JSHint 警告:预期赋值或函数调用,而是看到表达式
- 禁止 JSHint / JSLint 或替代服务中的“混合空格和制表符”警告
- JSHint 重定义警告并向对象添加更多属性
- JSHint投掷'未定义'显示模块模式中的警告
- 是否有一种方法来沉默JSHint's "变量已经定义"警告
- 如何禁用警告'define'不是使用JSHint和RequireJS定义的
- JSHINT:如何禁用警告匿名'功能'
- 如何在JavaScript代码中包含HTML标签时使JSHint发出警告
- 在codemmirror中禁用JSHint警告
- JSHint警告Mocha 'beforeEach'即使使用"mocha": tru
- 错误的JSHint警告“;变量已定义,但从未使用过&”;
- JsHint警告其他文件中的函数