Pyright 使用指南

date
May 3, 2024
slug
pyright_configuration
status
Published
tags
Python
summary
type
Post

Pylance 还是 Pyright?

Pyright 是 Microsoft 开发针对 Python 语言的开源静态类型检查工具。
基于 Pyright 静态类型检查工具,Microsoft 开发了一种全新的语言服务器(Language Server),即 Pylance,通过利用类型存根(即Stubs文件,以.pyi 格式存储)和类型推断来提供高性能的开发体验。Pylance 通过丰富的类型信息增强了Python IntelliSense体验,可帮助更快地编写更好的代码。Pylance 还提供了快速、准确的自动完成和类型检查。
需要注意的是,微软虽然发布了 Pylance,但是并没有开源Pylance的源代码。

Pyright 配置

Pyright 提供灵活的配置选项,这些选项在 JSON 格式的文本配置中指定。默认情况下,文件名为 pyrightconfig.json,位于项目的根目录中。支持多根工作区,每个工作区根目录可以有自己的 pyrightconfig.json 文件。有关 pyrightconfig.json 文件的示例,请参见下方。
Pyright 设置也可以在 pyproject.toml 文件的 [tool.pyright] 部分中指定。如果同时存在 pyrightconfig.jsonpyproject.toml,则 pyrightconfig.json 文件总是优先于 pyproject.toml。有关 pyproject.toml 文件的示例,请参见下方。
在配置文件中指定的相对路径是相对于配置文件位置的路径。不支持包含 shell 变量的路径(包括 ~)。配置文件中的路径通常应为相对路径,以便配置文件可以由项目中的其他贡献者共享。

执行环境选项

Pyright 允许为源代码的不同部分定义多个“执行环境”。例如,子文件夹可能被设计为使用不同的导入搜索路径或与源代码的其他部分不同的 Python 解释器版本运行。
每个执行环境可以指定以下设置:
  • root [字符串,必需]:将在此执行环境中执行的代码的根路径。
  • extraPaths [字符串数组,可选]:在搜索此执行环境中文件导入的模块时使用的其他搜索路径(除了根路径)。如果指定,这将覆盖默认 extraPaths 设置,用于解析此执行环境中文件的导入。请注意,每个文件的执行环境映射是独立的,因此如果文件 A 在一个执行环境中并导入了另一个执行环境中的第二个文件 B,则从 B 进行的任何导入将使用第二个执行环境中的 extraPaths。
  • pythonVersion [字符串,可选]:指定将用于执行源代码的 Python 版本。版本应以 "M.m" 格式的字符串指定,其中 M 是主版本,m 是次要版本(例如 "3.0""3.6")。如果提供了版本,Pyright 将在源代码使用不受该版本支持的语言特性时生成错误。它还将调整其使用类型存根文件的方式,这些文件根据版本条件化类型定义。如果没有指定版本,Pyright 将使用当前 Python 解释器的版本。
  • pythonPlatform [字符串,可选]:指定此执行环境的目标平台。如果没有指定,Pyright 将使用当前平台。该选项只能在 "Windows""Darwin""Linux", 或 "All" 中选择。如果指定了平台,Pyright 将调整其使用类型存根文件的方式,这些文件根据平台条件化类型定义。
  • venvPath [路径,可选]:包含一个或多个子目录的目录路径,每个子目录都包含一个虚拟环境。与venv 设置结合使用时,Pyright 将在虚拟环境的 site-packages 目录中搜索导入,而不是默认 Python 解释器指定的路径。如果您正在与其他开发人员一起工作的项目中,最好不要在配置文件中指定此设置,因为此路径通常对每个开发人员都不同。相反,它可以在命令行上或在每个用户设置中指定。与 venvPath 结合使用,指定要使用的虚拟环境。
  • venv [字符串,optional]:与 venvPath 结合使用,指定要使用的虚拟环境。

主要配置选项

  • include [路径数组,可选]:应包括在内的目录或文件的路径。如果没有指定路径,Pyright 默认包含配置文件所在的目录。路径可以包含通配符字符 **(一个目录或多个目录级别)、*(零个或多个字符的序列)或 ?(单个字符)。如果没有指定 include 路径,则默认加入工作区的根路径。
  • exclude [路径数组,可选]:不应包括在内的目录或文件的路径。这些覆盖了 include 目录和文件,允许忽略特定的子目录。请注意,如果排除路径中的文件被未排除的源文件引用(导入),这些文件仍可能包含在分析中。路径可以包含通配符字符 **(一个目录或多个目录级别)、*(零个或多个字符的序列)或 ?(单个字符)。如果没有指定排除路径,Pyright 自动排除以下路径:**/node_modules**/__pycache__**/.*。Pylance 也会排除任何虚拟环境目录。
  • ignore [路径数组,可选]:即使它们是已包含的文件或在已包含文件包内,也应该抑制其诊断输出(错误和警告)的目录或文件的路径。路径可以包含通配符字符 **(一个目录或多个目录级别)、*(零个或多个字符的序列)或 ?(单个字符)。
  • strict [路径数组,可选]:如果包含在内的目录或文件应该使用“严格”分析。这等同于手动添加一个“# pyright: strict”注释。在严格模式下,大多数类型检查规则都被启用。路径可以包含通配符字符 **(一个目录或多个目录级别)、*(零个或多个字符的序列)或 ?(单个字符)。
  • defineConstant [常量到值的映射(布尔值或字符串),可选]:应假定在程序中任何地方使用的标识符包含一个常量值的集合。例如,{"DEBUG": true} 表示 Pyright 应该假定标识符 DEBUG 总是等于 True。如果这个标识符在条件表达式中使用(例如 if not DEBUG:),Pyright 将使用指示的值来确定受保护的块是否可以到达。也支持引用这些常量的成员表达式(例如 my_module.DEBUG)。
  • typeshedPath [路径,可选]:包含 typeshed 类型存根文件的目录路径。Pyright 带有捆绑的 typeshed 类型存根副本。如果您想使用 typeshed 存根的不同版本,可以将 typeshed Github 仓库 克隆到本地目录,并使用此路径引用该位置。
  • stubPath [路径,可选]:包含自定义类型存根的目录路径。每个包的类型存根文件应在其自己的子目录中。此设置的默认值为 ./typings
  • verboseOutput [布尔值]:指定输出日志是否详细。这在诊断某些问题(如导入解析问题)时很有用。
  • executionEnvironments [对象数组,可选]:指定执行环境列表。执行环境是通过将源文件的路径与执行环境中指定的根路径进行比较来搜索的。
  • typeCheckingMode ["off", "basic", "standard", "strict"]:指定要使用的默认规则集。可以使用下面记录的其他配置标志覆盖一些规则。此设置的默认值为 "standard"。如果设置为 "off",则禁用所有类型检查规则,但仍然报告 Python 语法和语义错误。
  • useLibraryCodeForTypes [布尔值]:确定 Pyright 是否读取、解析和分析库代码以提取类型信息,以防没有类型存根文件。类型信息通常是不完整的。我们建议尽可能使用类型存根。此选项的默认值为 true

Pyright 配置文件

以下文件提供了可能的 Pyright 配置设置,以 pyproject.toml 格式提供,并保存在根文件夹下:

类型检查诊断设置

以下设置控制 pyright 的诊断输出(警告或错误)。除非另有规定,每个诊断设置可以指定一个布尔值(false 表示不生成错误,true 表示生成错误)。或使用字符串值 "none""warning""information""error" 来指定诊断级别。
具体检查类型如下:

默认为 true 类型的检查类型

  • analyzeUnannotatedFunctions [布尔值]:分析并报告没有输入参数或返回类型的类型注释的函数和方法的错误。此设置的默认值为 true
  • strictParameterNoneValue [布尔值]:PEP 484 指出,当函数参数被赋予 None 的默认值时,即使没有显式类型注释,其类型也应该隐式地是 Optional。启用此规则时,要求在这种情况下显式使用 Optional 进行参数类型注释。此设置的默认值为 true
  • enableTypeIgnoreComments [布尔值]:PEP 484 定义了对 # type: ignore 注释的支持。此开关启用或禁用对这些注释的支持。默认值为 true。这不会影响 # pyright: ignore 注释。

默认为 false 类型的检查类型

  • strictListInference [布尔值]:在推断列表类型时,使用严格的类型假设。例如,表达式 [1, 'a', 3.4] 可以推断为 list[Any]list[int | str | float] 类型。如果此设置为 true,则将使用后者(更严格的)类型。此设置的默认值为 false
  • strictDictionaryInference [布尔值]:在推断字典的键和值的类型时,使用严格的类型假设。例如,表达式 {'a': 1, 'b': 'a'} 可以推断为 dict[str, Any]dict[str, int | str] 类型。如果此设置为 true,则将使用后者(更严格的)类型。此设置的默认值为 false
  • strictSetInference [布尔值]:在推断集合类型时,使用严格的类型假设。例如,表达式 {1, 'a', 3.4} 可以推断为 set[Any]set[int | str | float] 类型。如果此设置为 true,则将使用后者(更严格的)类型。此设置的默认值为 false
  • deprecateTypingAliases [布尔值]:PEP 585 指出,作为仅支持泛型而引入的标准集合中类型的别名在 Python 3.9 中已被弃用。此开关控制是否将这些视为已弃用。这只适用于当 pythonVersion 是 3.9 或更新版本时。此设置的默认值为 false,但未来可能会切换为 true
  • enableExperimentalFeatures [布尔值]:启用一组实验性(大多未记录)的功能,这些功能对应于 Python 类型标准的提议或探索性更改。这些功能很可能会更改或被移除,因此除了实验目的外不应使用。此设置的默认值为 false
  • disableBytesTypePromotions [布尔值]:禁用 bytearraymemoryview 被视为 bytes 子类型的旧行为。PEP 688 弃用了此行为,但提供了此开关以恢复旧行为。默认值为 false

默认为 "none" 类型的检查类型

  • reportPropertyTypeMismatch [布尔值或字符串,可选]:生成或抑制诊断,用于属性中传给 setter 的值的类型不能分配给 getter 返回的值。此类不匹配违反了属性的预期用途,属性旨在表现得像变量。此设置的默认值为 "none"
  • reportMissingTypeStubs [布尔值或字符串,可选]:生成或抑制诊断,用于没有相应类型存根文件(either a typeshed file or a custom type stub)的导入。类型检查器需要类型存根以进行最好的分析工作。默认值为 "none"。注意,对于此诊断有一个相应的快速修复,允许您生成自定义类型存根以改善编辑体验。
  • reportImportCycles [布尔值或字符串,可选]:生成或抑制诊断,用于循环导入链。这些在 Python 中不是错误,但它们确实减慢了类型分析,并经常暗示架构分层问题。通常应该避免它们。默认值为 "none"。请注意,此设置忽略 typeshed stdlib 类型存根文件中的导入循环。
  • reportUnusedImport [布尔值或字符串,可选]:生成或抑制诊断,用于在该文件中未引用的导入符号或模块。默认值为 "none"
  • reportUnusedClass [布尔值或字符串,可选]:生成或抑制诊断,用于未访问的私有名称(以下划线开头)的类。默认值为 "none"
  • reportUnusedFunction [布尔值或字符串,可选]:生成或抑制诊断,用于未访问的函数或方法与私有名称(以下划线开头)。默认值为 "none"
  • reportUnusedVariable [布尔值或字符串,可选]:生成或抑制诊断,用于未访问的变量。默认值为 "none"。以下划线开头的变量名不受此检查的影响。
  • reportDuplicateImport [布尔值或字符串,可选]:生成或抑制诊断,用于导入多次的导入符号或模块。默认值为 "none"
  • reportUntypedFunctionDecorator [布尔值或字符串,可选]:生成或抑制诊断,用于没有类型注释的函数装饰器。这些装饰器会掩盖函数类型,破坏许多类型分析特性。默认值为 "none"
  • reportUntypedClassDecorator [布尔值或字符串,可选]:生成或抑制诊断,用于没有类型注释的类装饰器。这些装饰器会掩盖类类型,破坏许多类型分析特性。默认值为 "none"
  • reportUntypedBaseClass [布尔值或字符串,可选]:生成或抑制诊断,用于无法静态确定类型的基类。这些会掩盖类类型,破坏许多类型分析特性。默认值为 "none"
  • reportUntypedNamedTuple [布尔值或字符串,可选]:生成或抑制诊断,当使用 "namedtuple" 而不是 "NamedTuple"。前者不包含类型信息,而后者包含。默认值为 "none"
  • reportPrivateUsage [布尔值或字符串,可选]:生成或抑制诊断,用于不正确使用私有或受保护的变量或函数。受保护的类成员以单个下划线("_")开头,并且只能由子类访问。私有类成员以下划线开头但末尾不是下划线,并只能在声明它的类内部访问。在类外部声明的变量和函数,如果它们的名称以下划线开头,则被视为私有的,并且不能在声明模块之外访问。默认值为 "none"
  • reportTypeCommentUsage [布尔值或字符串,可选]:在 Python 3.5 之前,语法不支持类型注释,因此需要使用“类型注释”来指定类型。Python 3.5 取消了函数类型注释的需要,Python 3.6 取消了变量类型注释的需要。未来的 Python 版本可能会弃用对类型注释的所有支持。如果启用,此检查将标记任何类型注释的使用,除非它是与指定的语言版本兼容所必需的。默认值为 "none"
  • reportUnusedExpression [布尔值或字符串,可选]:生成或抑制诊断,用于结果未以任何方式使用的简单表达式。默认值为 "none"
  • reportUnnecessaryTypeIgnoreComment [布尔值或字符串,可选]:生成或抑制诊断,用于如果删除将没有任何效果的 # type: ignore# pyright: ignore 注释。默认值为 "none"
  • reportMatchNotExhaustive [布尔值或字符串,可选]:生成或抑制诊断,用于没有提供能够穷尽目标表达式所有可能类型的案例的 match 语句。默认值为 "none"
  • reportImplicitOverride [布尔值或字符串,可选]:生成或抑制诊断,用于缺少显式 @override 装饰器的类中被重写的方法。默认值为 "none"
  • reportShadowedImports [布尔值或字符串,可选]:生成或抑制诊断,用于覆盖 stdlib 中模块的文件。默认值为 "none"
  • reportConstantRedefinition [布尔值或字符串,可选]:生成或抑制诊断,用于尝试重新定义名称为全大写字母和下划线以及数字的变量。默认值为 "none"
  • reportDeprecated [布尔值或字符串,可选]:生成或抑制诊断,用于已标记为弃用的类或函数的使用。默认值为 "none"
  • reportInvalidStubStatement [布尔值或字符串,可选]:生成或抑制诊断,用于在类型存根文件中语句在语法上正确但没有任何目的。默认值为 "none"
  • reportIncompleteStub [布尔值或字符串,可选]:生成或抑制诊断,用于在类型存根文件中的模块级 __getattr__ 调用,表明它是不完整的。默认值为 "none"
  • reportInconsistentConstructor [布尔值或字符串,可选]:生成或抑制诊断,当 __init__ 方法签名与 __new__ 签名不一致时。默认值为 "none"
  • reportMissingSuperCall [布尔值或字符串,可选]:生成或抑制诊断,用于子类中的 __init____init_subclass____enter____exit__ 方法未能调用基类上同名方法。默认值为 "none"
  • reportUninitializedInstanceVariable [布尔值或字符串,可选]:生成或抑制诊断,用于类内部未在类主体或 __init__ 方法内初始化或声明的实例变量。默认值为 "none"
  • reportUnknownParameterType [布尔值或字符串,可选]:生成或抑制诊断,用于函数或方法的输入或返回参数具有未知类型。默认值为 "none"
  • reportUnknownArgumentType [布尔值或字符串,可选]:生成或抑制诊断,用于函数或方法的调用参数具有未知类型。默认值为 "none"
  • reportUnknownLambdaType [布尔值或字符串,可选]:生成或抑制诊断,用于 lambda 的输入或返回参数具有未知类型。默认值为 "none"
  • reportUnknownVariableType [布尔值或字符串,可选]:生成或抑制诊断,用于具有未知类型的变量。默认值为 "none"
  • reportUnknownMemberType [布尔值或字符串,可选]:生成或抑制诊断,用于具有未知类型的类或实例变量。默认值为 "none"
  • reportMissingParameterType [布尔值或字符串,可选]:生成或抑制诊断,用于函数或方法的输入参数缺少类型注释。在方法中使用的 selfcls 参数不受此检查影响。默认值为 "none"
  • reportMissingTypeArgument [布尔值或字符串,可选]:生成或抑制诊断,用于在没有提供显式或隐式类型参数的情况下使用泛型类。默认值为 "none"
  • reportCallInDefaultInitializer [布尔值或字符串,可选]:生成或抑制诊断,用于在默认值初始化表达式中的函数调用、列表表达式、集合表达式或字典表达式。这样的调用可能会掩盖在模块初始化时执行的昂贵操作。默认值为 "none"
  • reportUnnecessaryIsInstance [布尔值或字符串,可选]:生成或抑制诊断,用于 isinstanceissubclass 调用,其结果被静态确定为始终为真。这种调用通常表明编程错误。默认值为 "none"
  • reportUnnecessaryCast [布尔值或字符串,可选]:生成或抑制诊断,用于 cast 调用,其被静态确定为不必要。这种调用有时表明编程错误。默认值为 "none"
  • reportUnnecessaryComparison [布尔值或字符串,可选]:生成或抑制诊断,用于 ==!= 比较或其他条件表达式,它们被静态确定为始终评估为 False 或 True。这种比较有时表明编程错误。默认值为 "none"
  • reportUnnecessaryContains [布尔值或字符串,可选]:生成或抑制诊断,用于 in 操作,它们被静态确定为始终评估为 False 或 True。这种操作有时表明编程错误。默认值为 "none"
  • reportImplicitStringConcatenation [布尔值或字符串,可选]:生成或抑制诊断,用于两个或更多字符串字面量紧随彼此之后,表明隐式连接。这被认为是不良做法,并经常掩盖缺少逗号等错误。默认值为 "none"
  • reportUnusedCallResult [布尔值或字符串,可选]:生成或抑制诊断,用于调用语句的返回值未以任何方式使用且不是 None。默认值为 "none"

默认为 "warning" 类型的检查类型

  • reportMissingModuleSource [布尔值或字符串,可选]:生成或抑制诊断,用于没有相应源文件的导入。当找到类型存根,但未找到模块源文件时,会发生这种情况,表明当在此执行环境中使用代码时,可能会在运行时失败。将使用类型存根进行类型检查。默认值为 "warning"
  • reportWildcardImportFromLibrary [布尔值或字符串,可选]:生成或抑制诊断,用于从外部库进行通配符导入。强烈不鼓励使用此语言特性,当库更新时可能会导致错误。默认值为 "warning"
  • reportInvalidStringEscapeSequence [布尔值或字符串,可选]:生成或抑制诊断,用于在字符串字面量中使用的无效转义序列。Python 规范指出,这样的序列将在将来的版本中生成语法错误。默认值为 "warning"
  • reportInvalidTypeVarUse [布尔值或字符串,可选]:生成或抑制诊断,用于 TypeVar 在泛函数签名中使用不当(例如,如果 TypeVar 只出现一次)。默认值为 "warning"
  • reportUnsupportedDunderAll [布尔值或字符串,可选]:生成或抑制诊断,用于以静态类型检查器不允许的方式定义或操作 __all__ 的语句,从而使 __all__ 的内容未知或不正确。还会报告 __all__ 列表中不在模块命名空间中的名称。默认值为 "warning"
  • reportAssertAlwaysTrue [布尔值或字符串,可选]:生成或抑制诊断,用于将始终断言的 assert 语句。这可能是编程错误的迹象。默认值为 "warning"
  • reportSelfClsParameterName [布尔值或字符串,可选]:生成或抑制诊断,用于实例方法中缺少或错误命名的 "self" 参数和类方法中的 "cls" 参数。派生自 "type" 的类(元类)的实例方法允许使用 "cls"。默认值为 "warning"
 

默认为 "error" 类型的检查类型

  • reportGeneralTypeIssues [布尔值或字符串,可选]:生成或抑制有关范型不一致性、不支持的操作、参数/参数不匹配等问题的诊断。这涵盖了未被其他规则覆盖的所有基本类型检查规则。它不包括语法错误。此设置的默认值为 "error"
  • reportFunctionMemberAccess [布尔值或字符串,可选]:生成或抑制诊断,用于函数的非标准成员访问。默认值为 "error"
  • reportMissingImports [布尔值或字符串,可选]:生成或抑制诊断,用于没有相应导入的 Python 文件或类型存根文件的导入。默认值为 "error"
  • reportInvalidTypeForm [布尔值或字符串,可选]:生成或抑制诊断,用于使用无效类型表达式形式或语义上无效的类型注释。默认值为 "error"
  • reportAbstractUsage [布尔值或字符串,可选]:生成或抑制诊断,用于尝试实例化抽象类或协议类或使用抽象方法。默认值为 "error"
  • reportArgumentType [布尔值或字符串,可选]:生成或抑制诊断,用于在评估调用表达式时的参数类型不兼容。默认值为 "error"
  • reportAssertTypeFailure [布尔值或字符串,可选]:生成或抑制诊断,用于 typing.assert_type 调用检测到的类型不匹配。默认值为 "error"
  • reportAssignmentType [布尔值或字符串,可选]:生成或抑制诊断,用于推测变量类型不兼容。默认值为 "error"
  • reportAttributeAccessIssue [布尔值或字符串,可选]:生成或抑制诊断,与属性访问相关。默认值为 "error"
  • reportCallIssue [布尔值或字符串,可选]:生成或抑制诊断,与对调用目标传递的参数相关的调用表达式。默认值为 "error"
  • reportInconsistentOverload [布尔值或字符串,可选]:生成或抑制诊断,用于具有彼此不一致的重载签名或与实现不一致的重载函数。默认值为 "error"
  • reportIndexIssue [布尔值或字符串,可选]:生成或抑制诊断,与索引操作和表达式相关。默认值为 "error"
  • reportInvalidTypeArguments [布尔值或字符串,可选]:生成或抑制诊断,用于无效的类型参数使用。默认值为 "error"
  • reportNoOverloadImplementation [布尔值或字符串,可选]:生成或抑制诊断,用于如果没有提供实现,则为重载函数或方法生成。默认值为 "error"
  • reportOperatorIssue [布尔值或字符串,可选]:生成或抑制诊断,与使用一元或二元运算符(如 *not)相关。默认值为 "error"
  • reportOptionalSubscript [布尔值或字符串,可选]:生成或抑制诊断,用于尝试对具有 Optional 类型的变量进行子脚本(索引)。默认值为 "error"
  • reportOptionalMemberAccess [布尔值或字符串,可选]:生成或抑制诊断,用于尝试访问具有 Optional 类型的变量的成员。默认值为 "error"
  • reportOptionalCall [布尔值或字符串,可选]:生成或抑制诊断,用于尝试调用具有 Optional 类型的变量。默认值为 "error"
  • reportOptionalIterable [布尔值或字符串,可选]:生成或抑制诊断,用于尝试将 Optional 类型用作可迭代值(例如,在 for 语句中)。默认值为 "error"
  • reportOptionalContextManager [布尔值或字符串,可选]:生成或抑制诊断,用于尝试将 Optional 类型用作上下文管理器(作为 with 语句的参数)。默认值为 "error"
  • reportOptionalOperand [布尔值或字符串,可选]:生成或抑制诊断,用于尝试将 Optional 类型用作一元运算符(如 ~not)的运算符或二元运算符(如 *==or)的左手操作数。默认值为 "error"
  • reportRedeclaration [布尔值或字符串,可选]:生成或抑制诊断,用于具有多于一个类型声明的符号。默认值为 "error"
  • reportReturnType [布尔值或字符串,可选]:生成或抑制诊断,与函数返回类型兼容性相关。默认值为 "error"
  • reportTypedDictNotRequiredAccess [布尔值或字符串,可选]:生成或抑制诊断,用于尝试在未首先检查其是否存在的情况下访问 TypedDict 中的非必需字段。默认值为 "error"
  • reportPrivateImportUsage [布尔值或字符串,可选]:生成或抑制诊断,用于从 py. Typed 模块中使用不应该从该模块导出的符号。默认值为 "error"
  • reportUnusedCoroutine [布尔值或字符串,可选]:生成或抑制诊断,用于调用语句的返回值未以任何方式使用且是协程。这识别了常见的错误,即遗漏了 await 关键字。默认值为 "error"
  • reportUnusedExcept [布尔值或字符串,可选]:生成或抑制诊断,用于永远不会到达的 except 子句。默认值为 "error"
  • reportUndefinedVariable [布尔值或字符串,可选]:生成或抑制诊断,用于未定义的变量。默认值为 "error"
  • reportUnboundVariable [布尔值或字符串,可选]:生成或抑制诊断,用于未绑定的变量。默认值为 "error"
  • reportUnhashable [布尔值或字符串,可选]:生成或抑制诊断,用于在需要哈希能力的容器中使用不可哈希的对象。默认值为 "error"
  • reportIncompatibleMethodOverride [布尔值或字符串,可选]:生成或抑制诊断,用于以不兼容的方式(错误数量的参数、不兼容的参数类型或不兼容的返回类型)重写基类中同名方法的方法。默认值为 "error"
  • reportIncompatibleVariableOverride [布尔值或字符串,可选]:生成或抑制诊断,用于类变量声明,这些变量重写基类中同名符号,并且类型与基类符号类型不兼容。默认值为 "error"
  • reportOverlappingOverload [布尔值或字符串,可选]:生成或抑制诊断,用于签名重叠并相互模糊或具有不兼容返回类型的函数重载。默认值为 "error"
  • reportPossiblyUnboundVariable [布尔值或字符串,可选]:生成或抑制诊断,用于在某些代码路径上可能未绑定的变量。默认值为 "error"
 

© Mrzz 2022 - 2025