你应该开始对代码进行静态代码分析吗?[+5 静态代码分析工具]
应用程序开发永远不会停止,新功能会被集成进来,源代码会不断重构。
随着 source code 的增长和代码规模的增加,一些在编写代码时从未出现的错误可能会成为一个绊脚石。
某些编程错误可能会产生问题。这些错误可以是错误的形式、样式错误和可疑的结构。
代码中错误的影响可能因实例而异。例如,由于这些错误,最终用户可能无法登录、结账或访问各种页面。
如果您的代码结构不好,维护它可能会变得很昂贵。代码的结构还影响应用程序的可靠性和效率,以及最终用户与应用程序的交互。
在源代码中查找错误可以确保最终用户在与应用程序交互时不会遇到错误。
什么是 Linting?
Linting 是指自动检查源代码的程序和样式错误的过程。使用 Linting 工具进行 Linting。一个 linter 将以编程方式扫描您的代码,检查是否存在可能导致错误或代码风格和质量不一致的问题。
Linting 在开发周期的早期发生,先于代码审查和测试。一些 Linting 工具甚至可以帮助修复已经识别出的问题。
为什么 Linting 很重要?
检查错误
在编写代码时可能会犯一些错误。幸运的是,Linting 可以帮助您识别此类错误。
Lint 工具可以帮助识别以下错误:
- 无法访问的代码
- 危险的数据类型组合
- 超出数组索引
- 非可移植结构
- 解引用空指针
- 未使用的变量
Linting 还可以帮助您自动修复代码中的某些问题。例如,某些工具可以在您的 JavaScript functions 末尾添加丢失的分号,避免将来出现错误。
帮助编写安全代码
黑客始终在寻找漏洞。编写安全代码是降低 cybersecurity threats 的最佳方法之一。Linting 工具可以检测和警告代码中的各种安全问题。
Linting 有助于强制执行编码规范
如果您正在进行单独的项目,可以采用适合自己的任何代码编写风格。但是,如果您是团队的一部分,达成共识的编码规范可以减少冲突。大多数 Linting 工具允许用户自定义团队可以使用的规则。
这样的工具将始终在用户偏离设置的编码规范时进行突出显示。您的团队还可以使用制定的编码标准,例如 Google’s JS Style Guide。
提高代码质量
您的代码可能运行得很完美,但仍然包含一些错误。Linting 将帮助识别其中一些问题,并避免未来可能出现的错误。
何时使用 Linting?
您可以在以下情况下使用 Linting:
需要基本分析
Linting 工具用于基本分析。但是,如果要进行复杂的分析,可能需要更多的工具。
使用标准规则
一个lint工具将根据标准规则分析代码的风格和编程错误。因此,linter将会识别出你的代码是否违反了一些规则。然而,你可以在你的应用程序中禁用/覆盖一些规则的特定文件。
与解释型语言一起工作
存在着数百种编程语言。然而,其中一些语言与linting的兼容性要优于其他语言。
JavaScript和Python是一些不需要编译阶段的解释型语言的例子。当使用Python或JavaScript时,linting软件将会很有帮助,可以解决基本的编码错误并确保一致的编码风格。
然而,如果你使用C和C++等编译型语言,linting软件将不足以识别编程和风格错误。
linting的好处是什么?
- 生产中的代码错误较少。你可以及早发现代码中的问题,并避免它们进入生产环境。
- 简化代码审查。有了可以使用linters检查的编码规则后,代码审查将更侧重于代码的功能性,而不是样式方面。
- 生成可维护和一致的代码。不同的开发人员在编写代码时往往有各种不同的偏好。linters可以帮助组织达成一致的标准,并生成符合特定标准的代码。
- 确保对代码质量进行客观测量。通过linters,可以很容易地进行客观和可衡量的代码质量评估,而不是进行主观的代码质量讨论。
以下是一些你应该使用的linting工具:
JSHint
JSHint是一种静态分析工具,用于检查JavaScript代码中的错误。JSHint将扫描你的源代码,并指出潜在的错误和常见的错误。
JSHint可以在不同的环境中运行,每个环境的安装过程都不同。使用以下命令可以最简单地开始使用这个工具:
npm install -g jshint
安装完成后,你现在可以使用命令行界面来使用它。
你还可以使用以下命令将其安装为现有Node.js项目的开发依赖项:
npm install --save-dev jshint
特点
- 灵活。你可以将JSHint作为Node.js模块、命令行工具或Web应用程序使用。
- 易于与各种IDE和文本编辑器集成。JSHint具有适用于VIM、Sublime Text、Visual Studio Code、Atom、Textmate和Brackets等IDE的扩展/插件。因此,你可以直接从你喜欢的IDE中检查错误和常见的错误。
JSHint是一个开源且免费的流行静态分析工具,被Mozilla、Wikipedia、Facebook、Twitter、Disqus和Medium等大公司使用。
Stylelint
Stylelint是一种基本的分析工具,用于检查CSS文件中的错误。该工具可以防止开发人员在样式表中犯错误,并帮助他们编写一致的代码。
特点
- 简单的设置。官方网站上给出了Stylelint的逐步指南。安装Stylelint的最简单方法是全局安装。
你可以使用以下命令进行安装:
npm install -g stylelint
但是,你必须确保你已经安装了NPM,因为Stylelint是一个NPM包。
- 可与文本编辑器和插件集成。您可以直接从代码编辑器中使用 Stylelint。一些最著名的集成是 official VS Code extension,linter-stylelint(Atom 插件),SublimeLinter-stylelint(Sublime Text 插件)和 Ale(VIM 插件)。
- 可定制化。 Stylelint 检查标准规则。然而,您可以自定义规则和标准以适应您的需求。如果您打算在代码中强制非样式一致性,可以添加更多规则,例如 unit-allowed-list 和 selector-max-id。
Stylelint 是免费和开源的。使用这个工具,您将不再担心 CSS 文件,因为它可以检测基本和常见的问题。
Webhint
Webhint 是一个分析工具,通过检查常见错误和最佳实践,帮助改善网站的可访问性、cross-browser 兼容性和速度。
这个可定制的工具可以扫描网站的 URL,识别弱点,并根据一组规则生成关于网站如何实现 Web 最佳实践的报告。
您可以使用以下命令在全局安装 Webhint;
npm install -g --engine-strict hint
您需要在家目录中添加一个 .hintrc 文件来配置 Webhint。您可以使用以下命令生成该配置文件;
hint --init
特点
- 在整个 Web 开发生命周期内可用。Web hint 是您在开发、调试和交付代码时的伴侣。您可以在编码过程中使用 VS Code extension,使用 DevTools extension 来测试您的 Web 应用程序,并在将其移至生产环境之前使用 webhint CLI 分析您的网站。
- 灵活。 Webhint 支持 Chrome、Edge(Chromium)和 Firefox。您也可以使用 Studio Visual Code extension。
- 可定制化。Webhint 有常见提示,可帮助您创建最小错误的网站。然而,您可以使用 contributor guide 并创建适合您需求的提示。
Webhint 是开源的,并由 OpenJS Foundation 进行维护。
Standard JS
JavaScript Standard Style 提供了一个样式指南、格式化程序和一个代码检查工具。顾名思义,Standard JS 检查 JavaScript 代码中的编程和样式错误。
您可以使用以下命令在全局安装 Standard JS;
npm install standard --global
您还可以使用以下命令在 Node.js 项目中本地安装它;
npm install standard --save-dev
特点
- 易于设置。您无需配置任何内容即可检查代码中的错误。standard –fix 是您消除混乱代码所需的全部。
- 拥有数十个插件/扩展。您可以使用 Standard JS 在 Atom 中使用 linter-js-standard,或者在 Visual Studio Code 中使用 vscode-standard 扩展。
- 自动格式化。您无需手动修复代码,可以使用 standard –fix 命令。
Standard JS 是开源的。使用这个工具,您可以尽早发现所有的错误。
CSS-Lint
CSS-Lint 是一个免费的在线 CSS 格式化和验证工具。
特点
- 易于使用。您无需安装任何内容;只需将您的代码粘贴到在线编辑器中。该工具将检查语法和格式错误,并修复它们。
- 不存储 cookie。CSS-Lint 不存储 cookie;在检查后,您的代码将始终保持属于您自己。
CSS-Lint 适用于需要检查小文件的情况。但是,如果您的应用程序很大,最好选择可以与项目配置的 linters。
作者注:
创建和维护源代码是一个过程。拥有正确的基础是至关重要的,而 Linters 在这个过程中扮演着重要角色。使用了 Linters 之后,代码审查将会关注于重要问题,如业务逻辑,而不是样式和常见的编程错误。
结论
以上是一些 Linting 工具,你可以从今天开始使用它们,摆脱源代码中的编程和样式错误。作为开发者,你现在可以专注于创建解决方案,而不是寻找代码中丢失的分号或样式错误。所有这些 linters 都是开源的,所以你可以根据自己的需求进行调整。
您还可以探索一些最佳的API development和测试工具。