aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/design-system/.eslintrc
blob: 9d69007afe078dfc7e87fd4b2740ea687eabe38c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{
  "extends": ["sonarqube", "./.eslintrc-typescript"],
  "plugins": ["header", "typescript-sort-keys", "eslint-plugin-local-rules"],
  "rules": {
    // Custom SonarCloud config that differs from eslint-config-sonarqube
    "camelcase": "off",
    "react/jsx-sort-props": "error",
    "react/jsx-pascal-case": [2, { "allowNamespace": true }],
    "react/jsx-no-constructed-context-values": "error",
    "react/jsx-uses-react": "off",
    "react/no-unstable-nested-components": ["error", { "allowAsProps": true }],
    "react/react-in-jsx-scope": "off",
    "testing-library/no-node-access": ["error", { "allowContainerFirstChild": true }],
    "no-implicit-coercion": [2, { "boolean": true, "number": true, "string": true }],
    "jest/no-large-snapshots": ["warn", { "maxSize": 200 }],
    "import/no-default-export": "warn",

    // Local rules
    "local-rules/use-componentqualifier-enum": "warn",
    "local-rules/use-metrickey-enum": "warn",
    "local-rules/use-metrictype-enum": "warn",
    "local-rules/use-visibility-enum": "warn",
    "local-rules/convert-class-to-function-component": "warn",
    "local-rules/no-conditional-rendering-of-deferredspinner": "warn",
    "local-rules/use-jest-mocked": "warn",

    // New rules added after updating eslint packages to more recent versions than eslint-config-sonarqube
    "jest/prefer-mock-promise-shorthand": "error",
    "header/header": [
      "error",
      "block",
      [
        "",
        " * SonarQube",
        " * Copyright (C) 2009-2024 SonarSource SA",
        " * mailto:info AT sonarsource DOT com",
        " *",
        " * This program is free software; you can redistribute it and/or",
        " * modify it under the terms of the GNU Lesser General Public",
        " * License as published by the Free Software Foundation; either",
        " * version 3 of the License, or (at your option) any later version.",
        " *",
        " * This program is distributed in the hope that it will be useful,",
        " * but WITHOUT ANY WARRANTY; without even the implied warranty of",
        " * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU",
        " * Lesser General Public License for more details.",
        " *",
        " * You should have received a copy of the GNU Lesser General Public License",
        " * along with this program; if not, write to the Free Software Foundation,",
        " * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.",
        " "
      ],
      1
    ],
    "typescript-sort-keys/interface": "error",
    "promise/catch-or-return": ["warn", { "allowThen": true, "allowFinally": true }]
  },
  "overrides": [
    {
      "files": ["*-stories.tsx"],
      "rules": {
        "react/function-component-definition": "off"
      }
    },
    {
      "files": ["*-test.tsx"],
      "rules": {
        "react/jsx-no-constructed-context-values": "off"
      }
    }
  ],
  "settings": {
    "testing-library/utils-module": "~helpers/testUtils"
  }
}