featherjiang
featherjiang
  • 发布:2021-06-09 14:36
  • 更新:2021-06-09 15:01
  • 阅读:568

【报Bug】eslint-js 插件误报错

分类:HBuilderX

产品分类: HbuilderX

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows 10

HBuilderX版本号: 3.1.17

示例代码:

eslint-js extension.js文件部分代码

    var report = cli.executeOnText(text, doc.fileName)  
    // 修改为下面代码eslint处理正确  
    // var report = cli.executeOnText(text, path.relative(doc.workspaceFolder.uri.path,doc.uri.path))  
    let errorMsgs = [];  
    if (report && report.results && Array.isArray(report.results) && report.results.length == 1) {  
      let result = report.results[0];  
      let messages = result.messages;  
      if (messages && messages.length > 0) {  
        for (let j = 0; j < messages.length; j++) {  
          let errorMsg = messages[j];  
          if (errorMsg.severity == 2) {  
            errorMsgs.push({  
              column: errorMsg.column - 1,  
              line: errorMsg.line - 1,  
              message: errorMsg.message  
            });  
          }  
        }  
      }  
      let diagCollection = hx.languages.createDiagnosticCollection(pluginName);  
      diagCollection.set(doc.uri, errorMsgs);  
      //自动修复  
      if (result.output !== undefined) {  
        const diffs = diff.stringDiff(text, result.output, false);  
        let workspaceEdit = new WorkspaceEdit();  
        let edits = [];  
        for (let df of diffs) {  
          edits.push(new TextEdit({  
            start: df.originalStart,  
            end: df.originalStart + df.originalLength  
          }, result.output.substr(df.modifiedStart, df.modifiedLength)));  
        }  
        workspaceEdit.set(doc.uri, edits);  
        hx.workspace.applyEdit(workspaceEdit);  
      }  
    }  
    console.log(report, errorMsgs)  
    // 打印出结果 filePath: 'c:\\Users\\feath\\Desktop\\test\\uni-app-cli\\main.js' 错误  
    // 实际路径应为filePath: 'c:\\Users\\feath\\Desktop\\test\\uni-app-cli\\src\\main.js'

操作步骤:

使用vue-cli项目添加import规则检测import路径

预期结果:

检测无错误

实际结果:

报错

bug描述:

我遇到这个问题
https://ask.dcloud.net.cn/question/124768
然后看了一下eslint-js插件源码
发现源码

cli.executeOnText(text, doc.fileName)

这个地方文件只有文件名
导致eslint返回结果的路径和实际路径不一致
导致误报错
应该基于项目路径

cli.executeOnText(text, path.relative(doc.workspaceFolder.uri.path,doc.uri.path))

eslint-plugin-vue可能也有这个问题

2021-06-09 14:36 负责人:无 分享
已邀请:
DCloud_HB_WDL

DCloud_HB_WDL

感谢反馈,我们验证一下

  • featherjiang (作者)

    复现问题了吗 需要详细代码配置吗

    2021-06-10 16:36

该问题目前已经被锁定, 无法添加新回复