linting 和编译有啥区别?

Posted

技术标签:

【中文标题】linting 和编译有啥区别?【英文标题】:What's the difference between linting and compiling?linting 和编译有什么区别? 【发布时间】:2017-02-11 09:12:49 【问题描述】:

我知道在 Java 中,有一个编译器会在您编写错误代码时告诉您。但是 javascript 不能那样工作,因为它没有编译器。但是,“linting”javascripts 是编译代码的方式吗?

【问题讨论】:

„但是 Javascript 不能以这种方式工作,因为它没有编译器。”看到这个en.wikipedia.org/wiki/JavaScript_engine 【参考方案1】:

Linting 是解析代码以验证语法和格式是否良好并遵循良好实践。 linter 会告诉您缩进是否不正确,或者您是否应该在 = 运算符周围添加空格。 如果您的代码包含众所周知的安全漏洞或代码异味,linter 还可以警告您。

编译是解析代码以验证语法是否正确,并将代码转换为另一种语言(通常是更快的语言)。

那么有什么区别呢?

编译:

语法验证 代码转换为不同的语言

起绒:

语法验证 样式和格式分析 (可选)代码异味/错误代码检测 (可选)安全/性能分析

【讨论】:

也就是说,编译 = linting + 转换代码? 不完全是,我会更新我的答案来解释差异【参考方案2】:

Linting 是运行程序的过程,该程序将分析代码中的任何错误。

JavaScript Lint 比竞争对手的 lint 具有优势,因为它基于 Firefox 浏览器的 JavaScript 引擎。这提供了一个强大的框架,它不仅可以检查 JavaScript 语法,还可以检查脚本中使用的编码技术并警告有问题的做法。

有关 javascript lint 的更多信息,请访问 http://www.javascriptlint.com/

而编译将通过代码a运行并将其转换为机器语言

【讨论】:

以上是关于linting 和编译有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

“提供的文件”和“编译”有啥区别

编译器中的“语法”和“语法”有啥区别?

编译器和链接器有啥区别?

ide和编译器有啥区别,啥是ide,啥是编译器?

编译代码和可执行代码有啥区别?

javac 和 Eclipse 编译器有啥区别?