All Rules
This is a full table of all rules that will be implemented in the main Flint project. It includes rules from all three provided categories of plugins: Core, Focused, and Incubator. Each rule is equivalent to at least one existing rule in another linter.
Implemented: 251 of 849 (29.5%)
| Flint Rule | Plugin | Preset |
|---|---|---|
accessKeysDisallow the use of the accessKey / accesskey attribute on JSX elements. | JSX | logical |
accessorThisRecursionReports recursive access to this within getters and setters. | TypeScript | logical (strict) |
afterAllPaddingLines | Vitest | stylistic (strict) |
afterEachPaddingLines | Vitest | stylistic (strict) |
alertsReports uses of the global alert/confirm/prompt dialog APIs. | Browser | logical |
aliasMethods | Vitest | stylistic |
allPaddingLines | Vitest | stylistic (strict) |
altTextsReports elements that require alt text but are missing it. | JSX | logical |
anchorAmbiguousTextReports anchor elements with ambiguous text that doesn't describe the link destination. | JSX | logical (strict) |
anchorContentReports anchor elements without accessible content. | JSX | logical |
anchorNatives | Next.js | logical |
anchorValidityReports invalid usage of anchor elements. | JSX | logical |
anyArgumentsReports calling a function with a value typed as any as an argument. | TypeScript | logical |
anyAssignmentsReports assigning a value with type any to variables and properties. | TypeScript | logical |
anyCallsReports calling a value with type any. | TypeScript | logical |
anyMemberAccessReports member access on a value with type any. | TypeScript | logical |
anyReturnsReports returning a value with type any from a function. | TypeScript | logical |
argumentsReports using the arguments object instead of rest parameters. | TypeScript | logical |
ariaActiveDescendantTabIndexReports elements with aria-activedescendant without tabIndex. | JSX | logical |
ariaHiddenFocusablesReports elements with aria-hidden='true' that are focusable. | JSX | logical (strict) |
ariaPropsReports invalid ARIA properties. | JSX | logical |
ariaPropTypesReports ARIA properties with invalid value types. | JSX | logical |
ariaRoleValidityReports invalid or abstract ARIA roles. | JSX | logical |
ariaUnsupportedElementsReports ARIA attributes on elements that don't support them. | JSX | logical |
arrayCallbackReturnsReports missing return statements in callbacks of array methods. | TypeScript | untyped |
arrayConstructorsReports using the Array constructor to create arrays instead of array literal syntax. | TypeScript | logical |
arrayDeleteUnnecessaryCountsReports using .length or Infinity as the deleteCount or skipCount argument of Array#splice() or Array#toSpliced(). | TypeScript | stylistic |
arrayElementDeletionsReports using the delete operator on array values. | TypeScript | logical |
arrayEmptyCallbackSlotsReports array methods with callbacks that will never be invoked on arrays with empty slots. | TypeScript | logical |
arrayExistenceChecksConsistencyReports inconsistent styles for checking element existence using index methods. | TypeScript | stylistic |
arrayFilteredFindsReports using .filter() when only the first or last matching element is needed. | TypeScript | stylistic (strict) |
arrayFindsReports using .filter()[0] instead of .find() when looking for a single element. | TypeScript | stylistic |
arrayFlatMapMethodsReports using .map().flat() when .flatMap() can be used. | TypeScript | stylistic (strict) |
arrayFlatMethodsReports legacy techniques to flatten arrays instead of using .flat(). | TypeScript | stylistic (strict) |
arrayFlatUnnecessaryDepthsReports using 1 as the depth argument of .flat() since it is the default. | TypeScript | stylistic |
arrayHandlers | SolidJS | (none) |
arrayIncludesReports using .indexOf() comparisons that can be replaced with .includes(). | TypeScript | stylistic |
arrayIncludesMethodsReports using Array#some() with simple equality checks that can be replaced with .includes(). | TypeScript | stylistic (strict) |
arrayIndexKeyes | React | logical |
arrayIndexOfMethodsReports using .findIndex() or .findLastIndex() with simple equality checks that can be replaced with .indexOf() or .lastIndexOf(). | TypeScript | stylistic (strict) |
arrayLoopsReports using .forEach() when a for-of loop can be used. | TypeScript | stylistic |
arrayMapIdentitiesReports using .flatMap() with an identity function that returns its argument unchanged. | TypeScript | logical |
arrayMutableReversesReports .reverse() calls on arrays that mutate the original array. | TypeScript | stylistic |
arrayMutableSortsReports .sort() calls on arrays that mutate the original array. | TypeScript | stylistic |
arraySliceUnnecessaryEndReports unnecessary end argument in .slice() calls when it equals the length or is Infinity. | TypeScript | stylistic |
arraySomeMethodsReports patterns that can be replaced with .some() for checking array element existence. | TypeScript | stylistic (strict) |
arrayTernarySpreadingConsistencyReports inconsistent types when spreading a ternary in an array literal. | TypeScript | stylistic |
arrayTypesReports array type syntax that doesn't match the configured style. | TypeScript | stylistic |
arrayUnnecessaryLengthChecksReports unnecessary array length checks before .some() or .every() calls. | TypeScript | logical |
asConstAssertionsReports using explicit literal types when as const can be used. | TypeScript | stylistic |
assertStrictPrefer strict assertion mode from Node.js for better error messages and behavior. | Node.js | logical |
assertStylesPrefer assert.ok() over assert() for explicit intent and better readability. | Node.js | stylistic |
assignmentOperatorShorthandsPrefer logical assignment operator shorthand expressions. | TypeScript | stylistic |
asyncFunctionAwaits | TypeScript | logical |
asyncPromiseExecutorsReports using async functions as Promise executor functions. | TypeScript | logical |
asyncUnnecessaryPromiseWrappersReports unnecessary Promise.resolve() or Promise.reject() in async contexts. | TypeScript | logical |
atAccessesPrefer using .at() for accessing elements at negative indices. | TypeScript | stylistic (strict) |
attributeNameCasing | Vue | stylistic |
attributeOrders | Vue | stylistic (strict) |
attributesSorting | Astro | stylistic |
attributeValidity | JSX | logical |
authorPresence | PackageJSON | (none) |
authorValidity | PackageJSON | logical |
autocompleteEnsure the autocomplete attribute is correct and suitable for the form field. | JSX | logical |
autoFocusPropsReports autoFocus props that are not set to false. | JSX | logical |
awaitInsidePromiseMethods | TypeScript | logical (strict) |
awaitThenable | TypeScript | logical |
bareUrlsReports bare URLs that should be formatted as autolinks or links. | Markdown | stylistic (strict) |
beforeAllPaddingLines | Vitest | stylistic (strict) |
beforeEachPaddingLines | Vitest | stylistic (strict) |
bindDirectiveValidity | Vue | logical |
bindStyles | Vue | stylistic |
binValidity | PackageJSON | logical |
blobReadingMethodsPrefer direct Blob reading methods over wrapping in Response for simpler code. | Node.js | stylistic |
blockMappingsPrefer block-style mappings over flow-style mappings. | YAML | stylistic |
blockOrders | Vue | sorting |
blockquoteBlankLineMultiples | Markdown | stylistic (strict) |
blockSequencesPrefer block style sequences over flow style sequences. | YAML | stylistic |
booleanPropNames | JSX | stylistic (strict) |
booleanValuesPrefer shorthand boolean attributes over explicit {true} values in JSX. | JSX | stylistic |
bracedStatementsDisallow unnecessary JSX curly braces around literals and JSX elements. | JSX | stylistic |
bufferAllocatorsPrefer modern Buffer allocation methods over the deprecated Buffer constructor. | Node.js | logical |
bugsPresence | PackageJSON | (none) |
builtinCoercionsReports functions that wrap native coercion functions like String, Number, BigInt, Boolean, or Symbol. | TypeScript | stylistic (strict) |
builtinConstructorNewsEnforces using new for constructors that require it, and disallows new for primitive coercion functions. | TypeScript | stylistic |
bundleDependenciesPresence | PackageJSON | (none) |
bundleDependenciesValidity | PackageJSON | logical |
buttonTypesReports button elements without an explicit type attribute. | JSX | logical |
calledOnceWithAssertions | Vitest | stylistic (strict) |
calledTimesAssertions | Vitest | stylistic (strict) |
calledWithAssertions | Vitest | stylistic (strict) |
caseDeclarationsReports lexical declarations in case clauses without wrapping them in blocks. | TypeScript | untyped |
caseDuplicatesReports switch statements with duplicate case clause test expressions. | TypeScript | logical |
caseFallthroughsReports switch case clauses that fall through unexpectedly. | TypeScript | logical |
catchCallbackTypesReports Promise catch callback parameters that are not typed as unknown. | TypeScript | logical |
caughtErrorCauses | TypeScript | logical (strict) |
caughtVariableNamesEnforces a consistent naming convention for catch clause error variables. | TypeScript | stylistic (strict) |
chainedAssignmentsReports using chained assignment expressions (e.g., a = b = c). | TypeScript | stylistic |
charAtComparisonsReports comparing charAt() results with strings longer than one character. | TypeScript | logical |
childContentOverrides | Vue | logical |
childrenPropsReports usage of the children prop. | JSX | stylistic |
childrenWhitespace | JSX | logical (strict) |
classAssignmentsReports reassigning class declarations. | TypeScript | untyped |
classComponentStateDefinitions | React | stylistic (strict) |
classComponentStateInitialization | React | stylistic (strict) |
classes | Sorting | stylistic |
classFieldDeclarationsReports assigning literal values to this in constructors instead of using class field declarations. | TypeScript | untyped |
classListDirectiveObjects | Astro | stylistic |
classListDirectives | Astro | stylistic |
classListDirectiveSplits | Astro | stylistic |
classListTogglesPrefer using classList.toggle() over conditional classList.add() and classList.remove(). | Browser | stylistic |
classLiteralPropertiesReports getters that return literal values instead of using readonly class fields. | TypeScript | stylistic |
classMemberDuplicatesReports duplicate class member names that will be overwritten. | TypeScript | untyped |
classMethodsThisReports class methods that do not use this. | TypeScript | stylistic (strict) |
clickEventKeyEventsReports onClick without keyboard event handlers. | JSX | logical |
clientComponentAsyncDefinitions | Next.js | logical |
clientOnlyDirectiveValues | Astro | logical |
cloakDirectiveValidity | Vue | logical |
codeSpaces | Markdown | stylistic |
combinedPushesReports consecutive array.push() calls that could be combined into a single call. | TypeScript | stylistic (strict) |
commentedOutTests | Vitest | logical (strict) |
commentTextNodesReports JSX text nodes that contain comment syntax but are rendered as text. | JSX | logical |
comparisonMatcherAssertions | Vitest | stylistic |
compilerOptions | React | config |
componentConditionalReturns | SolidJS | logical |
componentDataSharing | Vue | logical |
componentDefinitions | React | stylistic |
componentDidMountSetStates | React | logical (strict) |
componentDidUpdateSetStates | React | logical (strict) |
componentDisplayNames | React | logical (strict) |
componentFileExports | Astro | logical |
componentHookFactories | React | logical |
componentHtmlTextProps | Vue | logical |
componentNameCasing | Vue | stylistic |
componentNames | Vue | stylistic |
componentNameValidity | Vue | logical |
componentNesting | React | logical |
componentPropertyOrder | Vue | sorting |
componentPropMutations | Vue | logical |
componentVIsBinds | Vue | logical |
componentWillUpdateSetStates | React | logical (strict) |
computedAsyncProperties | Vue | logical |
computedPropertyLikeMethods | Vue | logical |
computedPropertyReturns | Vue | logical |
computedPropertySideEffects | Vue | logical |
conditionalExpects | Vitest | stylistic (strict) |
configValidity | PackageJSON | logical |
consecutiveNonNullAssertionsReports unnecessary extra non-null assertions. | TypeScript | stylistic |
consoleCallsReports calls to console methods. | TypeScript | (none) |
consoleSpacesDisallow leading or trailing spaces in console method string arguments. | Node.js | stylistic (strict) |
constantAssignmentsReports attempting to reassign variables declared with const. | TypeScript | untyped |
constructorReturnsReports returning values from constructor functions. | TypeScript | untyped |
constructorSupersReports constructors of derived classes that do not call super(), and constructors of non-derived classes that call super(). | TypeScript | untyped |
constVariables | TypeScript | logical |
contextValueReferences | React | logical (strict) |
cpuValidity | PackageJSON | logical |
cspellRuns the CSpell spell checker on any source code file. | Spelling | logical |
cssManualStylesheets | Next.js | logical |
customFontsInPages | Next.js | logical |
dangerouslySetInnerHTMLWithChildren | React | logical |
dangerousProps | React | logical (strict) |
dataComputedProperties | Vue | logical |
dateConstructorClonesPrefer passing a Date directly to the Date constructor when cloning, rather than calling getTime(). | TypeScript | logical |
dateNowTimestampsPrefer the shorter Date.now() to get the number of milliseconds since the Unix Epoch. | TypeScript | logical (strict) |
debuggerStatementsReports using debugger statements. | TypeScript | logical |
decorators | Sorting | stylistic |
defaultCaseLastReports switch statements where the default clause is not last. | TypeScript | logical |
defaultParameterLastEnforce default parameters to be last. | TypeScript | untyped |
defaultPropsMatchingPropTypes | React | logical |
defaultPropTypes | Vue | logical |
defineEmitsValidity | Vue | logical |
defineOptionsValidity | Vue | logical |
definePropsValidity | Vue | logical |
definitionContentsReports definitions with empty URLs or only empty fragments. | Markdown | logical |
definitionDuplicatesReports duplicate definition identifiers (case-insensitive). | Markdown | logical |
definitionUsesReports unused reference definitions. | Markdown | logical |
deletesReports using the delete operator. | Performance | logical |
dependenciesPresence | PackageJSON | (none) |
dependenciesValidity | PackageJSON | logical |
dependencyRanges | PackageJSON | (none) |
dependencyUniqueness | PackageJSON | logical |
deprecatedDisallow using code marked as @deprecated. | TypeScript | logical |
deprecatedDataObjectDeclarations | Vue | logical |
deprecatedDestroyedLifecycleHooks | Vue | logical |
deprecatedFilters | Vue | logical |
deprecatedFunctionalTemplates | Vue | logical |
deprecatedThisDefaultProps | Vue | logical |
describeCallbackValidity | Vitest | logical |
describePaddingLines | Vitest | stylistic (strict) |
describeTitleReferences | Vitest | stylistic |
descriptionPresence | PackageJSON | logical |
descriptionValidity | PackageJSON | logical |
destructuring | React | stylistic |
destructuringConsistencyUse destructured variables over properties for consistency. | TypeScript | stylistic (strict) |
devDependenciesPresence | PackageJSON | (none) |
devDependenciesValidity | PackageJSON | logical |
directivePairs | TypeScript | logical (strict) |
directiveRequireDescriptions | TypeScript | stylistic (strict) |
directoriesValidity | PackageJSON | logical |
distractingElementsReports distracting elements like <marquee> and <blink>. | JSX | logical |
documentCookiesReports uses of document.cookie which can be error-prone and has security implications. | Browser | logical (strict) |
duplicateArgumentsReports functions with duplicate parameter names in their signatures. | TypeScript | untyped |
duplicateAttributes | Vue | logical |
duplicateVElseIfConditions | Vue | logical |
dynamicDeletesDisallow using the delete operator on computed key expressions. | TypeScript | logical |
eachLoops | Vitest | stylistic |
effectSetStates | React | logical |
elementChildrenValidityReports void DOM elements that have children, which is invalid HTML. | JSX | logical (strict) |
elseDirectiveValidity | Vue | logical |
elseIfDirectiveValidity | Vue | logical |
elseIfDuplicatesReports duplicate conditions in if-else-if chains that make code unreachable. | TypeScript | logical |
elseReturnsReports unnecessary else blocks following if statements that always return or throw. | TypeScript | stylistic (strict) |
emitsValidatorReturns | Vue | logical |
emptyBlocksReports empty block statements that should contain code. | TypeScript | stylistic |
emptyDestructuresReports using empty destructuring patterns that destructure no values. | TypeScript | logical |
emptyDocumentsReports empty YAML documents that contain only document markers. | YAML | logical |
emptyEnumsReports empty enum declarations with no members. | TypeScript | logical |
emptyExportsReports empty export statements that don't make a file a module. | TypeScript | logical |
emptyFields | PackageJSON | logical |
emptyFilesReports files that contain no meaningful code. | TypeScript | stylistic (strict) |
emptyFunctionsReports empty functions that should contain code or a comment. | TypeScript | stylistic (strict) |
emptyMappingKeysReports empty mapping keys. | YAML | logical |
emptyMappingValuesReports empty mapping values. | YAML | logical |
emptyModuleAttributesReports empty import/export attributes that serve no purpose. | TypeScript | stylistic |
emptyObjectTypesReports empty object type literals and empty interfaces that are often used incorrectly. | TypeScript | logical |
emptySequenceEntriesReports empty sequence entries. | YAML | logical |
emptyStaticBlocksReports empty static initialization blocks within class declarations. | TypeScript | stylistic |
emptyTypeParameterListsReports empty type parameter lists in type aliases and interfaces. | TypeScript | stylistic |
endTagPresence | Vue | logical |
enginesPresence | PackageJSON | (none) |
enumInitializersReports enum members without explicit initial values. | TypeScript | (none) |
enumMemberLiteralsRequires all enum members to be literal values. | TypeScript | logical (strict) |
enumMixedValues | TypeScript | logical |
enumValueConsistencyReports enums that contain both string and number members. | TypeScript | logical |
enumValueDuplicatesReports enum members with duplicate values. | TypeScript | logical |
equalityMatchers | Vitest | stylistic |
equalityOperatorNegationsReports negated expressions on the left side of equality checks. | TypeScript | (none) |
equalityOperators | TypeScript | logical |
errorBoundaries | React | logical |
errorMessagesRequires a message value when creating a built-in error. | TypeScript | logical (strict) |
errorSubclassPropertiesReports incorrect Error subclass definitions that don't follow best practices. | TypeScript | logical (strict) |
errorUnnecessaryCaptureStackTracesReports unnecessary Error.captureStackTrace() calls in Error subclass constructors. | TypeScript | logical |
escapeSequenceCasing | TypeScript | stylistic (strict) |
evalsReports uses of the eval function. | TypeScript | logical |
eventClassesPrefer EventTarget over EventEmitter for cross-platform compatibility. | Node.js | logical (strict) |
eventHandlerCasing | SolidJS | logical |
eventListenerSubscriptionsPrefer addEventListener over assigning to on* event handler properties. | Browser | logical (strict) |
eventTriggerExplicitEmits | Vue | logical |
evolvingVariableTypesReports variables declared without type annotation or initializer. | TypeScript | (none) |
exceptionAssignmentsReports reassigning exception parameters in catch clauses. | TypeScript | logical |
exhaustiveDeps | React | logical |
expectGroupPaddingLines | Vitest | stylistic (strict) |
expectResolves | Vitest | stylistic |
expectsOutsideTests | Vitest | logical (strict) |
expectTypeOfs | Vitest | stylistic |
expectValidity | Vitest | logical |
explicitAnys | TypeScript | logical |
exponentiationOperators | TypeScript | stylistic |
exportFromImports | TypeScript | stylistic |
exportMutablesReports exporting mutable bindings (let or var). | TypeScript | logical |
exports | Sorting | stylistic |
exportsAssignmentsPrevent assignment to the exports variable in CommonJS modules. | Node.js | logical |
exportsValidity | PackageJSON | logical |
exportUniqueNamesReports duplicate export names in a module. | TypeScript | untyped |
exposeAfterAwaits | Vue | logical |
extraneousClasses | TypeScript | logical (strict) |
fencedCodeLanguagesReports fenced code blocks without a language specified. | Markdown | stylistic (strict) |
fetchMethodBodiesDisallow providing a body with GET or HEAD fetch requests. | TypeScript | logical |
fileExtensions | YAML | stylistic (strict) |
filenames | Vitest | (none) |
filePathsFromImportMetaPrefer import.meta.dirname and import.meta.filename over legacy file path techniques. | Node.js | stylistic (strict) |
fileReadJSONBuffersPrefer reading JSON files as buffers when using JSON.parse for better performance. | Node.js | stylistic (strict) |
filesPresence | PackageJSON | (none) |
filesRedundancy | PackageJSON | logical |
filesValidity | PackageJSON | logical |
finallyStatementSafetyReports control flow statements in finally blocks that can override control flow in try/catch blocks. | TypeScript | logical |
floatingPromises | TypeScript | logical |
forBindKeys | Vue | logical |
forDirectionsReports for loops with counter variables that move in the wrong direction. | TypeScript | stylistic |
forDirectiveValidity | Vue | logical |
forInArraysReports iterating over an array with a for-in loop. | TypeScript | logical |
forInGuardsReports for-in loops without an if statement to filter inherited properties. | TypeScript | (none) |
forMaps | SolidJS | logical |
fragmentElements | JSX | stylistic |
functionApplySpreadsPrefer the spread operator over .apply() calls. | TypeScript | stylistic |
functionAssignmentsReports reassigning variables declared with function declarations. | TypeScript | untyped |
functionComponentDefinitions | React | stylistic |
functionComponentThisReferences | React | untyped |
functionCurryingRedundancyReports using .apply() or .call() or when the context (this value) provides no benefit. | TypeScript | logical |
functionDeclarationStylesReports functions that don't match the configured style (declaration vs expression). | TypeScript | (none) |
functionDefinitionScopeConsistency | TypeScript | stylistic (strict) |
functionNameMatchesReports function names that don't match the variable or property they're assigned to. | TypeScript | (none) |
functionNewCallsReports using the Function constructor to create functions from strings. | TypeScript | logical |
functionTypeDeclarations | TypeScript | stylistic |
gating | React | config |
generatorFunctionYieldsReports generator functions that do not yield values. | TypeScript | logical |
genericConstructorCalls | TypeScript | stylistic |
getterReturns | TypeScript | untyped |
getterSetterPairedTypes | TypeScript | logical |
globalAssignmentsReports attempting to assign to read-only global variables such as undefined, NaN, Infinity, Object, etc. | TypeScript | untyped |
globalMutations | React | logical |
globalObjectCallsReports calling global objects like Math, JSON, or Reflect as functions. | TypeScript | untyped |
globalThisAliases | TypeScript | stylistic (strict) |
googleAnalyticsInlineScript | Next.js | logical |
googleFontDisplay | Next.js | logical |
googleFontPreconnect | Next.js | logical |
groupedAccessorPairs | TypeScript | stylistic |
hashbangs | Node.js | logical |
headDuplicates | Next.js | logical |
headImportsInDocuments | Next.js | logical |
headingContentsReports heading elements without accessible content. | JSX | logical |
headingDuplicates | Markdown | stylistic (strict) |
headingEmphasisEquivalents | Markdown | stylistic (strict) |
headingIncrementsReports heading levels incrementing by more than one. | Markdown | logical |
headingRootDuplicatesReports multiple H1 headings in the same document. | Markdown | logical (strict) |
headingRootPresence | Markdown | logical (strict) |
headingTrailingPunctuation | Markdown | stylistic (strict) |
headNatives | Next.js | logical |
heritageClauses | Sorting | stylistic |
hoistedApiPositions | Vitest | logical (strict) |
homepageValidity | PackageJSON | logical |
hookDuplicates | Vitest | logical (strict) |
hookOrders | Vitest | stylistic (strict) |
hooksBeforeTestCases | Vitest | stylistic (strict) |
htmlDirectiveValidity | Vue | logical |
htmlLangsReports <html> elements without a lang prop. | JSX | logical |
ifDirectiveValidity | Vue | logical |
iframeSandboxes | JSX | logical (strict) |
iframeTitlesReports <iframe> elements without a title prop. | JSX | logical |
imageAltTextsReports images without alternative text. | Markdown | logical |
imageContentsReports images with empty URLs or only empty fragments. | Markdown | logical |
imgNatives | Next.js | logical |
immutability | React | logical |
implicitGlobalsPrevents implicit global variable declarations in browser scripts. | Browser | logical |
impliedEvalsReports using string arguments in setTimeout, setInterval, setImmediate, execScript, or the Function constructor. | TypeScript | logical |
importAssignments | TypeScript | untyped |
importCycles | TypeScript | stylistic |
importDuplicates | TypeScript | stylistic |
importedNamespaceDynamicAccessesDisallow computed member access on imported namespace identifiers. | Performance | logical |
importEmptyBlocksReports empty named import blocks. | TypeScript | logical |
importExtraneousDependencies | TypeScript | none |
importFileExtensions | Node.js | (none) |
importMetaProperties | Nuxt | stylistic |
importSelf | TypeScript | stylistic |
importsInMocks | Vitest | (none) |
importTypeSideEffectsReports imports that use inline type qualifiers on all specifiers when a top-level type qualifier should be used instead. | TypeScript | logical |
importUnnecessaryPathSegments | TypeScript | stylistic |
incompatibleLibraries | React | logical |
indexedObjectTypes | TypeScript | stylistic |
inlineScriptId | Next.js | logical |
innerHTMLProps | SolidJS | logical (strict) |
inputCheckedMutability | JSX | logical |
instanceOfArraysReports using instanceof Array instead of Array.isArray(). | TypeScript | logical |
interactiveElementRolesReports interactive elements with non-interactive ARIA roles. | JSX | logical |
interactiveElementsFocusableReports interactive elements that are not focusable via keyboard. | JSX | logical |
interfaces | Sorting | stylistic |
intersectionTypes | Sorting | stylistic |
invalidCodeLinesReports cases for invalid code that isn't formatted across lines. | Flint | logical |
invalidThis | TypeScript | untyped |
invalidVoidTypes | TypeScript | logical (strict) |
irregularWhitespace | YAML | stylistic |
irregularWhitespaces | TypeScript | logical |
isDirectiveValidity | Vue | logical |
isNaNComparisonsReports comparisons with NaN, which should use Number.isNaN() instead. | TypeScript | logical |
iterableKeys | React | logical (strict) |
jsdocAccessTags | TypeScript | stylistic |
jsdocAsterisks | TypeScript | stylistic (strict) |
jsdocEmptyBlocks | TypeScript | stylistic |
jsdocEmptyTags | TypeScript | stylistic |
jsdocImplementsTags | TypeScript | stylistic |
jsdocInformativeDocs | TypeScript | stylistic (strict) |
jsdocMisleadingBlocks | TypeScript | stylistic (strict) |
jsdocMultilineBlocks | TypeScript | stylistic (strict) |
jsdocParameterDescriptionHyphens | TypeScript | stylistic (strict) |
jsdocParameterNames | TypeScript | stylistic |
jsdocPropertyNames | TypeScript | stylistic |
jsdocRedundantTypes | TypeScript | stylistic |
jsdocTagNames | TypeScript | stylistic (strict) |
jsdocTags | Sorting | stylistic |
jsdocTemplateNames | TypeScript | stylistic |
jsdocTypesSyntax | TypeScript | stylistic |
jsdocUnnecessaryReturns | TypeScript | stylistic |
jsdocUnnecessaryYields | TypeScript | stylistic |
jsdocValidTypes | TypeScript | stylistic |
jsdocValues | TypeScript | stylistic |
jsdocYields | TypeScript | stylistic |
jsonKeys | Sorting | stylistic |
jsxProps | Sorting | stylistic |
keyboardEventKeysPrefer KeyboardEvent.key over deprecated properties like keyCode, charCode, and which. | Browser | logical |
keyDuplicatesReports unnecessary duplicate keys that override previous values. | JSON | logical |
keyDuplicates | Vue | logical |
keyNormalizationReports object keys that are not normalized using Unicode normalization forms. | JSON | logical |
keyValidity | Vue | logical |
keywordsPresence | PackageJSON | (none) |
keywordsValidity | PackageJSON | logical |
labelAssociatedControlsReports <label> elements without an associated control element. | JSX | logical |
labelReferencesReports missing label references. | Markdown | logical |
labelReferenceValidityReports invalid label references with whitespace. | Markdown | logical |
langValidityReports invalid lang attribute values. | JSX | logical (strict) |
licenseRequired | PackageJSON | logical |
licenseValidity | PackageJSON | logical |
lifecyclesAfterAwaits | Vue | logical |
linkContentsReports links with empty URLs or only empty fragments. | Markdown | logical |
linkDescriptions | Markdown | logical (strict) |
linkFragmentsReports link fragments that don't exist in the document. | Markdown | logical |
literalConstructorWrappers | TypeScript | stylistic |
loneTemplates | Vue | logical (strict) |
loopAwaitsReports using await expressions inside loops. | Performance | logical |
loopFunctionsReports function declarations and expressions inside loops that reference variables modified by the loop. | Performance | logical |
mainValidity | PackageJSON | logical |
manualMemoizationPreservations | React | logical |
manValidity | PackageJSON | logical |
maps | Sorting | stylistic |
mathMethodsPrefer modern Math methods over legacy patterns. | TypeScript | stylistic (strict) |
meaninglessVoidOperatorsReports using the void operator on expressions that are already void or undefined. | TypeScript | logical |
mediaCaptionsReports media elements without captions. | JSX | logical |
mediaSyntaxReversalsReports reversed link and image syntax in Markdown. | Markdown | stylistic |
memoDirectiveValidity | Vue | logical |
messagePhrases | Flint | logical (strict) |
methodSignatureStyles | TypeScript | stylistic |
misleadingVoidExpressionsRequire expressions of type void to appear in statement position. | TypeScript | logical |
missingPlaceholders | Flint | logical |
misusedPromises | TypeScript | logical |
mockedFunctionInstances | Vitest | stylistic (strict) |
mockTypeParameters | Vitest | stylistic (strict) |
modelDirectiveValidity | Vue | logical |
moduleAssignments | Next.js | untyped |
modules | Sorting | stylistic |
moduleSpecifierListsRequire non-empty specifier lists in import and export statements. | TypeScript | logical |
mouseEventKeyEventsReports mouse events without corresponding keyboard events. | JSX | logical |
multilineAmbiguitiesReports ambiguous multiline expressions that could be misinterpreted. | TypeScript | stylistic |
namedDefaultExports | TypeScript | stylistic (strict) |
namePresence | PackageJSON | logical |
namespaceDeclarationsReports using legacy namespace declarations. | TypeScript | logical |
namespaceImplicitAmbientImports | TypeScript | stylistic (strict) |
namespaceKeywords | TypeScript | stylistic |
namespaceValidity | SolidJS | untyped |
nameValidity | PackageJSON | logical |
nativeObjectExtensions | TypeScript | untyped |
negativeIndexLengthMethods | TypeScript | stylistic (strict) |
negativeZeroComparisonsReports comparisons with -0 that may not behave as expected. | TypeScript | logical |
nestedStandaloneIfs | TypeScript | stylistic |
newDefinitions | TypeScript | logical |
newExpressionsReports standalone new expressions that don't use the constructed object. | TypeScript | logical |
newNativeNonConstructorsDisallows using new with global non-constructor functions like Symbol and BigInt. | TypeScript | untyped |
nextDocumentOutsidePage | Next.js | logical |
nextScriptInHeads | Next.js | logical |
nextScriptInteractiveOutsideDocument | Next.js | logical |
nextTickValidity | Vue | logical |
nodeAppendMethodsPrefer modern DOM append/prepend methods over appendChild/insertBefore. | Browser | logical (strict) |
nodeDatasetAttributesPrefer using element.dataset over getAttribute/setAttribute for data-* attributes. | Browser | logical (strict) |
nodeModificationMethodsPrefer modern DOM APIs like .replaceWith() and .before() over legacy methods like .replaceChild() and .insertBefore(). | Browser | logical (strict) |
nodePropertyInChecks | Flint | logical |
nodeProtocolsPrefer the node: protocol prefix for Node.js built-in modules for clarity and consistency. | Node.js | logical |
nodeQueryMethodsPrefer modern querySelector and querySelectorAll over legacy DOM query methods. | Browser | stylistic (strict) |
nodeRemoveMethodsPrefer the modern node.remove() method over the legacy parentNode.removeChild(node) API. | Browser | logical (strict) |
nodeTestImports | Vitest | logical |
nodeTextContentsPrefer textContent over innerText for DOM nodes. | Browser | logical (strict) |
nonInteractiveElementInteractionsReports non-interactive elements with interactive event handlers. | JSX | logical |
nonInteractiveElementRolesReports non-interactive elements with interactive ARIA roles. | JSX | logical |
nonInteractiveElementTabIndexesReports non-interactive elements with positive or zero tabIndex values. | JSX | logical |
nonNullableTypeAssertions | TypeScript | stylistic |
nonNullAssertedNullishCoalesces | TypeScript | logical (strict) |
nonNullAssertedOptionalChains | TypeScript | logical |
nonNullAssertionPlacement | TypeScript | stylistic (strict) |
nonNullAssertions | TypeScript | logical (strict) |
nonOctalDecimalEscapesReports non-octal decimal escape sequences (\8 and \9) in string literals. | TypeScript | logical |
nullishCoalescingOperators | TypeScript | stylistic |
numberMethodRanges | TypeScript | logical |
numberStaticMethods | TypeScript | stylistic (strict) |
numericErasingOperations | TypeScript | logical |
numericLiteralCasing | TypeScript | stylistic (strict) |
numericLiteralParsingReports parseInt calls with binary, hexadecimal, or octal strings that can be replaced with numeric literals. | TypeScript | stylistic |
numericPrecision | TypeScript | logical |
numericSeparatorGroups | TypeScript | stylistic (strict) |
numericTrailingZerosReports trailing zeros in numeric values. | YAML | stylistic (strict) |
objectAssignSpreads | TypeScript | stylistic |
objectCallsPrefer {} object literal notation or Object.create instead of calling or constructing Object. | TypeScript | logical |
objectEntriesMethods | TypeScript | stylistic (strict) |
objectHasOwnsPrefer Object.hasOwn() over Object.prototype.hasOwnProperty.call() for checking own properties. | TypeScript | stylistic |
objectKeyDuplicatesReports unnecessary duplicate keys that override previous values. | TypeScript | untyped |
objectProtoReports using the deprecated proto property to access or modify an object's prototype. | TypeScript | untyped |
objectPrototypeBuiltInsReports direct calls to Object.prototype methods on object instances. | TypeScript | logical |
objects | Sorting | stylistic |
objectShorthand | TypeScript | stylistic |
objectSpreadUnnecessaryFallbacks | TypeScript | logical |
objectTypeDefinitions | TypeScript | stylistic |
objectTypes | Sorting | stylistic |
octalEscapesReports using octal escape sequences in string literals. | TypeScript | untyped |
octalNumbersReports using legacy octal numeric literals. | TypeScript | untyped |
olPrefixes | Markdown | stylistic (strict) |
onceDirectiveValidity | Vue | logical |
onDirectiveValidity | Vue | logical |
onEventHyphens | Vue | stylistic |
onEventStyles | Vue | stylistic |
onExactModifiers | Vue | logical |
operatorAssignmentShorthand | TypeScript | stylistic |
optionalChainOperators | TypeScript | stylistic |
optionalDependenciesPresence | PackageJSON | (none) |
optionalDependenciesValidity | PackageJSON | logical |
optionalPropDefaults | Vue | logical |
osValidity | PackageJSON | logical |
overloadSignaturesAdjacent | TypeScript | stylistic |
packageCollections | Sorting | stylistic |
parameterPropertyAssignment | TypeScript | logical |
parameterReassignments | TypeScript | stylistic (strict) |
parseIntRadixes | TypeScript | logical |
peerDependenciesPresence | PackageJSON | (none) |
peerDependenciesValidity | PackageJSON | logical |
plainScalarsPrefer plain style scalars over quoted scalars. | YAML | stylistic (strict) |
plusOperands | TypeScript | logical |
polyfillDuplicates | Next.js | logical |
preDirectiveValidity | Vue | logical |
privateValidity | PackageJSON | logical |
processExitsPrevent direct use of process.exit() for better error handling and testing. | Node.js | logical |
promiseExecutorReturns | TypeScript | logical |
promiseFinallyReturns | TypeScript | logical |
promiseFunctionAsync | TypeScript | stylistic |
promiseMethodSingleArrayArguments | TypeScript | logical |
promiseRejectErrors | TypeScript | logical |
promiseSettleAssertions | Vitest | stylistic |
propDestructures | SolidJS | logical |
propDuplicatesDisallow duplicate props in JSX elements. | JSX | logical |
propertyAccessNotation | TypeScript | stylistic |
propertyOrdering | PackageJSON | logical |
propertyValidity | React | untyped |
propNameCasing | Vue | stylistic |
propNameValidity | Vue | logical |
propRequiredAndDefaults | Vue | logical (strict) |
propTypeConstructors | Vue | logical |
propTypes | React | untyped |
propTypes | Vue | logical |
publishConfigValidity | PackageJSON | logical |
pureComponentShouldUpdateDefinitions | JSX | logical (strict) |
purity | React | logical |
reactivity | SolidJS | logical |
reactLikeDeps | SolidJS | untyped |
reactLikeProps | SolidJS | untyped |
recursionOnlyArguments | TypeScript | logical |
reduceTypeParameters | TypeScript | logical (strict) |
redundantTypeConstituents | TypeScript | logical |
referenceLikeUrlsReports resource links/images with URLs that match definition identifiers. | Markdown | logical |
refOperands | Vue | logical |
refs | React | logical |
refStrings | React | logical |
regexAllGlobalFlags | TypeScript | logical |
regexAmbiguousInvalidity | TypeScript | logical |
regexCharacterClasses | TypeScript | stylistic (strict) |
regexCharacterClassRanges | TypeScript | stylistic |
regexCharacterClassSetOperations | TypeScript | stylistic |
regexConciseCharacterClassNegations | TypeScript | stylistic |
regexContradictoryAssertions | TypeScript | logical |
regexControlCharacterEscapes | TypeScript | logical |
regexControlCharacters | TypeScript | logical |
regexDigitMatchers | TypeScript | stylistic (strict) |
regexDollarEscapes | TypeScript | stylistic |
regexDuplicateCharacterClassCharacters | TypeScript | logical |
regexDuplicateDisjunctions | TypeScript | logical |
regexEmptyAlternatives | TypeScript | logical |
regexEmptyCapturingGroups | TypeScript | logical |
regexEmptyCharacterClasses | TypeScript | logical |
regexEmptyGroups | TypeScript | logical |
regexEmptyLazyQuantifiers | TypeScript | logical |
regexEmptyLookaroundsAssertions | TypeScript | logical |
regexEmptyStringLiterals | TypeScript | logical |
regexEscapeBackspaces | TypeScript | logical |
regexExecutors | TypeScript | stylistic (strict) |
regexFlags | Sorting | stylistic |
regexGraphemeStringLiterals | TypeScript | logical (strict) |
regexHexadecimalEscapes | TypeScript | stylistic (strict) |
regexIgnoreCaseFlags | TypeScript | logical |
regexInvisibleCharacters | TypeScript | logical |
regexLegacyFeatures | TypeScript | logical |
regexLetterCasing | TypeScript | stylistic (strict) |
regexLists | Sorting | stylistic |
regexLiterals | TypeScript | logical |
regexLookaroundAssertions | TypeScript | stylistic (strict) |
regexLookaroundQuantifierOptimizations | TypeScript | logical |
regexMatchNotation | TypeScript | stylistic (strict) |
regexMisleadingCapturingGroups | TypeScript | logical |
regexMisleadingQuantifiers | TypeScript | logical |
regexMisleadingUnicodeCharacters | TypeScript | logical |
regexNamedBackreferences | TypeScript | stylistic (strict) |
regexNamedCaptureGroups | TypeScript | logical |
regexNamedReplacements | TypeScript | stylistic (strict) |
regexNonStandardFlags | TypeScript | logical |
regexObscureRanges | TypeScript | logical |
regexOctalEscapes | TypeScript | logical |
regexPlusQuantifiers | TypeScript | stylistic (strict) |
regexPredefinedAssertions | TypeScript | stylistic |
regexQuantifierOptimizations | TypeScript | logical |
regexQuestionQuantifiers | TypeScript | stylistic (strict) |
regexRepeatQuantifiers | TypeScript | stylistic |
regexResultArrayGroups | TypeScript | stylistic (strict) |
regexSetOperationOptimizations | TypeScript | logical |
regexStandaloneBackslashes | TypeScript | logical |
regexStarQuantifiers | TypeScript | stylistic (strict) |
regexSuperLinearBacktracking | TypeScript | logical |
regexSuperLinearMoves | TypeScript | logical |
regexTestMethods | TypeScript | stylistic |
regexUnicodeCodepointEscapes | TypeScript | stylistic (strict) |
regexUnicodeEscapes | TypeScript | stylistic |
regexUnicodeFlag | TypeScript | (none) |
regexUnicodeProperties | TypeScript | stylistic |
regexUnnecessaryAssertions | TypeScript | logical |
regexUnnecessaryBackreferences | TypeScript | logical |
regexUnnecessaryCharacterClasses | TypeScript | logical |
regexUnnecessaryCharacterRanges | TypeScript | logical |
regexUnnecessaryDisjunctions | TypeScript | logical |
regexUnnecessaryDollarReplacements | TypeScript | logical |
regexUnnecessaryEscapes | TypeScript | stylistic |
regexUnnecessaryLookaroundAssertions | TypeScript | logical |
regexUnnecessaryNestedAssertions | TypeScript | logical |
regexUnnecessaryNestedQuantifiers | TypeScript | logical |
regexUnnecessaryNonCapturingGroups | TypeScript | stylistic (strict) |
regexUnnecessaryNumericQuantifiers | TypeScript | logical |
regexUnnecessaryOptionalAssertions | TypeScript | logical |
regexUnnecessaryReferentialBackreferences | TypeScript | logical |
regexUnnecessarySetOperands | TypeScript | logical |
regexUnusedCapturingGroups | TypeScript | logical |
regexUnusedFlags | TypeScript | logical |
regexUnusedLazyQuantifiers | TypeScript | logical |
regexUnusedQuantifiers | TypeScript | logical |
regexValidity | TypeScript | logical |
regexWordMatchers | TypeScript | stylistic (strict) |
regexZeroQuantifiers | TypeScript | logical |
removeEventListenerExpressionsDisallow inline function expressions in removeEventListener calls. | Browser | logical |
renderedLiteralLeaks | JSX | logical (strict) |
renderReturns | Vue | logical |
renderSetStates | React | logical |
repositoryDirectoryValidity | PackageJSON | logical |
repositoryShorthand | PackageJSON | logical |
repositoryValidity | PackageJSON | logical |
requireImports | TypeScript | logical |
responseMethods | TypeScript | stylistic |
restrictedComponentProps | React | (none) |
restrictedDomProps | React | (none) |
restrictedElements | React | (none) |
restrictedGlobals | TypeScript | (none) |
restrictedIdentifiers | TypeScript | (none) |
restrictedImports | TypeScript | (none) |
restrictedMatchers | Vitest | (none) |
restrictedProperties | TypeScript | (none) |
restrictedPropTypes | React | (none) |
restrictedSyntax | TypeScript | (none) |
restrictedTypes | TypeScript | (none) |
restrictedViMethods | Vitest | (none) |
returnAssignmentsReports using assignment expressions in return statements. | TypeScript | stylistic |
returnAwaitPromises | TypeScript | logical |
returnThisTypes | TypeScript | logical (strict) |
roleRedundanciesReports redundant ARIA roles on elements with implicit roles. | JSX | logical |
roleRequiredAriaPropsReports ARIA roles missing their required ARIA properties. | JSX | logical |
roleSupportedAriaPropsReports ARIA properties that are not supported by an element's role. | JSX | logical |
roleTagsReports ARIA roles that have semantic HTML element equivalents. | JSX | logical (strict) |
ruleDescriptions | Flint | logical |
rulePresets | Flint | logical |
rulesOfHooks | React | logical |
ruleURLs | Flint | logical |
scopePropsReports scope props on non-th elements. | JSX | logical |
scriptSetupExports | Vue | logical |
scriptsValidity | PackageJSON | logical |
scriptSyncs | Next.js | logical |
scriptUrlsReports javascript: URLs that can act as a form of eval. | Browser | logical |
scriptUrls | JSX | logical |
selfAssignmentsReports self-assignments which have no effect and are likely errors. | TypeScript | logical |
selfClosingTags | JSX | stylistic |
selfComparisonsReports comparing a value to itself. | TypeScript | logical (strict) |
sequencesReports using the comma operator in expressions. | TypeScript | untyped |
setDirectiveChildContentConflicts | Astro | logical |
setHasExistenceChecks | TypeScript | stylistic (strict) |
setHtmlDirectives | Astro | security |
sets | Sorting | stylistic |
setSizeLengthChecks | TypeScript | stylistic (strict) |
setterReturns | TypeScript | untyped |
setTextDirectives | Astro | logical |
shadowedRestrictedNamesReports variable declarations that shadow JavaScript's restricted names. | TypeScript | untyped |
shadows | TypeScript | stylistic |
showDirectiveValidity | Vue | logical |
showWhens | SolidJS | stylistic |
singleVariableDeclarations | TypeScript | logical |
sizeComparisonOperators | TypeScript | stylistic (strict) |
slotArguments | Vue | logical (strict) |
slotDirectiveValidity | Vue | logical |
slotsAsFunctions | Vue | logical |
slotStyles | Vue | stylistic |
snapshotLocalTextContexts | Vitest | logical |
solidImports | SolidJS | logical |
sparseArraysReports array literals with holes (sparse arrays). | TypeScript | logical |
spreadAccumulatorsReports spread operations that accumulate values in loops, causing quadratic time complexity. | Performance | logical |
stateMutations | React | logical |
staticComponents | React | logical |
staticElementInteractionsReports static elements with event handlers that lack ARIA roles. | JSX | logical |
staticMemberOnlyClasses | TypeScript | stylistic (strict) |
strictBooleanExpressions | TypeScript | logical |
stringCaseMismatches | TypeScript | logical |
stringCodePoints | TypeScript | logical (strict) |
stringMappingKeysEnforces mapping keys to be strings. | YAML | logical (strict) |
stringSliceMethods | TypeScript | stylistic (strict) |
stringStartsEndsWith | TypeScript | stylistic |
stringTrimMethods | TypeScript | stylistic (strict) |
structuredCloneMethods | TypeScript | stylistic (strict) |
styledJsxInDocuments | Next.js | logical |
stylePropObjects | React | logical (strict) |
stylePropValidity | SolidJS | untyped |
svgTitlesReports <svg> elements without a <title> child element. | JSX | logical |
switchCases | Sorting | stylistic |
symbolDescriptionsReports Symbol() calls without description arguments. | TypeScript | stylistic |
tabIndexPositiveValuesReports positive tabIndex values. | JSX | logical |
tableColumnCountsReports table rows with column counts that don't match the header. | Markdown | logical |
templateExpressionValues | TypeScript | logical |
templateKeys | Vue | logical |
templateRootValidity | Vue | logical |
templateShadows | Vue | logical (strict) |
templateVForOnChildren | Vue | logical |
testBodyExpectations | Vitest | logical |
testCaseAssertions | Vitest | stylistic |
testCaseDuplicatesReports test cases that are identical to previous test cases. | Flint | logical |
testCaseOnlies | Flint | logical |
testCasePaddingLines | Vitest | stylistic (strict) |
testCasesWithinDescribes | Vitest | stylistic (strict) |
testConditionals | Vitest | logical (strict) |
testDefinitionFunctions | Vitest | (none) |
testPrefixes | Vitest | stylistic |
testShorthands | Flint | stylistic |
textareaMustacheChildren | Vue | logical |
textDirectiveValidity | Vue | logical |
thisAliases | TypeScript | logical |
thisBeforeSuper | TypeScript | untyped |
thisInTemplates | Vue | logical (strict) |
throwErrors | TypeScript | logical |
titleInDocumentHeads | Next.js | logical |
titleRepeats | Vitest | logical |
titleValidity | Vitest | logical |
toContainMatchers | Vitest | stylistic |
toHaveLengthMatchers | Vitest | stylistic |
topLevelAwaits | TypeScript | stylistic (strict) |
transitionToggles | Vue | logical |
tripleSlashReferences | TypeScript | logical |
tripleSlashReferenceValidity | TypeScript | logical |
tsComments | TypeScript | logical |
tslintComments | TypeScript | stylistic |
typeAssertions | TypeScript | stylistic |
typeConstituentDuplicates | TypeScript | logical |
typeConstituents | Sorting | stylistic |
typeExports | TypeScript | stylistic |
typeImports | TypeScript | stylistic |
typeofComparisonsReports typeof expressions that compare impossible string literals. | TypeScript | untyped |
typePresence | PackageJSON | logical |
typeRequired | PackageJSON | logical |
typesPresence | PackageJSON | (none) |
typeValidity | PackageJSON | logical |
typos | Next.js | logical |
typos | React | logical |
unassignedVariablesReports variables that are declared but never assigned a value. | TypeScript | untyped |
unboundMethods | TypeScript | logical |
undefinedInitialValues | TypeScript | stylistic |
undefinedTypeofChecks | TypeScript | stylistic (strict) |
undefinedVariablesReports using variables that are not defined. | TypeScript | untyped |
unescapedEntitiesDisallow unescaped HTML entities in JSX text that may cause rendering issues. | JSX | stylistic |
unicodeBOMsReports files with Unicode Byte Order Marks (BOMs). | TypeScript | stylistic |
unifiedSignatures | TypeScript | logical (strict) |
unionTypes | Sorting | stylistic |
unnecessaryBind | TypeScript | logical |
unnecessaryBlocksReports standalone block statements that don't create a meaningful scope. | TypeScript | stylistic |
unnecessaryBooleanCasts | TypeScript | stylistic |
unnecessaryCatchesReports catch clauses that only rethrow the caught error without modification. | TypeScript | logical |
unnecessaryComparisons | TypeScript | logical |
unnecessaryComputedKeys | TypeScript | stylistic |
unnecessaryConcatenationReports string concatenation using the + operator when both operands are string literals. | TypeScript | stylistic |
unnecessaryConditions | TypeScript | logical |
unnecessaryConstructors | TypeScript | stylistic |
unnecessaryContinues | TypeScript | logical |
unnecessaryEscapes | TypeScript | stylistic |
unnecessaryFragmentsDisallow unnecessary JSX fragments that wrap a single child or have no children. | JSX | stylistic |
unnecessaryLogicalComparisons | TypeScript | logical |
unnecessaryMathClamps | TypeScript | logical |
unnecessaryNumericFractions | TypeScript | logical |
unnecessaryQualifiers | TypeScript | stylistic |
unnecessaryRenames | TypeScript | stylistic |
unnecessaryReturns | TypeScript | stylistic |
unnecessarySpreads | TypeScript | logical |
unnecessaryTemplateAttributes | Vue | logical |
unnecessaryTemplateExpressions | TypeScript | logical |
unnecessaryTernaries | TypeScript | stylistic (strict) |
unnecessaryTypeAnnotations | TypeScript | stylistic |
unnecessaryTypeArguments | TypeScript | logical |
unnecessaryTypeAssertions | TypeScript | logical |
unnecessaryTypeConstraints | TypeScript | logical |
unnecessaryTypeConversions | TypeScript | logical |
unnecessaryTypeParameters | TypeScript | logical |
unnecessaryUndefinedDefaults | TypeScript | logical |
unnecessaryUseStricts | TypeScript | logical |
unpublishedBins | Node.js | logical |
unpublishedImports | Node.js | logical |
unreachableStatements | TypeScript | untyped |
unsafeDeclarationmerging | TypeScript | logical |
unsafeEnumComparisons | TypeScript | logical |
unsafeFunctionTypes | TypeScript | logical |
unsafeInlineScripts | Astro | security |
unsafeNegationsReports negating the left operand of in or instanceof relations. | TypeScript | untyped |
unsafeOptionalChains | TypeScript | untyped |
unsafeToString | TypeScript | logical |
unsafeTypeAssertions | TypeScript | logical |
unsafeUnaryNegations | TypeScript | logical |
unsupportedNodeAPIs | Node.js | logical |
unsupportedSyntax | React | logical |
unusedClassComponentMethods | React | logical |
unusedComponents | Vue | logical |
unusedCssSelectors | Astro | logical |
unusedExpressions | TypeScript | logical |
unusedLabels | TypeScript | stylistic |
unusedMessageIds | Flint | logical |
unusedPlaceholders | Flint | logical |
unusedPrivateClassMembers | TypeScript | logical |
unusedPropTypes | React | logical |
unusedState | React | logical |
unusedStyleDefineVars | Astro | logical |
unusedSwitchStatements | TypeScript | logical |
unusedValues | TypeScript | logical |
unusedVariables | TypeScript | logical |
unusedVariables | Vue | logical |
usageBeforeDefinition | TypeScript | untyped |
uselessDefaultAssignments | TypeScript | logical |
useMemoReturns | React | logical |
useStateDestructures | React | stylistic |
useStrictDirectives | TypeScript | untyped |
valueSafetyReports JSON values that are unsafe for data interchange. | JSON | logical |
varDeclarations | TypeScript | stylistic |
variableBlockScopeUsage | TypeScript | untyped |
variableDeclarations | Sorting | stylistic |
variableDeletionsReports attempting to delete variables with the delete operator. | TypeScript | untyped |
variableRedeclarations | TypeScript | untyped |
versionPresence | PackageJSON | logical |
versionValidity | PackageJSON | logical |
vHtmlDirectives | Vue | logical (strict) |
vIfsWithVFors | Vue | logical |
viNamespaceNames | Vitest | (none) |
vitestGlobalImports | Vitest | stylistic |
voidOperatorReports using the void operator. | TypeScript | stylistic |
vuePackageImports | Vue | logical |
watchAfterAwaits | Vue | logical |
watchArrowFunctions | Vue | logical |
windowMessagingTargetOriginRequires specifying the targetOrigin argument when calling window.postMessage(). | Browser | logical |
withStatementsReports using with statements | TypeScript | untyped |
workspacesValidity | PackageJSON | logical |
wrapperObjects | TypeScript | logical |
wrapperObjectTypes | TypeScript | logical |
yamlKeys | Sorting | stylistic |
yamlSequenceValues | Sorting | stylistic |
Made with ❤️🔥 in Boston by
Josh Goldberg and contributors.