NodeJS 特定语言语法检查器
NodeJS Specific Language Syntax Checker
我最近发现了一个名为 syntax-checker (https://www.npmjs.com/package/syntax-checker)
的 npm 包
我想将其集成到我的 js 脚本中。我正在使用 Discord 聊天机器人来检查代码块和编码语言的消息。正如语法检查器的描述所说,它支持 Ruby、PHP、Perl、Lua、C/CPP、Bash、Javascript 和 Python。我如何将其集成到机器人中?我目前用于 js 检查此脚本
if (message.content.includes("```js"))
{
let code = message.content.substring('```js '.length);
var codebegin = code.split("```js").pop();
var n = codebegin.indexOf('```');
var codeend = codebegin.substring(0, n != -1 ? n : codebegin.length);
var check = require('syntax-error');
var err = check(codeend);
if (err)
{
message.reply("Your code contains errors! ```" + err + "```");
}
else
{
message.reply("No Errors!");
}
}
Syntax-checker 的工作原理是 运行 在您的计算机上运行用于编译代码(无输出)的程序并检查是否有任何错误。它 运行s 通过分析传递给它的目录中的每个文件,然后输出到一个文件。您需要为每个请求创建一个临时文件,然后 运行 使用 shell 的程序(为此查看 child_process 或 exec)。
该模块最终所做的就是根据其文件扩展名和 运行 之类的 exec('php -l file/path/here.php', callbackFunctionHere)
决定代码是什么语言。 PHP 就是 运行,其他的是 ruby -c
、python -m py_compile
、perl -c
、luac -p
、bash -n
。 gcc -fsyntax_only
,以及 uglifyjs -o /dev/null
。
有了这些知识,就没有必要乱搞文件系统了。只需使用 exec("echo '" + codeStr + "' | php -l', callbackFunctionHere);
之类的东西。将 php -l
替换为您需要的任何 linter。确保你 escape any single quotes 可能出现在 codeStr
中,否则你会遇到奇怪的错误。
我最近发现了一个名为 syntax-checker (https://www.npmjs.com/package/syntax-checker)
的 npm 包我想将其集成到我的 js 脚本中。我正在使用 Discord 聊天机器人来检查代码块和编码语言的消息。正如语法检查器的描述所说,它支持 Ruby、PHP、Perl、Lua、C/CPP、Bash、Javascript 和 Python。我如何将其集成到机器人中?我目前用于 js 检查此脚本
if (message.content.includes("```js"))
{
let code = message.content.substring('```js '.length);
var codebegin = code.split("```js").pop();
var n = codebegin.indexOf('```');
var codeend = codebegin.substring(0, n != -1 ? n : codebegin.length);
var check = require('syntax-error');
var err = check(codeend);
if (err)
{
message.reply("Your code contains errors! ```" + err + "```");
}
else
{
message.reply("No Errors!");
}
}
Syntax-checker 的工作原理是 运行 在您的计算机上运行用于编译代码(无输出)的程序并检查是否有任何错误。它 运行s 通过分析传递给它的目录中的每个文件,然后输出到一个文件。您需要为每个请求创建一个临时文件,然后 运行 使用 shell 的程序(为此查看 child_process 或 exec)。
该模块最终所做的就是根据其文件扩展名和 运行 之类的 exec('php -l file/path/here.php', callbackFunctionHere)
决定代码是什么语言。 PHP 就是 运行,其他的是 ruby -c
、python -m py_compile
、perl -c
、luac -p
、bash -n
。 gcc -fsyntax_only
,以及 uglifyjs -o /dev/null
。
有了这些知识,就没有必要乱搞文件系统了。只需使用 exec("echo '" + codeStr + "' | php -l', callbackFunctionHere);
之类的东西。将 php -l
替换为您需要的任何 linter。确保你 escape any single quotes 可能出现在 codeStr
中,否则你会遇到奇怪的错误。