Skip to content

linter: memory leak with import plugin #10627

@cypherpower

Description

@cypherpower

What version of Oxlint are you using?

0.16.7

What command did you run?

Using vs code extension and I am using a settings.json file to lint on save { "css.customData": [ ".vscode/tailwind.json" ], "editor.formatOnSave": true, // Auto fix "editor.codeActionsOnSave": { "source.fixAll.oxc": "always", "source.removeUnusedImports": "always" }, "javascript.updateImportsOnFileMove.enabled": "prompt", "editor.tabSize": 2, "editor.wordWrap": "on", "typescript.tsdk": "node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true }

What does your .oxlintrc.json config file look like?

{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "plugins": [
    "node",
    "import",
    "typescript",
    "unicorn",
    "oxc"
  ],
  // "categories": {
  //   "correctness": "off"
  // },
  "env": {
    "builtin": true,
    "browser": true,
    "commonjs": true,
    "es2024": true,
    "node": true,
    "shared-node-browser": true
  },
  "ignorePatterns": [
    "**/\\node_modules",
    "**/\\build",
    "**/.eslintcache",
    "**/.DS_Store",
    "**/.vscode-test",
    "**/.venv",
    "**/.env",
    "venv/",
    "**/.env.northAmerica",
    "**/.env.europe",
    "**/\\albert_faiss_index",
    "**/embeddings_cache.jsonl",
    "**/albert.py",
    "**/node_modules",
    "**/dist",
    "**/package-lock.json",
    "**/yarn.lock",
    "**/pnpm-lock.yaml",
    "**/bun.lockb",
    "**/output",
    "**/coverage",
    "**/temp",
    "**/.temp",
    "**/tmp",
    "**/.tmp",
    "**/.history",
    "**/.vitepress/cache",
    "**/.nuxt",
    "**/.next",
    "**/.svelte-kit",
    "**/.vercel",
    "**/.changeset",
    "**/.idea",
    "**/.cache",
    "**/.output",
    "**/.vite-inspect",
    "**/.yarn",
    "**/vite.config.*.timestamp-*",
    "**/CHANGELOG*.md",
    "**/*.min.*",
    "**/LICENSE*",
    "**/__snapshots__",
    "**/auto-import?(s).d.ts",
    "**/components.d.ts"
  ],
  "rules": {
    "array-callback-return": "error",
    "default-case-last": "error",
    "eqeqeq": [
      "error",
      "smart"
    ],
    "new-cap": [
      "error",
      {
        "capIsNew": false,
        "newIsCap": true,
        "properties": true
      }
    ],
    "no-alert": "error",
    "no-array-constructor": "error",
    "no-async-promise-executor": "error",
    "no-caller": "error",
    "no-case-declarations": "error",
    "no-class-assign": "error",
    "no-compare-neg-zero": "error",
    "no-cond-assign": [
      "error",
      "always"
    ],
    "no-console": "off",
    "no-const-assign": "error",
    "no-control-regex": "error",
    "no-debugger": "error",
    "no-delete-var": "error",
    "no-dupe-class-members": "error",
    "no-dupe-keys": "error",
    "no-duplicate-case": "error",
    "no-empty": [
      "error",
      {
        "allowEmptyCatch": true
      }
    ],
    "no-empty-character-class": "off",
    "no-empty-pattern": "error",
    "no-eval": "error",
    "no-ex-assign": "error",
    "no-extend-native": "error",
    "no-extra-boolean-cast": "error",
    "no-fallthrough": "error",
    "no-func-assign": "error",
    "no-global-assign": "error",
    "no-import-assign": "error",
    "no-invalid-regexp": "off",
    "no-irregular-whitespace": "error",
    "no-iterator": "error",
    "no-labels": [
      "error",
      {
        "allowLoop": false,
        "allowSwitch": false
      }
    ],
    "no-lone-blocks": "error",
    "no-loss-of-precision": "error",
    "no-multi-str": "error",
    "no-new": "error",
    "no-new-func": "error",
    "no-new-native-nonconstructor": "error",
    "no-new-wrappers": "error",
    "no-obj-calls": "error",
    "no-proto": "error",
    "no-prototype-builtins": "error",
    "no-redeclare": [
      "error",
      {
        "builtinGlobals": false
      }
    ],
    "no-regex-spaces": "error",
    "no-restricted-globals": [
      "error",
      {
        "message": "Use `globalThis` instead.",
        "name": "global"
      },
      {
        "message": "Use `globalThis` instead.",
        "name": "self"
      }
    ],
    "no-self-assign": [
      "error",
      {
        "props": true
      }
    ],
    "no-self-compare": "error",
    "no-shadow-restricted-names": "error",
    "no-sparse-arrays": "error",
    "no-template-curly-in-string": "error",
    "no-this-before-super": "error",
    "no-throw-literal": "error",
    "no-unexpected-multiline": "error",
    "no-unneeded-ternary": [
      "error",
      {
        "defaultAssignment": false
      }
    ],
    "no-unsafe-finally": "error",
    "no-unsafe-negation": "error",
    "no-unused-expressions": [
      "error",
      {
        "allowShortCircuit": true,
        "allowTaggedTemplates": true,
        "allowTernary": true
      }
    ],
    "no-unused-vars": [
      "error",
      {
        "args": "none",
        "caughtErrors": "none",
        "ignoreRestSiblings": true,
        "vars": "all"
      }
    ],
    "no-useless-call": "error",
    "no-useless-catch": "error",
    "no-useless-constructor": "error",
    "no-useless-rename": "error",
    "no-var": "error",
    "no-with": "error",
    "prefer-exponentiation-operator": "error",
    "prefer-promise-reject-errors": "error",
    "prefer-rest-params": "error",
    "prefer-spread": "error",
    "symbol-description": "error",
    "unicode-bom": [
      "error",
      "never"
    ],
    "use-isnan": [
      "error",
      {
        "enforceForIndexOf": true,
        "enforceForSwitchCase": true
      }
    ],
    "valid-typeof": [
      "error",
      {
        "requireStringLiterals": true
      }
    ],
    "vars-on-top": "error",
    "yoda": [
      "error",
      "never"
    ],
    "node/no-exports-assign": "error",
    "node/no-new-require": "error",
    "jsdoc/check-access": "warn",
    "jsdoc/check-property-names": "warn",
    "jsdoc/empty-tags": "warn",
    "jsdoc/implements-on-classes": "warn",
    "jsdoc/no-defaults": "warn",
    "jsdoc/require-param-name": "warn",
    "jsdoc/require-property": "warn",
    "jsdoc/require-property-description": "warn",
    "jsdoc/require-property-name": "warn",
    "jsdoc/require-returns-description": "warn",
    "import/first": "error",
    "import/no-duplicates": "error",
    "import/no-mutable-exports": "error",
    "import/no-named-default": "error",
    "import/no-self-import": "error",
    "import/no-webpack-loader-syntax": "error",
    "unicorn/consistent-empty-array-spread": "error",
    "unicorn/error-message": "error",
    "unicorn/escape-case": "error",
    "unicorn/new-for-builtins": "error",
    "unicorn/no-new-array": "error",
    "unicorn/no-new-buffer": "error",
    "unicorn/number-literal-case": "error",
    "unicorn/prefer-dom-node-text-content": "error",
    "unicorn/prefer-includes": "error",
    "unicorn/prefer-node-protocol": "error",
    "unicorn/prefer-number-properties": "error",
    "unicorn/prefer-string-starts-ends-with": "error",
    "unicorn/prefer-type-error": "error",
    "unicorn/throw-new-error": "error"
  },
  "overrides": [
    {
      "files": [
        "**/*.?([cm])ts",
        "**/*.?([cm])tsx"
      ],
      "rules": {
        "no-class-assign": "off",
        "no-const-assign": "off",
        "no-dupe-class-members": "off",
        "no-dupe-keys": "off",
        "no-func-assign": "off",
        "no-import-assign": "off",
        "no-new-native-nonconstructor": "off",
        "no-obj-calls": "off",
        "no-redeclare": "off",
        "no-setter-return": "off",
        "no-this-before-super": "off",
        "no-unsafe-negation": "off",
        "no-with": "off",
        "no-array-constructor": "off",
        "no-unused-expressions": "off",
        "no-unused-vars": "off",
        "no-useless-constructor": "off"
      }
    },
    {
      "files": [
        "**/__tests__/**/*.?([cm])[jt]s?(x)",
        "**/*.spec.?([cm])[jt]s?(x)",
        "**/*.test.?([cm])[jt]s?(x)",
        "**/*.bench.?([cm])[jt]s?(x)",
        "**/*.benchmark.?([cm])[jt]s?(x)"
      ],
      "rules": {
        "no-unused-expressions": "off"
      }
    },
    {
      "files": [
        "**/*.?([cm])[jt]s?(x)"
      ],
      "rules": {
        "react/jsx-no-duplicate-props": "warn",
        "react/no-array-index-key": "warn",
        "react/no-direct-mutation-state": "error",
        "react/no-string-refs": "error",
        "react-hooks/rules-of-hooks": "error"
      },
      "plugins": [
        "react"
      ]
    },
    {
      "files": [
        "**/*.md/**/*.?([cm])[jt]s?(x)"
      ],
      "rules": {
        "no-alert": "off",
        "no-labels": "off",
        "no-lone-blocks": "off",
        "no-unused-expressions": "off",
        "no-unused-labels": "off",
        "no-unused-vars": "off",
        "unicode-bom": "off"
      }
    },
    {
      "files": [
        "**/*.d.?([cm])ts"
      ],
      "rules": {
        "import/no-duplicates": "off"
      }
    }
  ]
}

What happened?

I am seeing very high levels of memory usage with the oxc language server as a process on my computer after working in my typescript project in vscode for about an hour. It was using 6.7 GB, will send a screenshot when it happens again, (I accidentally deleted my last screenshot while creating this issue). Let me know what other details you need for me or how I can help.

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions