诊断规则

每个 Basilisk 诊断都有一个 BSK-EXXXX(错误)或 BSK-WXXXX(警告)格式的唯一代码。

规则默认全部启用。您可以通过编辑器或 pyproject.toml,按文件或路径将单个规则调低——严格是默认值,而不是牢笼。

Basilisk 内置 151 个诊断代码(146 个错误,5 个警告),覆盖完整的 Python 类型表面(泛型、协议、dataclass、TypedDict、重载、字面量、枚举等),通过官方 Python 类型符合性套件验证(当前符合率 92.5%,135 / 146)。下面记录了两个基础组;完整集合由检查器强制执行。

代码 描述
缺失注解 E0001–E0009 未标注的参数、返回类型、变量和属性
类型安全 E0010–E0029 类型不匹配、错误的注解、不健全的类型使用

路线图: Mojo 启发的所有权与不可变性分析计划在未来版本中推出。它尚未包含在当前发布的规则集中。

完整诊断参考

以下表格列出了检查器当前会产生的所有代码,由 scripts/gen_rules_reference.py 从检查器源代码生成,是权威参考列表。

Code Description
BSK-E0001 Missing parameter type annotation
BSK-E0002 Missing return type annotation
BSK-E0003 Missing variable type annotation
BSK-E0004 Missing *args / **kwargs type annotation
BSK-E0005 Missing class attribute type annotation
BSK-E0010 Unresolved import
BSK-E0011 Explicit Any annotation / return type mismatch
BSK-E0012 Argument type mismatch at a call site
BSK-E0013 Return type mismatch — inferred return type incompatible with annotation
BSK-E0014 Assignment type incompatibility (literal mismatches)
BSK-E0015 Invalid type argument count or form
BSK-E0016 Incompatible method override
BSK-E0017 Incompatible class attribute override
BSK-E0018 Undefined variable used in a return statement
BSK-E0019 Unbound variable on some code paths
BSK-E0020 Missing @overload implementation
BSK-E0021 Overlapping @overload signatures
BSK-E0022 Unhashable type used as a dict key
BSK-E0023 Non-exhaustive match statement
BSK-E0024 Invalid type form — numeric literal used as type annotation
BSK-E0025 Missing @override decorator
BSK-E0026 TypeVar declared with exactly one constraint
BSK-E0027 Duplicate TypeVar in a Generic[...] base
BSK-E0029 Method defined inside a TypedDict class
BSK-E0030 Non-default TypeVar follows a default TypeVar in Generic[...]
BSK-E0031 Invalid cast() call
BSK-E0032 Invalid keyword argument in TypedDict class definition
BSK-E0033 Invalid reveal_type() call
BSK-E0034 @final decorator violations
BSK-E0035 Required / NotRequired used in an invalid context
BSK-E0036 ClassVar used in an invalid context
BSK-E0037 Invalid TypedDict(...) functional-syntax call
BSK-E0038 Invalid TypedDict inheritance
BSK-E0039 Invalid assert_type() call
BSK-E0040 Invalid Enum subclassing
BSK-E0041 Too few arguments in a function call
BSK-E0042 PEP 695 type parameter syntax mixed with traditional TypeVars
BSK-E0043 Non-TypeVar argument in Generic[...] or Protocol[...]
BSK-E0044 Final used in an invalid position
BSK-E0045 Invalid first argument to Annotated[...]
BSK-E0046 Enum member annotated with an explicit type
BSK-E0047 Invalid type expression in annotation
BSK-E0048 Invalid right-hand side for a TypeAlias annotation
BSK-E0049 Multiple unbounded tuple components in a single tuple type
BSK-E0050 Invalid NewType(...) call
BSK-E0051 Invalid Literal parameterization
BSK-E0052 Assignment to attribute of a frozen dataclass instance, or invalid frozen/non-frozen dataclass inheritance
BSK-E0053 assert_type() type mismatch
BSK-E0054 Final type qualifier annotation violations
BSK-E0055 Invalid TypeVar / TypeVarTuple / ParamSpec keyword argument combination
BSK-E0056 Mutation of ReadOnly TypedDict fields
BSK-E0057 Invalid RHS in a PEP 695 type X = rhs statement
BSK-E0058 Annotated[...] requires at least two arguments
BSK-E0059 Access to __match_args__ on a dataclass with match_args=False
BSK-E0060 Invalid ordering comparison of dataclass instances
BSK-E0061 assert_type with Literal[Enum.MEMBER] on enum-typed param
BSK-E0062 -> NoReturn / -> Never function can fall through
BSK-E0063 Non-hashable dataclass assigned to a Hashable-annotated variable
BSK-E0064 Invalid argument in a NamedTuple constructor call
BSK-E0065 Access to an int-only attribute on a float-typed parameter
BSK-E0066 Enum member value incompatible with _value_ type annotation
BSK-E0067 Non-member referenced in Literal[EnumClass.X] annotation
BSK-E0068 Literal["EnumClass.MEMBER"] (string) used where Literal[EnumClass.MEMBER] (enum member reference) is required
BSK-E0069 Dataclass constructor argument violations
BSK-E0070 Never type compatibility violations
BSK-E0071 Historical positional-only parameter violations
BSK-E0072 No matching overload for subscript indexing
BSK-E0073 NamedTuple-to-tuple type incompatibility
BSK-E0074 Constructor call type mismatch with specialized generic class
BSK-E0075 Incompatible type for Self-typed attribute
BSK-E0076 Overload union expansion failure
BSK-E0077 Protocol Self-return conformance violation
BSK-E0078 Self type violations in generics
BSK-E0079 Module assigned to incompatible protocol type
BSK-E0080 TypeVar upper bound violation at call site
BSK-E0081 TypeVarTuple unpack minimum type argument violation
BSK-E0082 TypeVarTuple callable/tuple argument mismatch
BSK-E0083 TypeVarTuple must be unpacked with * operator
BSK-E0084 TypeVarTuple variance/bounds/constraints violation
BSK-E0085 TypeVarTuple argument count mismatch
BSK-E0086 Multiple TypeVarTuple unpacks in generic or tuple type
BSK-E0087 Reserved for future PEP 695 type parameter checks
BSK-E0088 TypedDict runtime violation
BSK-E0089 Invalid PEP 695 type parameter bound or constraint
BSK-E0090 Invalid tuple type syntax
BSK-E0091 Incompatible TypeVar bound or constraint with its default
BSK-E0092 Wrong number of type arguments to a generic class or type alias
BSK-E0093 Invalid key or value type in TypedDict assignment
BSK-E0094 Self type used in an invalid location
BSK-E0095 InitVar field validation in dataclasses
BSK-E0096 Type mismatch between a dataclass field(default_factory=…) and the field's declared type annotation
BSK-E0097 Protocol __new__/__init__ sets self-attributes not declared in Protocol
BSK-E0098 Non-Protocol base class in a Protocol definition
BSK-E0099 Direct instantiation of a Protocol class
BSK-E0100 Augmented assignment widens Literal type
BSK-E0101 TypeGuard or TypeIs on method with no narrowing parameter
BSK-E0102 Invalid TypeVar default referencing another TypeVar
BSK-E0103 Tuple index out of bounds
BSK-E0104 Cyclical type alias reference
BSK-E0105 Invalid attribute access on bounded type variable
BSK-E0106 Protocol class used where type[Proto] is expected
BSK-E0107 Variance incompatibility in base class parameterisation
BSK-E0108 Dataclass slots violations
BSK-E0109 TypeVar bound violation at call site
BSK-E0110 Protocol variance violation
BSK-E0111 Constructor call errors via __init__ method
BSK-E0112 TypeGuard/TypeIs return type incompatibility in callable arguments
BSK-E0113 TypeIs narrows to a type inconsistent with the input type
BSK-E0114 Protocol isinstance/issubclass violations
BSK-E0115 Use of deprecated class, function, or method
BSK-E0116 NamedTuple class definition errors
BSK-E0117 Unbound type variable in scope
BSK-E0118 Calling super().method() on an abstract method with no default implementation
BSK-E0119 Protocol isinstance/issubclass violations
BSK-E0120 Generator return type and yield type violations
BSK-E0121 Protocol conformance violation in annotated assignment
BSK-E0122 Callable call-site arity and argument validation
BSK-E0123 super() call on abstract protocol method with no default implementation
BSK-E0124 Protocol attribute tuple element type mismatch
BSK-E0125 Access to instance attribute on a class object
BSK-E0126 LiteralString and Literal assignment incompatibilities
BSK-E0127 Tuple index out of range
BSK-E0128 TypeVar default referential violations
BSK-E0129 Literal value assignment incompatibility
BSK-E0130 TypeVar scoping violation
BSK-E0131 Generator yield/send/return type mismatch
BSK-E0132 Inconsistent TypeVar ordering across base classes
BSK-E0133 Protocol TypeVar variance mismatch
BSK-E0134 Invariant generic type mismatch at call site
BSK-E0136 Callable subtyping violations (covariance / contravariance)
BSK-E0137 Generic protocol violations
BSK-E0138 dataclass_transform metaclass violations
BSK-E0139 Invalid TypeVarTuple specialization of generic alias
BSK-E0140 Callable and Protocol assignment compatibility
BSK-E0141 Unpack[TypedDict] kwargs violations
BSK-E0142 dataclass_transform violations when the transform is applied via a base class
BSK-E0143 NamedTuple usage violations
BSK-E0144 Invalid constructor call via type[T] parameter
BSK-E0145 Invalid type[X] usage violations
BSK-E0146 Protocol class object violations
BSK-E0147 Tuple starred-unpack type compatibility violation
BSK-E0148 Generic type argument violations
BSK-E0149 PEP 695 generic type parameter scoping violations
BSK-E0150 Variable defined only in dead version/platform branch
BSK-E0151 Invalid TypeAliasType(...) call
BSK-E0152 Missing type stubs for installed package
BSK-W0011 Undeclared dependency import
BSK-W0012 Unused dependency
BSK-W0013 Stale uv lock file
BSK-W0040 Lambda function missing type annotations
BSK-W0050 Redundant type annotation warning