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:39:47 UTC
[superset] 03/03: 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
commit 5a44c7ab8978f8edf159a36e3b9630ec5b8b7bd5
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.json | 1 +
4 files changed, 127 insertions(+), 32 deletions(-)
diff --git a/superset-frontend/.eslintrc.js b/superset-frontend/.eslintrc.js
index a53269e..3bfb29b 100644
--- a/superset-frontend/.eslintrc.js
+++ b/superset-frontend/.eslintrc.js
@@ -43,6 +43,7 @@ module.exports = {
'prettier',
'prettier/react',
'plugin:react-hooks/recommended',
+ 'plugin:react-prefer-function-component/recommended',
],
parser: '@babel/eslint-parser',
parserOptions: {
@@ -67,7 +68,12 @@ module.exports = {
version: 'detect',
},
},
- plugins: ['prettier', 'react', 'file-progress'],
+ plugins: [
+ 'prettier',
+ 'react',
+ 'file-progress',
+ 'react-prefer-function-component',
+ ],
overrides: [
{
files: ['cypress-base/**/*'],
@@ -96,8 +102,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
@@ -159,6 +171,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'] }],
@@ -301,6 +314,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.json b/superset-frontend/package.json
index 3b5110b..280977d 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -288,6 +288,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",