Jslint

此功能在 3.9.0 之后版本可用,默认为开启(可关闭,看下方具体使用)。3.23.0 之后版本由静态扫描按钮主动触发。

为了让开发者在开发时可以更早的发现可能存在的代码逻辑问题以及影响运行时性能的代码,开发者工具在 3.9.0 支持了全文件级的代码静态扫描。

功能简述

我们使用了eslint来对 js 代码进行静态分析。
我们更改了eslint查找规则配置文件的逻辑,小程序开发目录中 eslint 相关配置文件不生效,只有工具内置的规则生效。
工具内置的eslint的规则除了一些校验代码风格的规则外,与它推荐开启的规则基本一致(eslint 规则文档)。
工具内置具体规则如下:

eslint.config

  1. {
  2. "rules":{
  3. "no-await-in-loop":1,
  4. "for-direction":1,
  5. "getter-return":1,
  6. "no-async-promise-executor":1,
  7. "no-compare-neg-zero":1,
  8. "no-cond-assign":1,
  9. "no-constant-condition":1,
  10. "no-control-regex":1,
  11. "no-debugger":1,
  12. "no-dupe-args":1,
  13. "no-dupe-keys":1,
  14. "no-duplicate-case":1,
  15. "no-empty":1,
  16. "no-empty-character-class":1,
  17. "no-ex-assign":1,
  18. "no-extra-boolean-cast":1,
  19. "no-func-assign":1,
  20. "no-inner-declarations":1,
  21. "no-invalid-regexp":1,
  22. "no-misleading-character-class":1,
  23. "no-regex-spaces":1,
  24. "no-sparse-arrays":1,
  25. "no-unexpected-multiline":1,
  26. "no-unreachable":1,
  27. "no-unsafe-finally":1,
  28. "no-unsafe-negation":1,
  29. "require-atomic-updates":1,
  30. "use-isnan":1,
  31. "no-case-declarations":1,
  32. "no-empty-pattern":1,
  33. "no-fallthrough":1,
  34. "no-global-assign":1,
  35. "no-octal":1,
  36. "no-redeclare":1,
  37. "no-obj-calls":1,
  38. "valid-typeof":1,
  39. "no-self-assign":1,
  40. "no-unused-labels":1,
  41. "no-useless-escape":1,
  42. "no-with":1,
  43. "no-delete-var":1,
  44. "no-shadow-restricted-names":1,
  45. "no-undef":1,
  46. "no-unused-vars":1,
  47. "no-class-assign":1,
  48. "no-const-assign":1,
  49. "no-dupe-class-members":1,
  50. "no-new-symbol":1
  51. }
  52. }

具体使用

静态扫描按钮 (3.23.0 之后版本)

点击静态扫描按钮,会有一个下拉列表,选择代码静态扫描分享web化扫描会开启静态扫描,并自动跳到调试器静态代码解析区域输出lint日志。
open-eslint
open-eslint

关闭 jsLint 能力

该功能可在项目信息 => 本地配置 => 静态代码检查中开启关闭(默认为开启)。
open-eslint

查看 lint 日志

在调试器中选择Console面板,点击代码静态扫描
open-eslint

忽略某些目录或文件

若使用第三方代码库或一些编译之后的代码,可以在 project.swan.json 文件中配置需要忽略的目录或文件。
open-eslint

相关调试操作

点击下图蓝框部分,编辑器可跳转至具体问题代码处;点击红框部分,可选择查看 eslint 日志的具体文件。
eslint-operation