Linting在制作代码时是一种非常宝贵的技术。然而,我发现自己想要了解更多的linting过程。为此,我正在构建一个带节点的基本静态代码分析工具。
linter应该做的是执行正则表达式检查,如果正则表达式匹配,则抛出错误(或警告取决于用户的配置)。
据我所知,linters传统上解析代码,有些甚至对AST执行检查,但我想完全避免这种情况。我也明白,我的方法通过完全避免解析语法绕过了linting的几乎每个重要部分。
目标是能够编写一些简单的简单检查,并将其作为快速原型制作的附件。 (示例:将^$\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服务器等中?