You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2022/01/05 05:35:33 UTC

[superset] branch tech-debt-metrics updated: better formatting, and adds prefer-function-component rule

This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch tech-debt-metrics
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/tech-debt-metrics by this push:
     new e8bc268  better formatting, and adds prefer-function-component rule
e8bc268 is described below

commit e8bc26807c7622a10463259d96c4f5895ccaac7b
Author: Evan Rusackas <ev...@preset.io>
AuthorDate: Tue Jan 4 22:33:22 2022 -0700

    better formatting, and adds prefer-function-component rule
---
 superset-frontend/.eslintrc.js      |  18 ++++++-
 superset-frontend/eslint-stats.json | 101 ++++++++++++++++++++++++++++++++----
 superset-frontend/eslint_metrics.js |  39 +++++++-------
 superset-frontend/package-lock.json |  13 +++++
 superset-frontend/package.json      |   1 +
 5 files changed, 140 insertions(+), 32 deletions(-)

diff --git a/superset-frontend/.eslintrc.js b/superset-frontend/.eslintrc.js
index 98466ec..3b6a09d 100644
--- a/superset-frontend/.eslintrc.js
+++ b/superset-frontend/.eslintrc.js
@@ -22,6 +22,7 @@ module.exports = {
     'prettier',
     'prettier/react',
     'plugin:react-hooks/recommended',
+    'plugin:react-prefer-function-component/recommended',
   ],
   parser: '@babel/eslint-parser',
   parserOptions: {
@@ -38,7 +39,12 @@ module.exports = {
       version: 'detect',
     },
   },
-  plugins: ['prettier', 'react', 'file-progress'],
+  plugins: [
+    'prettier',
+    'react',
+    'file-progress',
+    'react-prefer-function-component',
+  ],
   overrides: [
     {
       files: ['cypress-base/**/*'],
@@ -67,8 +73,14 @@ module.exports = {
         'prettier',
         'prettier/@typescript-eslint',
         'prettier/react',
+        'plugin:react-prefer-function-component/recommended',
+      ],
+      plugins: [
+        '@typescript-eslint/eslint-plugin',
+        'prettier',
+        'react',
+        'react-prefer-function-component',
       ],
-      plugins: ['@typescript-eslint/eslint-plugin', 'prettier', 'react'],
       rules: {
         '@typescript-eslint/ban-ts-ignore': 0,
         '@typescript-eslint/ban-ts-comment': 0, // disabled temporarily
@@ -130,6 +142,7 @@ module.exports = {
         'padded-blocks': 0,
         'prefer-arrow-callback': 0,
         'prefer-destructuring': ['error', { object: true, array: false }],
+        'react-prefer-function-component/react-prefer-function-component': 1,
         'react/destructuring-assignment': 0, // re-enable up for discussion
         'react/forbid-prop-types': 0,
         'react/jsx-filename-extension': [1, { extensions: ['.jsx', '.tsx'] }],
@@ -253,6 +266,7 @@ module.exports = {
     'no-shadow': 0, // re-enable up for discussion
     'padded-blocks': 0,
     'prefer-arrow-callback': 0,
+    'react-prefer-function-component/react-prefer-function-component': 1,
     'prefer-object-spread': 1,
     'prefer-destructuring': ['error', { object: true, array: false }],
     'react/destructuring-assignment': 0, // re-enable up for discussion
diff --git a/superset-frontend/eslint-stats.json b/superset-frontend/eslint-stats.json
index 9b2fe2cf..c148471 100644
--- a/superset-frontend/eslint-stats.json
+++ b/superset-frontend/eslint-stats.json
@@ -1,17 +1,98 @@
 {
 	"metrics": [		
     	{
-    		"rule": "@typescript-eslint/no-non-null-assertion",
-    		"count": 8,
+    		"rule": "react-prefer-function-component/react-prefer-function-component",
+    		"count": 89,
     		"files": [
-    			"/Users/evan/GitHub/superset/superset-frontend/cypress-base/cypress/integration/dashboard/dashboard.helper.ts:77:22",
-				"/Users/evan/GitHub/superset/superset-frontend/cypress-base/cypress/integration/dashboard/dashboard.helper.ts:79:15",
-				"/Users/evan/GitHub/superset/superset-frontend/src/components/ListViewCard/index.tsx:190:23",
-				"/Users/evan/GitHub/superset/superset-frontend/src/components/ListViewCard/index.tsx:252:29",
-				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/menu/WithPopoverMenu.tsx:66:18",
-				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopoverTrigger.tsx:61:30",
-				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopoverTrigger.tsx:62:29",
-				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:567:5"
+    			"/Users/evan/GitHub/superset/superset-frontend/src/CRUD/CollectionTable.tsx:115:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/CRUD/Fieldset.jsx:38:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/AceEditorWrapper/index.tsx:67:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/App/index.jsx:37:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/ExploreCtasResultsButton/index.jsx:38:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/ExploreResultsButton/index.jsx:43:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/QueryAutoRefresh/index.jsx:31:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/ResultSet/index.tsx:174:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/SqlEditor/index.jsx:157:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/SqlEditorLeftBar/index.jsx:54:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/TabbedSqlEditors/index.jsx:75:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/addSlice/AddSliceContainer.tsx:181:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/chart/Chart.jsx:110:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/chart/ChartRenderer.jsx:63:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/AlteredSliceTag/index.jsx:52:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/AnchorLink/index.jsx:42:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/AsyncSelect/index.jsx:45:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/CopyToClipboard/index.jsx:46:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/Datasource/DatasourceEditor.jsx:405:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/FilterableTable/FilterableTable.tsx:116:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/ModalTrigger/index.jsx:54:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/Select/OnPasteSelect.jsx:23:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/components/URLShortLinkButton/index.jsx:35:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/ColorSchemeControlWrapper.jsx:37:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/CssEditor/index.jsx:57:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/Dashboard.jsx:76:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/DashboardGrid.jsx:51:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/DeleteComponentButton.jsx:30:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:101:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/Header/index.jsx:140:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/PropertiesModal/index.jsx:110:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/PublishedStatus/index.jsx:47:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/RefreshIntervalModal.tsx:64:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/SaveModal.tsx:68:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/SliceAdder.jsx:89:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:125:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/UndoRedoKeyListeners/index.jsx:27:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/dnd/DragDroppable.jsx:69:8",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/dnd/DragHandle.jsx:35:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/filterscope/FilterScopeModal.tsx:33:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/filterscope/FilterScopeSelector.jsx:70:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx:114:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/ChartHolder.jsx:156:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/Column.jsx:61:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/Divider.jsx:39:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/Header.jsx:58:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/Row.jsx:59:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/Tab.jsx:87:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/Tabs.jsx:112:8",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/gridComponents/new/DraggableNewComponent.jsx:38:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/menu/BackgroundStyleDropdown.tsx:50:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/menu/HoverMenu.tsx:66:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/menu/MarkdownModeDropdown.tsx:43:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/menu/WithPopoverMenu.tsx:44:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/resizable/ResizableContainer.jsx:83:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/containers/DashboardComponent.jsx:119:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ControlHeader.jsx:49:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ControlPanelsContainer.tsx:197:8",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/EmbedCodeButton.jsx:36:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:111:8",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/SaveModal.tsx:66:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:98:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/AnnotationLayerControl/index.jsx:59:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/BoundsControl.jsx:50:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/CheckboxControl.jsx:37:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/CollectionControl/index.jsx:76:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/ColorPickerControl.jsx:67:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/ColorSchemeControl.jsx:51:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:111:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/FilterBoxItemControl/index.jsx:71:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.jsx:88:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/index.jsx:88:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSqlTabContent/index.jsx:54:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterPopoverTrigger/index.tsx:45:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/FixedOrMetricControl/index.jsx:51:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:79:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopoverTitle.jsx:34:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.jsx:43:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.tsx:53:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/SelectControl.jsx:85:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/SpatialControl.jsx:50:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/TextAreaControl.jsx:60:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/TextControl/index.tsx:48:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:99:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/ViewportControl.jsx:58:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/profile/components/CreatedContent.tsx:31:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/profile/components/Favorites.tsx:31:16",
+				"/Users/evan/GitHub/superset/superset-frontend/src/visualizations/FilterBox/FilterBox.jsx:94:1",
+				"/Users/evan/GitHub/superset/superset-frontend/src/visualizations/TimeTable/SparklineCell.jsx:90:1"
     		]
     	}
 	]
diff --git a/superset-frontend/eslint_metrics.js b/superset-frontend/eslint_metrics.js
index da81e42..9dc68bb 100644
--- a/superset-frontend/eslint_metrics.js
+++ b/superset-frontend/eslint_metrics.js
@@ -1,36 +1,35 @@
 module.exports = results => {
-  const byRuleId = results.reduce(
-    (map, current) => {
-      current.messages.forEach(({ ruleId, line, column }) => {
-        if (!map[ruleId]) {
-          map[ruleId] = [];
-        }
+  const byRuleId = results.reduce((map, current) => {
+    current.messages.forEach(({ ruleId, line, column }) => {
+      if (!map[ruleId]) {
+        map[ruleId] = [];
+      }
 
-        const occurrence = `${current.filePath}:${line}:${column}`;
-        map[ruleId].push(occurrence);
-      });
-      return map;
-    }, {}
-  );
+      const occurrence = `${current.filePath}:${line}:${column}`;
+      map[ruleId].push(occurrence);
+    });
+    return map;
+  }, {});
 
   const enforcedRules = [
-    "@typescript-eslint/no-non-null-assertion",
+    'react-prefer-function-component/react-prefer-function-component',
   ];
 
   const metricsByRule = Object.entries(byRuleId)
-    .filter(([ruleId, occurrences]) => enforcedRules.includes(ruleId) )
-    .map(([ruleId, occurrences]) => `
+    .filter(([ruleId, occurrences]) => enforcedRules.includes(ruleId))
+    .map(
+      ([ruleId, occurrences]) => `
     \t{
     \t\t"rule": "${ruleId}",
     \t\t"count": ${occurrences.length},
     \t\t"files": [
     \t\t\t"${occurrences.join('",\n\t\t\t\t"')}"
     \t\t]
-    \t}`)
-    .join(',\n');
+    \t}`,
+    )
+    .join(',');
 
-    return `{\n\t"metrics": [\t\t${metricsByRule}\n\t]\n}`;
+  return `{\n\t"metrics": [\t\t${metricsByRule}\n\t]\n}`;
 };
-  
 
-// use via `eslint -f ./eslint_metrics.js`
\ No newline at end of file
+// use via `eslint -f ./eslint_metrics.js`
diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json
index 96c3b7e..1b236bd 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -221,6 +221,7 @@
         "eslint-plugin-prettier": "^3.3.1",
         "eslint-plugin-react": "^7.22.0",
         "eslint-plugin-react-hooks": "^4.2.0",
+        "eslint-plugin-react-prefer-function-component": "^0.0.7",
         "eslint-plugin-testing-library": "^3.10.1",
         "exports-loader": "^0.7.0",
         "fetch-mock": "^7.7.3",
@@ -23659,6 +23660,12 @@
         "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
       }
     },
+    "node_modules/eslint-plugin-react-prefer-function-component": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-prefer-function-component/-/eslint-plugin-react-prefer-function-component-0.0.7.tgz",
+      "integrity": "sha512-W4npdWHC5xdKFmuQ41wwqlFvqrk8euMp5nbv5obvFbsWit7c9gSmEEwde/nE+yQpHUsP1gObN+JsEtB+4bBrMQ==",
+      "dev": true
+    },
     "node_modules/eslint-plugin-react/node_modules/doctrine": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
@@ -62949,6 +62956,12 @@
       "dev": true,
       "requires": {}
     },
+    "eslint-plugin-react-prefer-function-component": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-prefer-function-component/-/eslint-plugin-react-prefer-function-component-0.0.7.tgz",
+      "integrity": "sha512-W4npdWHC5xdKFmuQ41wwqlFvqrk8euMp5nbv5obvFbsWit7c9gSmEEwde/nE+yQpHUsP1gObN+JsEtB+4bBrMQ==",
+      "dev": true
+    },
     "eslint-plugin-testing-library": {
       "version": "3.10.1",
       "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.1.tgz",
diff --git a/superset-frontend/package.json b/superset-frontend/package.json
index a70993f..84eeb73 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -274,6 +274,7 @@
     "eslint-plugin-prettier": "^3.3.1",
     "eslint-plugin-react": "^7.22.0",
     "eslint-plugin-react-hooks": "^4.2.0",
+    "eslint-plugin-react-prefer-function-component": "^0.0.7",
     "eslint-plugin-testing-library": "^3.10.1",
     "exports-loader": "^0.7.0",
     "fetch-mock": "^7.7.3",