JSLintには JavaScript Lint のコントロール コメント(例: ) のようなものがあり、特定のパッセージを無視できますか?/*jsl:fallthru*/
9 に答える
置く
/*ignore jslint start*/
前と
/*ignore jslint end*/
無視するコードの後。元:
function ignore(){
/*ignore jslint start*/
var x; var y;
/*ignore jslint end*/
}
または、JsLint 設定をエクスポートし、IgnoreErrorStart/IgnoreErrorEnd シンボルを定義してインポートします。
編集
一部の人々は、この回答を JSHint と混同する可能性があります。その場合は、これらを使用します。
/*jshint ignore:start*/
<!-- code in here -->
/*jshint ignore:end*/
はい。ドキュメントから[これは古いバージョンのドキュメントからのものですが、それでも適用されることに注意してください]:
JSLint の実装は、受け入れ可能な JavaScript のサブセットを決定できるオプション オブジェクトを受け入れます。これらのオプションは、スクリプトのソース内で設定することもできます。
オプション仕様は次のようになります。
/*jslint nomen: true, debug: true,
evil: false, vars: true */
オプション指定は /*jslint で始まります。j の前にスペースがないことに注意してください。この仕様には、名前と値のペアのシーケンスが含まれています。名前は JSLint オプションで、値は true または false です。オプション指定は、オプション オブジェクトよりも優先されます。
ドキュメントには特に言及されていませんが、コード全体で複数の jslint コメントを使用してさまざまなチェックを有効または無効にすることができます (Dominic Mitchell に感謝します)。
ドキュメントにオプションの完全なリストがあります。
Matthew Crumley の優れた回答を補足するコード例を次に示します。
(function ($) {
$.isValidEmail = function(email){
/*jslint maxlen: 1000*/
var EMAIL_REGEXP = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i;
/*jslint maxlen: 200*/
return EMAIL_REGEXP.test(email);
};
}(jQuery));
私が知る限り、この質問に対する答えはここにはありません。次のコードではまだ検証エラーが発生し、実際の優先順位が与えられているため、現在動作している正規表現を修正する時間がないことを JSLint に受け入れさせることができません。
私が受け取ったエラーは、エスケープされていない '{' に関するものであり、私の新しい専門チームが JSLint を実行可能なツールとして拒否する可能性があります。より効率的に開発するための私たちの努力について、それを黙らせる方法はないようです。
/*jslint browser: true, devel: true, todo: true, regexp: true */
/*global $ */
/*
Abstract:
+ This module constitutes a layer of abstraction surrounding our bootstrap dependencies.
+ This module also contains some utility functions (so find a better place for them already!).
Validation:
+ This module has been validated using JSLint (www.jslint.com).
*/
var shoelaceModule = (function () {
'use strict';
return {
showModal: function ($target) {
$target.modal('show');
},
hideModal: function ($target) {
$target.modal('hide');
},
/*jsl:ignore */
/*ignore jslint start */
stringFormat: function (format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/{([^{}]*)}/g, function (match, number) {
return args[number] !== 'undefined' ? args[number] : match;
});
},
/*ignore jslint end */
/*jsl:end */
init: function () {
return this;
}
};
}());
いいえ、JSLint には、「このコード ブロックを無視する」という簡単な方法がないようです。マットが示唆しているように、さまざまなオプションを個別に無効にしてからオンに戻すとうまくいくはずですが、JSHint のようにエレガントにはなりませ/* jshint ignore:start */
ん/* jshint ignore:end */
。
私がこれを調べていた理由は、デフォルトのリンターとして JSLint に付属しているBracketsを使用しているためです。一時的に .js にコピーした縮小化されたサードパーティのコードがいくつかありますが、そこにある限り、JSLint は文句を言います。臭いのは、縮小されたチャンクを早い段階で貼り付けたいことがよくあることです。これは、リンターがコードを見て、あいまいなエラーを除外するのに役立つ場合でもあります。後で Grunt ですべてを縮小して連結しますが、早い段階でブロックを無効にできないのは、本当に、本当に、面倒です。
これは私にはうまくいくようです。(zedapp に埋め込まれた jslint を使用 - zedapp.org)
/*jslint ignore:start*/
require([],function(require, exports, module) {
/*jslint ignore:end*/
var api = {
life: {
universe: {
everything: function() {
this.everything = {answer : 42};
}
}
}
};
api.life.universe.everything.bind(api.life.universe)();
console.log(JSON.stringify(api));
/*jslint ignore:start*/
return api;
});
/*jslint ignore:end*/
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.js"></script>
コード/*jsl:ignore*/
を 配置/*jsl:end*/
します。