javascript - 创建 linter 时,预期的输出格式是什么?

标签 javascript parsing command-line-interface

在编写代码时,Linting 是一项非常宝贵的技术。然而,我发现自己想要更多地了解 linting 的过程。为此,我正在使用 node.js 构建一个基本的静态代码分析工具。

linter 应该做的是执行正则表达式检查,如果正则表达式匹配,则抛出错误(或警告,具体取决于用户的配置)。

我知道 linter 传统上解析代码,有些甚至对 AST 执行检查,但我想完全避免这种情况。我也明白我的方法通过完全避免解析的语法绕过了 linting 的几乎所有重要部分。

目标是能够编写一些非常简单的检查,并将其作为快速原型(prototype)制作的辅助 linter。 (例如:将 ^$\n^$ 放入我的 linter 配置中,两个连续的空白行将引发错误)

似乎没有记录的过程部分是命令行预期的输出类型。这是 xo 的示例输出:

/Users/dawsonbotsford/code/regexLinter/cli.js
  42:9   error  Expected indentation of 6 space characters but found 8   indent
  43:9   error  Expected indentation of 6 space characters but found 8   indent
  43:32  error  Missing semicolon                                        semi

和 eslint 示例输出:
/Users/dawsonbotsford/code/regexLinter/cli.js
  3:1  error  Parsing error: The keyword 'const' is reserved

我将如何使用正确类型的 shell 错误/警告来模拟此输出,以便将其插入 sublime-contrib 插件、CI 服务器等?

最佳答案

如果您希望它是可插入的,您可以做的最简单的方法是为 ESLint 编写一个插件。如果您需要捕获格式问题。如果你想转换代码使用🐊 Putout ,我正在使用的工具,它还有一个用于 的插件ESLint 因此,您将要显示的消息将可以在终端、IDE、CI 等中访问。

关于javascript - 创建 linter 时,预期的输出格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661442/

相关文章:

javascript - Highcharts 在 x 轴上多次显示额外标签

regex - 将键和值从 Perl 正则表达式传递到哈希

java - parseDouble 与 nextDouble

python - 为什么我的 Python 脚本在终端中暂停?

javascript - 如何在 angularJS 中使用 ng-if

javascript - 平滑缩放移动 div 元素

javascript - 如何修复javascript数组写入问题?

java - Android JSON only OBJECT Fetching with Iteration

go - 如何使用urfave/cli实现OptionFlag

NPM 发布注册表 - 403 Forbidden - "You don' 没有发布 "..."的权限