Добавление к этому старому вопросу: WScript-версия jslint.js выдает сообщения об ошибках, которые очень сильно отличаются от сообщений об ошибках любого компилятора.
Если вы хотите, чтобы они были похожими, и если вы хотите иметь возможность указать имя файла .js в командной строке, а не использовать stdin для чтения файла, сделайте следующее:
Скачать jslint.js, версия WScript .
Редактировать файл jslint.js. Прокрутите вниз и найдите это:
(function(){if(!JSLINT(WScript.StdIn.ReadAll(),.....
Заменить это (и все, что следует) следующим:
(function(){
var filename = "stdin";
var content= "";
if (WScript.Arguments.length > 0){
filename = WScript.Arguments(0);
var fso = new ActiveXObject("Scripting.FileSystemObject");
//var file = fso.GetFile(filename);
var fs = fso.OpenTextFile(filename, 1);
content = fs.ReadAll();
fs.Close();
fso = null;
fs = null;
} else {
content = WScript.StdIn.ReadAll();
}
if(!JSLINT(content,{passfail:false})){
WScript.StdErr.WriteLine("JSLINT");
for (var i=0; i<JSLINT.errors.length; i++) {
// sample error msg:
// sprintf.js(53,42) JSLINT: Use the array literal notation [].
var e=JSLINT.errors[i];
if (e !== null){
var line = (typeof e.line == "undefined")?'0':e.line;
WScript.StdErr.WriteLine(filename + '(' +line+','+e.character+') JSLINT: '+e.reason);
WScript.StdErr.WriteLine(' ' + (e.evidence||'').replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"));
}
}}}());
Это изменение делает две вещи:
- позволяет вам указать файл для запуска lint в командной строке, а не как stdin. Stdin все еще работает, если файл не указан вообще.
- выдает сообщения об ошибках в формате, который больше похож на большинство компиляторов C / C ++.
Затем в командной строке cmd.exe вы можете сделать:
cscript.exe jslint.js MyJavascriptModule.js
и вы получите сообщения об ошибках, например:
JSLINT
MyJavascriptModule.js(7,17) JSLINT: 'xml' is already defined.
var xml = new ActiveXObject("Microsoft.XMLHTTP");
MyJavascriptModule.js(10,5) JSLINT: 'xml' used out of scope.
xml.open("GET", url, true);
MyJavascriptModule.js(11,9) JSLINT: 'xml' used out of scope.
if (xml.overrideMimeType) {
MyJavascriptModule.js(12,9) JSLINT: 'xml' used out of scope.
xml.overrideMimeType('text/plain; charset=x-user-defined');
MyJavascriptModule.js(14,9) JSLINT: 'xml' used out of scope.
xml.setRequestHeader('Accept-Charset', 'x-user-defined');
MyJavascriptModule.js(17,5) JSLINT: 'xml' used out of scope.
xml.onreadystatechange = function() {
MyJavascriptModule.js(28,5) JSLINT: 'xml' used out of scope.
xml.send('');
MyJavascriptModule.js(34,16) JSLINT: Expected '{' and instead saw 'url'.
if (proxy) url = proxy + '?url=' + encodeURIComponent(url);
MyJavascriptModule.js(51,16) JSLINT: Expected '{' and instead saw 'url'.
if (proxy) url = proxy + '?url=' + encodeURIComponent(url);