zoukankan      html  css  js  c++  java
  • 对JsLint的改造

    JsLint对JavaScript代码的检测使得我们错误会更少一些,这样大大节省调试时间(特别对我这种习惯在调试状态边改边写代码的人)

    从JsLint主页上下载下来的用于WSH脚本的代码(http://www.jslint.com/wsh/index.html),按如下网页的做法
    http://www.cnblogs.com/Pharaoh/archive/2007/07/30/836356.html
    仍无法在VS的外部工具中使用。
    使用时,会提示:
    Microsoft JScript 运行时错误: 输入超出了文件尾

    应该是Pharaoh对JsLint有进行修改。但文中提供的链接已经不可使用了。因此只好自己试一下看。

    要调试JsLint.js,可以在参看cscript的帮助说明,只要参数后面加上一个//x,即可,为了更快一些,我在
    (function()
    {
     if(!JSLINT(WScript.StdIn.ReadAll(), {passfail:true}))
     {
      var e=JSLINT.errors[0];
      WScript.StdErr.WriteLine('Lint at line '+(e.line+1)+' character '+(e.character+1)+': '+e.reason);
      WScript.StdErr.WriteLine((e.evidence||'').replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"));
      WScript.Quit(1);
     }
    })();
    的第一句之前加上debugger;

    调试后发现出错是在WScript.StdIn.ReadAll()这一句,可能它对命令行
    cscript jslint.js <myprogram.js
    是可行的,对VS的外部工具则是不行的。外部工具中,当前的文件会做为一个参数传进去。因此我把代码改为如下:
    (
    function()
    {
     //只读常量
     var ForReading = 1;
     var TristateTrue = -1;   //以 Unicode 格式打开文件。
     var TristateFalse = 0;   //以 ASCII 格式打开文件。

     //使用FileSystemObject对象
     //检查文件是什么编码保存的
     var fso = new ActiveXObject("Scripting.FileSystemObject");
     //以只读方式打开 第一个参数所指的文件
     var ts = fso.OpenTextFile(WScript.Arguments(0), ForReading, false, TristateFalse);
     var i1=ts.Read(1).charCodeAt(0);
     var i2=ts.Read(1).charCodeAt(0);
     if (i1==0xF8F5)
      ts = fso.OpenTextFile(WScript.Arguments(0), ForReading, false, TristateTrue);
     else if (i1=0x9518)
     {
      //?
      ts = fso.OpenTextFile(WScript.Arguments(0), ForReading, false, TristateTrue);
     }
     else
      ts = fso.OpenTextFile(WScript.Arguments(0), ForReading, false, TristateFalse);

    debugger;
     //把它全部读进来
     var s=ts.ReadAll();
     //让JSLINT检查,其中出现错误后仍要继续检查
     if (!JSLINT(s, {passfail:false}))
     {
      //对所有错误一次性报告(原来的只报告一个错误)
      for (var i=0; i<JSLINT.errors.length; i++)
      {
       var e=JSLINT.errors[i];
       //这种输入格式可能会让VS具有双击自动定位的功能
       WScript.StdErr.WriteLine(WScript.Arguments(0)+"("+(e.line+1)+','+(e.character+1)+'): '+e.reason);
       //输出错误的语句
       WScript.StdErr.WriteLine((e.evidence||'').replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"));
      }
     
      WScript.StdErr.WriteLine("检查完成!");
      WScript.Quit(1);
     }
     else
     {
      WScript.StdOut.WriteLine(WScript.Arguments(0)+" : 没有错误!");
      WScript.Quit(0);
     }
    }
    )();
    这样就可以用了,(无法对UTF-8编码的文件进行检测,谁有好方法希望告诉一下)。

  • 相关阅读:
    自从学会了搭建开源网站,妈妈再也不担心我找不到web自动化学习环境啦!
    领导要我6点下班前创建1000个有效的手机号,现在5点半了!教你用random模块10分钟搞定!
    python:字符串 扩展分片:第三个限制值
    python字符串:索引和分片
    测试基础:测试用例设计策略
    测试基础:软件测试思维方式
    面试整理:python列表面试习题
    面试整理:linux
    测试的一些思考
    python ConfigParse模块中的方法
  • 原文地址:https://www.cnblogs.com/yzx99/p/1276591.html
Copyright © 2011-2022 走看看