JavaScript 和 TypeScript 中的代码检查
本主题列出 了 JavaScript 和 TypeScript 中可用的所有 PhpStorm代码检查。
您可以在编辑器 |上切换特定检查或更改其严重性级别。IDE 设置的检查Ctrl+Alt+S页面。
DOM 问题
检查 | 描述 | 默认严重性 |
---|---|---|
| ||
报告用于检测运行脚本的浏览器或操作系统的常见 JavaScript 模式。除了指出不可移植的结构外,这些平台检测模式通常不完整且容易被愚弄。在大多数情况下,检测单个环境特征优于尝试检测整个平台。 检测到的模式包括:
| ||
报告可能会给 XHTML 文档带来问题的常见 JavaScript DOM 模式。特别是,检测到的模式的行为将完全不同,具体取决于文档是作为 XML 还是 HTML 加载的。这可能会导致脚本行为取决于文档的 MIME 类型而不是其内容的细微错误。检测到的模式包括 document.body、document.images、document.applet、document.links、document.forms 和 document.anchors。 | ||
|
导入和依赖
检查 | 描述 | 默认严重性 |
---|---|---|
报告 package.json 中未安装或与指定版本范围不匹配的依赖项。 | 警告 | |
报告使用 JSX 构造而不导入 React 命名空间。在文件范围内拥有 React 命名空间可确保正确的代码编译。 在具有 React 17+ 的项目中禁用检查,因为这些版本不再需要 React 命名空间。 | 弱警告 | |
报告未安装或未在 package.json 依赖项中列出的 require() 范围内的文件。 | 弱警告 | |
检查 JavaScript 语言中使用的 URL 导入。建议下载指定远程 URL 的模块。这种关联使 IDE 能够提供正确的代码完成和导航。 仅 JavaScript 语言中的 ECMAScript 模块支持导入说明符中的 URL。 | 没有高亮,只有修复 | |
| 弱警告 | |
报告冗余 | 警告 | |
建议将您的 package.json 依赖项升级到最新版本,忽略指定版本。 | 没有高亮,只有修复 |
代码质量工具
检查 | 描述 | 默认严重性 |
---|---|---|
报告ESLint linter检测到的差异。 突出显示基于ESLint 配置文件中为每个单独规则指定的规则严重性。清除“使用配置文件中的规则严重性”复选框以将此检查中配置的严重性用于所有 ESLint 规则。 | ||
报告JSHint linter 检测到的问题。 | ||
报告JavaScript 标准样式linter 检测到的差异。 编辑器中突出显示的严重性基于 linter 报告的严重性级别。 | ||
报告TSLint linter检测到的差异。 突出显示基于在TSLint 配置文件中为每个单独的规则指定的规则严重性。清除“使用配置文件中的规则严重性”复选框以将此检查中配置的严重性用于所有 TSLint 规则。 |
作业问题
检查 | 描述 | 默认严重性 |
---|---|---|
报告可以用运算符赋值替换的赋值操作,以使您的代码更短并且可能更清晰。 例子: x = x + 3; x = x / 3; 应用快速修复后,结果如下所示:x += 3; x /= 3; | ||
报告对声明为 | ||
报告对函数参数的赋值,包括递增和递减操作。尽管有时是有意的,但这种结构可能会非常令人困惑,并且通常是错误的结果。 | ||
报告用作 | 警告 | |
报告嵌套在另一个表达式中的赋值表达式,例如 | ||
报告赋值表达式,其中赋值的结果用于包含表达式。此类分配通常指示编码错误,例如, | ||
报告表单中的分配 | 警告 |
可能令人困惑的代码结构
检查 | 描述 | 默认严重性 |
---|---|---|
报告任何没有小数点的浮点数,或小数点前的任何数字,或小数点后的数字。这样的文字可能会令人困惑,并且违反了几个编码标准。 | ||
报告 JavaScript 代码中的可疑字符组合 | ||
报告对 、 或 函数的调用 | ||
报告一个“幻数”,它是一个没有被常量声明命名的数字文字。幻数可能导致代码意图不明确,如果幻数在一个代码位置更改但在另一个代码位置保持不变,则可能导致错误。数字 0、1、2、3、4、5、6、7、8、9、10、100、1000、0.0 和 1.0 将被忽略。 | ||
报告具有 else 分支和否定条件的 if 语句。颠倒 if 和 else 分支的顺序通常会增加此类语句的清晰度。 | ||
报告其条件被否定的条件表达式。建议翻转条件表达式中的分支顺序,以增加语句的清晰度。例子: | ||
报告另一个三元条件中的三元条件表达式。这种嵌套条件可能会非常混乱,最好用更明确的条件逻辑代替。 | ||
报告嵌套在另一个函数中的函数。尽管 JavaScript 允许函数嵌套,但这样的结构可能会让人困惑。 使用下面的复选框忽略匿名嵌套函数。 | ||
报告包含太多项的算术表达式。这样的表达式可能会令人困惑并且容易出错。 使用下面的字段指定算术表达式中允许的最大项数。 | ||
报告包含太多项的布尔表达式。这样的表达式可能会令人困惑并且容易出错。 使用下面的字段指定算术表达式中允许的最大项数。 | ||
报告算术表达式,包括加或减零、乘以零或一、除以一和移位零。此类表达式可能是由于未完全完成自动重构而产生的。 | 警告 | |
报告一个递增 ( | ||
报告正文为空的 | 警告 | |
报告不用作 | ||
报告 | 警告 |
节点.js
检查 | 描述 | 默认严重性 |
---|---|---|
建议为 Node.js | 警告 |
单元测试
检查 | 描述 | 默认严重性 |
---|---|---|
报告失败的方法调用或测试中的断言。 | 警告 |
异步代码和承诺
检查 | 描述 | 默认严重性 |
---|---|---|
| 弱警告 | |
报告函数内部
异步函数 bar() { /* ... */ } 异步函数 foo() { bar(); // 坏的 }
应用快速修复后,await 会添加前缀:
async function bar() { /* ... */ } async function foo() { await bar(); // 好的 }
选择“返回语句”复选框中的“报告”复选框时,还建议添加await 返回语句。虽然这通常不是必需的,但它有两个主要好处。
| 弱警告 | |
报告 的冗余使用 await before promises when applicable (in return statements, and with Promise.resolve/reject ).在这种情况下删除await 会导致两个问题。
| 弱警告 | |
报告一个函数调用,该函数调用返回一个 | 弱警告 | |
报告顶级 |
有效性问题
检查 | 描述 | 默认严重性 |
---|---|---|
报告 | 警告 | |
报告将值重新分配给常量或只读变量。 | 错误 | |
报告既不是赋值也不是调用的表达式语句。此类陈述通常表示错误。 | 弱警告 | |
报告在某些情况下返回值而在其他情况下不返回值的函数。这通常表示错误。 例子:
函数 foo() { if (true) return 3; 返回; }
| ||
报告一个不推荐使用的八进制整数文字,前缀为 | 错误 | |
报告用作名称的 JavaScript 保留字。JavaScript 规范保留了一些当前不用作关键字的词。如果更高版本的 JavaScript 开始使用这些词作为关键字,则使用这些词作为标识符可能会导致代码损坏。 | 警告 | |
报告包含 |
数据流
打字稿
检查 | 描述 | 默认严重性 |
---|---|---|
报告一个抽象类的公共构造函数并建议对其进行保护(因为将其公开是没有用的)。 | 弱警告 | |
报告 TypeScript 代码中的一个常见错误,即当将类字段声明为构造函数参数,然后分配此参数时。 在这种情况下,不会分配相应的字段,只修改本地参数值。
类 Foo { 构造函数(私有 p:数字) { p = 1; //必须是this.p = 1; } }
| 警告 | |
报告联合或交集内的重复类型。 | 警告 | |
报告与显式类型的当前代码样式不匹配的类型注释。 当从上下文推断的类型与类型注释完全匹配时,不需要类型声明,例如:var pi: number = 3.14 在某些情况下,最好始终使用显式类型 - 这可以防止意外的类型更改并使代码更加明确。 | 没有高亮,只有修复 | |
报告可以设为只读的私有字段(例如,如果该字段仅在构造函数中分配)。 | 弱警告 | |
报告tsconfig.json 文件中的 、 或 属性 checkJs 属性需要allowJs .该extends 属性应该是有效的文件引用。 | 警告 | |
报告函数、接口或类声明中的无效类型参数。 | 错误 | |
在没有显式导入的情况下报告来自扩充模块的使用情况。 | 没有高亮,只有修复 | |
报告符号所需的 TypeScript 库文件,但未 | 错误 | |
报告需要显式选项的用法 | 警告 | |
报告变量类型被类型保护缩小的变量的用法。请注意,严重性级别不会影响此检查。 | 警告 | |
报告一个等于默认值的类型参数并且可以删除。 例子:
类型 Foo<T=number> = T; 让 z: Foo<数字>;
| 弱警告 | |
如果当前文件是模块(EcmaScript 或 CommonJS),则报告 UMD 全局变量的用法。如果未隐式包含库,则在没有显式导入的情况下引用 UMD 变量可能会导致运行时错误。 | 弱警告 | |
如果上下文符号可以隐式解析为类型,则报告带有参数、返回值或分配的表达式或不正确类型的函数调用
声明 var test: any; test.hasOwnProperty(true); //报告“真”
| 弱警告 | |
报告对 JSX (React) 组件的未解析引用。如果引用的组件在项目或其依赖项中定义或创建具有指定名称的新组件,则建议添加导入语句。 可以在 Editor | 中修改新组件的模板。文件和代码模板。 | 弱警告 | |
报告未解析的函数调用。 | 弱警告 | |
报告对变量或字段的未解析引用。 | 弱警告 |
可能的错误
检查 | 描述 | 默认严重性 |
---|---|---|
报告 | ||
报告 | 警告 | |
报告与不兼容类型的操作数或与没有可能公共值的类型的操作数的比较。 | 弱警告 | |
报告与 NaN 的比较。像 | 警告 | |
报告数组文字中的连续逗号。跳过的元素接受该 | 警告 | |
报告返回原始值的构造函数。当使用 调用时 | ||
报告除以零或余数除以零。 | ||
报告可能导致意外类型强制的相等运算符的使用。建议将
| 警告 | |
报告只能通过抛出异常退出的 | 警告 | |
报告必须无限递归或抛出异常的函数。此类函数可能无法正常返回。 | 警告 | |
报告可能无效的索引属性访问,例如 | 警告 | |
报告使用了可能无效的构造函数,例如:在 之后不是构造函数的函数 | 警告 | |
报告一个
函数外部() { this.outerProp = 1; function inner() { // 不好,因为 Outer 的 'outerProp' // 不会在此处更新 // 正如预期的那样调用 'new Outer()' this.outerProp = 2; } 内部();}
| 警告 | |
this 在不是 lambda 的嵌套函数中是函数自己的this ,与外部类无关。 | 警告 | |
报告对象分配,其中分配对象的结果被忽略,例如, | ||
报告表单中的分配 | 警告 | |
报告 this ,所以bind 调用对它们没有影响。有关详细信息,请参见此处。 | 警告 | |
报告目标变量或函数参数的名称与分配给它的值的名称不匹配的赋值或函数调用。 例子:
变量 x = 0; 变量 y = x;
要么
变量 x = 0, y = 0; var rc = new Rectangle(y, x, 20, 20);
指定不应一起使用的名称。如果参数名称或赋值目标名称包含一组单词,而分配或传递的变量名称包含另一组单词,则会报告错误。 | 警告 | |
报告不返回任何内容的函数的返回值。调用此类函数始终会产生一个
让 a = console.log('foo');
以下用法被忽略:
| 警告 |
控制流问题
检查 | 描述 | 默认严重性 |
---|---|---|
报告一个
for(; exitCondition(); ) { 进程(); }
应用快速修复后,结果如下所示:
while(exitCondition()) { 进程(); }
如果您希望此检查忽略具有琐碎或不存在条件的循环,请使用下面的复选框。 | ||
报告 | ||
报告 | ||
报告具有相同 | ||
以格式报告条件表达式 | 警告 | |
如果 (a) { ... } 否则如果 (a) { ... }
| ||
报告其主体保证最多执行一次的 | 警告 | |
报告由调用方法、访问属性或调用对象上的函数引起的错误 | 警告 | |
报告无意义或无意义复杂的布尔表达式或语句。 例子:
让 a = !(false && x); 让 b = 假 || X;
应用快速修复后,结果如下所示:
让 a = true; 让 b = x;
| 警告 | |
报告
if(foo()) { 返回真;} 否则 { 返回假;}
应用快速修复后,代码如下所示:返回 foo(); | 警告 | |
报告表单的条件表达式
健康)状况 ?真:假条件?假:真
这些表达式可以安全地转换为
条件!条件
| 警告 | |
报告尾递归,即当函数调用自身作为返回前的最后一个操作时。尾递归总是可以用循环代替,这会快得多。一些 JavaScript 引擎会执行此优化,而其他引擎则不会。因此,尾递归解决方案在不同环境中可能具有相当不同的性能特征。 | ||
| 警告 | |
报告一个不必要的 | 警告 | |
报告未使用的标签。 | 警告 | |
报告一个带标签的 | 警告 | |
报告一个带标签的 | 警告 | |
报告永远无法执行的代码,这几乎肯定表示错误 | 警告 | |
报告一个
x instanceof A 两种情况之一中,类型保护可能是不健全的:
| 警告 |
尝试语句问题
检查 | 描述 | 默认严重性 |
---|---|---|
报告块内的 | 警告 | |
报告块 | 警告 | |
报告块 | 警告 | |
报告一个空 catch 使检查静音。 | ||
报告一个空 | ||
报告一个空 | ||
报告 | 警告 | |
报告 catch 带有注释的块的检查。 |
命名约定
检查 | 描述 | 默认严重性 |
---|---|---|
报告使用名称太短、太长或不遵循指定正则表达式模式的 JSDoc java.util.regex 使用正则表达式的标准格式。 | ||
报告名称太短、太长或不遵循指定正则表达式模式的函数。 使用下面提供的字段来指定函数名称的最小长度、最大长度和正则表达式。java.util.regex 使用正则表达式的标准格式。 | ||
报告名称太短、太长或不遵循指定正则表达式模式的函数参数。 使用下面提供的字段来指定局部变量名称的最小长度、最大长度和正则表达式。使用标准java.util.regex 格式的正则表达式。 | ||
报告名称中的非 ASCII 符号。 如果选择了“仅允许 ASCII 名称”选项,则报告包含非 ASCII 符号的所有名称。否则报告所有同时包含 ASCII 和非 ASCII 符号的名称。 | 警告 | |
报告名称太短、太长或不遵循指定正则表达式模式的局部变量。 使用下面提供的字段来指定局部变量名称的最小长度、最大长度和正则表达式。使用标准java.util.regex 格式的正则表达式。 |
流量类型检查器
检查 | 描述 | 默认严重性 |
---|---|---|
报告流类型检查器未涵盖的 JavaScript 代码片段。要使用此检查,请在设置 |中配置 Flow 可执行文件。语言和框架 | JavaScript。 | ||
报告来自Flow的错误。 | ||
报告 | 警告 | |
| 警告 |
功能指标
检查 | 描述 | 默认严重性 |
---|---|---|
报告具有三个或更多否定操作( | ||
报告具有多个循环语句的函数。 | ||
报告具有多个返回点的函数。这样的功能很难理解和维护。 | ||
报告具有太多参数的函数。此类功能通常表明设计存在问题。 使用下面的字段来指定函数的最大可接受参数数。 | ||
报告函数中有太多分支点的函数(圈复杂度太高)。此类功能可能会令人困惑且难以测试。 使用下面提供的字段来指定函数的最大可接受圈复杂度。 | ||
报告一个过长的函数。函数长度是通过计算函数中非空语句的数量来计算的。太长的函数容易出错并且难以测试。 使用下面的字段指定函数中可接受的最大语句数。 | ||
报告一个函数,其主体包含在其他语句中嵌套太深的语句。这样的函数可能会令人困惑,并表明重构可能是必要的。 使用下面提供的字段来指定函数中允许的最大可接受嵌套深度。 |
代码风格问题
检查 | 描述 | 默认严重性 |
---|---|---|
检查用 var 声明的局部变量的声明是否位于函数作用域的顶部。 默认情况下,变量声明总是在代码执行时不可见地移动(“提升”)到其包含范围的顶部。因此,在范围顶部声明它们有助于在代码中表示这种行为。 | ||
报告链式相等比较(即 | ||
报告一个函数调用,其目标是另一个函数调用,例如, | ||
报告左侧为常数值的比较操作。根据编码约定,常量应位于比较的右侧。 | ||
报告右侧为常数的比较操作。根据编码约定,常量只应位于比较的左侧。 | ||
报告在另一个函数调用中用作参数的函数调用,例如, | ||
报告一个箭头函数,其主体仅由大括号和一个语句组成。建议转换为不带括号的简洁语法。 let incrementer = (x) => {return x + 1}; 应用快速修复后,代码片段如下所示: let incrementer = (x) => x + 1; | 没有高亮,只有修复 | |
报告主体不是块语句的 | ||
报告对未在变量类型中定义的属性的赋值。 例子:
/** * @type {{ property1: string, property2: number }} */ let myVariable = create(); myVariable.newProperty = 3; // 坏的
| 弱警告 | |
报告多余的括号。 在表达式中:var x = ((1) + 2) + 3 在箭头函数参数列表中:var incrementer = (x) => x + 1 在 TypeScript 和 Flow 类型声明中:type Card = (Suit & Rank) | (Suit & Number) | 没有高亮,只有修复 | |
报告末尾没有分号或换行符的语句。 在编辑器 |中选择“用分号终止语句”选项。代码风格 | JavaScript 或 TypeScript -报告任何不以分号结尾的语句的标点符号,即使使用了换行符。根据某些编码风格,为了与其他语言保持一致,分号优于换行符。 |
ES2015 迁移辅助
检查 | 描述 | 默认严重性 |
---|---|---|
报告 for..of ECMAScript 6 中引入的循环遍历iterable 对象。对于数组,这种结构比 更可取for..in ,因为它仅适用于数组值,但不适用于数组对象的属性。 | 没有高亮,只有修复 | |
报告 | 没有高亮,只有修复 | |
报告一个 module.export 成的快速修复export 不适用于module.export 内部函数或语句,因为export 语句只能位于模块的顶层。 | 没有高亮,只有修复 | |
报告一个 require() 在使用“修复所有”操作时转换嵌套函数和语句内的所有调用。请注意,将require() 内部范围内的语句转换为import 语句可能会导致代码语义发生变化。导入语句是静态模块依赖并被提升,这意味着它们被移动到当前模块的顶部。require() 动态调用加载模块。它们可以有条件地执行,它们的范围由使用它们的表达式定义。清除“使用修复所有操作在内部范围内转换 require()”复选框,以防止在使用“修复所有”操作时对这些复杂情况进行任何更改。 | 没有高亮,只有修复 | |
报告一个 let 和const 都是块范围的并且行为更严格。建议将所有var 声明替换为let orconst 声明,具体取决于特定值的语义。声明可以移动到函数的顶部或放置在第一次使用变量之前以避免引用错误。选择“Conservatively convert var with Fix all action”选项,以防止在使用“Fix all”操作时在这些复杂情况下发生任何变化。 | 弱警告 | |
例子: arr.map(function(el) {return el + 1}) 应用快速修复后,代码如下所示:arr.map(el => el + 1) | 没有高亮,只有修复 | |
for..of 循环在 ECMAScript 6 中引入并迭代iterable 对象。 | 没有高亮,只有修复 | |
报告字符串连接。建议用模板文字替换它 例子“结果:” + a + “。” 应用快速修复后,代码如下所示:`结果:${a}。` | 没有高亮,只有修复 |
一般的
检查 | 描述 | 默认严重性 |
---|---|---|
报告不推荐使用的函数变量的使用情况。 | 弱警告 | |
报告具有相同键的多个解构属性。建议合并属性。 | 弱警告 | |
报告一个范围内的多个声明。 | 警告 | |
报告基本语法问题和与语言规范的不一致,例如关键字的无效使用、不兼容的数字格式的使用或 getter/setter 的多个参数。 通常,必须始终报告此类错误并且不应禁用此类错误。但在某些情况下,例如由于 JavaScript 的动态特性、使用尚不支持的语言功能或 IDE 检查器中的错误等问题,禁用报告这些非常基本的错误可能会很方便。 | 错误 | |
报告全局变量的隐式声明。 例子:
var aaa = 1; // 好 bbb = 2; // 不好,如果 bbb 没有在某处用 'var' 声明
| 弱警告 | |
报告其 | 警告 | |
报告对标有 s | 警告 | |
报告Google Closure Compiler注释所暗示的警告,包括正确使用 | 警告 | |
报告可以缓存的重复 jQuery 选择器或属性或伪选择器的使用(可选)。 | 警告 | |
报告可以安全生成的类方法 private 方法。 | 警告 | |
报告 JSDoc 注释中的名称和参数数量与函数的实际参数不匹配。 | 警告 | |
报告其内容已查询但未更新或已更新但未查询的字段或变量的集合。这种不匹配的查询和更新是没有意义的,并且可能表示死代码或印刷错误。 查询方法会根据它们是否返回某些内容或是否传递给它们的回调来自动检测。使用下表指定哪些方法是更新方法。 | 警告 | |
报告与任何本地存储文件无关的外部 JavaScript 库的 URL。建议下载库。这种关联使 IDE 能够提供正确的代码完成和导航。 | 警告 | |
报告不在该 | ||
报告对原始类型的包装器的不当使用或正在修改的原始类型的属性,因为在后一种情况下,分配的值将丢失。 | 警告 | |
报告可以转换为 ES6 速记样式的对象属性,并提供快速修复来执行此操作。 var obj = {foo:foo} 应用快速修复后,代码如下所示: var obj = {foo} | 没有高亮,只有修复 | |
报告 JavaScript 代码中 React JSX 标签的使用。 | ||
报告字符串或模板文字的嵌套实例。建议将嵌套实例内联到包含的模板字符串中。 例子:`Hello, ${`Brave ${"New"}`} ${"World"}!` 应用快速修复后,代码如下所示:`Hello, Brave New World!` | 弱警告 | |
报告从函数对外部可变变量的访问。 例子:
for (var i = 1; i <= 3; i++) { setTimeout(function() { console.log(i); // 错误 }, 0); }
| 警告 | |
报告参数与引用函数的签名不匹配的 JavaScript 调用表达式,包括参数的类型及其编号。此外,报告重载函数在参数和返回类型方面是否与重载函数不匹配。 TypeScript 代码被忽略。 | 弱警告 | |
报告文档注释中的语法差异。 | 警告 | |
报告不正确的类型:
| 弱警告 | |
报告未过滤 Object ' 的原型可能被错误地修改时。例如,以下代码将打印 42 和 myMethod:
Object.prototype.myMethod = 函数 myMethod() {}; 让 a = { foo: 42 }; for (let i in a) { console.log(a[i]); }
建议用方法替换整个循环Object.keys() 或添加hasOwnProperty() 检查。应用快速修复后,代码如下所示:
for (let i in a) { if (a.hasOwnProperty(i)) { console.log(a[i]); } }
| ||
报告不需要的分号。 | 警告 | |
报告数组文字中尾随逗号的用法。 仅当 JavaScript 语言版本设置为 ECMAScript 5.1 时才会报告警告。尽管规范允许数组中的尾随逗号,但某些浏览器在使用尾随逗号时可能会抛出错误。您可以在 Code Style | 中配置尾随逗号的格式选项。JavaScript 或 TypeScript | 标点。 | 警告 | |
报告对象文字中尾随逗号的用法。 仅当 JavaScript 语言版本设置为 ECMAScript 5.1 时才会报告警告。规范允许对象文字中的尾随逗号,但是,当使用尾随逗号时,某些浏览器可能会抛出错误。您可以在 Code Style | 中配置尾随逗号的格式选项。JavaScript 或 TypeScript | 标点。 | 警告 | |
| 警告 | |
报告调用中未解析的函数。 TypeScript 代码被忽略。 | 弱警告 | |
报告未解析的引用变量或字段。 TypeScript 代码被忽略。 | 弱警告 | |
报告 JavaScript 文件中未解析的文件引用,包括 CommonJS 和 AMD 模块引用。 | 警告 | |
报告一个类成员初始化程序,该初始化程序引用另一个未提升的类成员,而后者可能尚未初始化。 类成员的初始化因此发生在字段中,因此字段不能引用稍后声明的另一个字段。 | 警告 | |
报告一个在没有初始化器的情况下声明的变量,并且在代码或单个嵌套范围中使用得更远。建议将变量移近它的用法并将其与初始化表达式连接起来。 | 没有高亮,只有修复 | |
根据webpack 选项模式验证 webpack 配置文件中的选项(名称应以 `webpack` 开头,例如 `webpack.config.js`)。 禁用此检查以关闭配置对象内的验证和代码完成。 | 警告 |
Switch 语句问题
检查 | 描述 | 默认严重性 |
---|---|---|
报告一个案例在另一个案例之前而不是最后一个案例的 | ||
报告 | 没有高亮,只有修复 | |
当未枚举某些可能的值时,报告 | 没有高亮,只有修复 | |
报告 | 没有高亮,只有修复 | |
报告语句上的重复 | 警告 | |
报告一个 | 警告 | |
报告 | ||
报告语句中的标记语句
switch(x) { case 1: case2: //错字!案例3:中断;}
| ||
报告无法访问的语句
/** * @param {('foo' | 'bar')} p */ function foo(p) { switch (p) { case 'foo': break; 案例“酒吧”:休息;案例'baz':休息;// 无法访问 } }
| 警告 | |
var 如果有意使用此模式,请禁用对变量的检查。 | 警告 |
位运算问题
检查 | 描述 | 默认严重性 |
---|---|---|
报告一个包含 | ||
| 警告 | |
报告一个按位掩码表达式,其计算结果肯定为
// 不兼容的掩码:由于掩码中的最后一个字节为零, // 类似 0x1200 的值是可能的,但不是 0x1234 if ((mask & 0xFF00) == 0x1234) {...}
| 警告 | |
报告第二个操作数是合理范围之外的常数的移位运算,例如,超出范围的整数移位运算 | 警告 |
未使用的符号
可能不受欢迎的代码结构
检查 | 描述 | 默认严重性 |
---|---|---|
报告一个 | ||
报告带标签的 | ||
报告一个 | ||
报告带标签的 | ||
报告 | ||
报告一个 | ||
报告一个 | 警告 | |
报告一个匿名函数。函数表达式的显式名称可能有助于调试。如果没有名称的函数表达式具有 | ||
报告逗号表达式。这样的表达式通常是代码过于聪明的标志,并可能导致细微的错误。初始化程序或循环更新部分中的逗号表达式将 | 警告 | |
报告三元条件表达式。一些编码标准禁止这样的表达以支持明确的 | ||
报告带标签的语句。 |