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:45 UTC

[superset] 01/03: Initial commit

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 c9dd1fc4a1d645378afef3d02d1abd74b2bc3dbe
Author: Evan Rusackas <ev...@preset.io>
AuthorDate: Thu Nov 11 12:18:54 2021 -0700

    Initial commit
---
 superset-frontend/eslint-stats.json | 338 ++++++++++++++++++++++++++++++++++++
 superset-frontend/eslint_metrics.js |  31 ++++
 superset-frontend/package.json      |   1 +
 3 files changed, 370 insertions(+)

diff --git a/superset-frontend/eslint-stats.json b/superset-frontend/eslint-stats.json
new file mode 100644
index 0000000..c8ca7e5
--- /dev/null
+++ b/superset-frontend/eslint-stats.json
@@ -0,0 +1,338 @@
+{
+	"metrics": [
+		
+    {
+      "rule": "@typescript-eslint/no-non-null-assertion",
+      "count": 8,
+      "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"
+      ]
+    },
+
+    {
+      "rule": "@typescript-eslint/no-explicit-any",
+      "count": 2,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/cypress-base/cypress/integration/dashboard/nativeFilters.test.ts:24:35",
+	"/Users/evan/GitHub/superset/superset-frontend/cypress-base/cypress/utils/vizPlugins.ts:50:44"
+      ]
+    },
+
+    {
+      "rule": "@typescript-eslint/no-unused-vars",
+      "count": 13,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/cypress-base/cypress/integration/dashboard/nativeFilters.test.ts:27:10",
+	"/Users/evan/GitHub/superset/superset-frontend/cypress-base/cypress/integration/dashboard/save.test.js:37:25",
+	"/Users/evan/GitHub/superset/superset-frontend/cypress-base/cypress/integration/dashboard/save.test.js:58:34",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/TableSelector/index.tsx:216:16",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FilterTitleContainer.tsx:165:20",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeColumn/buildQuery.ts:36:38",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:231:31",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:237:32",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:249:32",
+	"/Users/evan/GitHub/superset/superset-frontend/src/utils/downloadAsImage.ts:53:3",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/database/DatabaseModal/SqlAlchemyForm.tsx:31:3",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/query/QueryList.tsx:83:38",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.tsx:93:3"
+      ]
+    },
+
+    {
+      "rule": "prettier/prettier",
+      "count": 22,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:2:35",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:4:1",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:5:7",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:6:9",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:7:1",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:9:1",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:10:7",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:11:5",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:12:1",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:13:1",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:17:10",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:24:7",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:27:1",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:29:1",
+	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:31:43",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:387:47",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:388:38",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:389:16",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:390:9",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:391:1",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:392:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:393:1"
+      ]
+    },
+
+    {
+      "rule": "no-param-reassign",
+      "count": 1,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/eslint_metrics.js:6:11"
+      ]
+    },
+
+    {
+      "rule": "no-restricted-imports",
+      "count": 26,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/spec/helpers/testing-library.tsx:22:25",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/dashboard/components/FiltersBadge_spec.tsx:21:10",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/dashboard/components/FiltersBadge_spec.tsx:24:8",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.tsx:29:10",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/components/CheckboxControl_spec.tsx:22:25",
+	"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/RunQueryActionButton/index.tsx:20:21",
+	"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/TemplateParamsEditor/TemplateParamsEditor.test.tsx:28:25",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/CertifiedIcon/index.tsx:20:13",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/Collapse/Collapse.test.tsx:22:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ConfirmStatusChange/ConfirmStatusChange.test.jsx:23:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/Datasource/ChangeDatasourceModal.test.jsx:26:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/Datasource/DatasourceModal.test.jsx:27:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ErrorMessage/BasicErrorAlert.test.tsx:22:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ErrorMessage/ErrorAlert.test.tsx:23:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/Icons/Icons.stories.tsx:20:18",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ListView/ListView.test.jsx:23:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/MessageToasts/Toast.test.jsx:21:25",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ModalTrigger/ModalTrigger.test.tsx:22:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/Popover/Popover.test.tsx:22:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/Tooltip/Tooltip.test.tsx:22:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.test.tsx:25:8",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/filterscope/FilterScope.test.tsx:20:10",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.test.tsx:24:8",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/FilterSetUnit.tsx:24:35",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/exploreUtils/shouldUseLegacyApi.test.ts:19:8",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/components/AlertStatusIcon.tsx:19:13"
+      ]
+    },
+
+    {
+      "rule": "jest/no-disabled-tests",
+      "count": 8,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/components/ExploreViewContainer_spec.jsx:35:1",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/components/MetricsControl_spec.jsx:71:1",
+	"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/actions/sqlLab.test.js:147:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/actions/sqlLab.test.js:215:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.test.tsx:319:3",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.test.tsx:361:3",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.test.tsx:197:1",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/components/AlertReportCronScheduler.test.tsx:43:3"
+      ]
+    },
+
+    {
+      "rule": "jest/expect-expect",
+      "count": 9,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/utils_spec.jsx:57:5",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/utils_spec.jsx:66:5",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/utils_spec.jsx:78:5",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/utils_spec.jsx:90:5",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/utils_spec.jsx:104:5",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/utils_spec.jsx:116:5",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/utils_spec.jsx:195:5",
+	"/Users/evan/GitHub/superset/superset-frontend/spec/javascripts/explore/utils_spec.jsx:202:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/reducers/sqlLab.test.js:247:5"
+      ]
+    },
+
+    {
+      "rule": "react-hooks/exhaustive-deps",
+      "count": 134,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/QueryTable/index.jsx:292:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/DatabaseSelector/index.tsx:232:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/EditableTitle/index.tsx:68:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ListView/utils.ts:217:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ListView/utils.ts:240:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ListView/utils.ts:292:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ListView/utils.ts:330:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ListView/utils.ts:336:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/ReportModal/index.tsx:206:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/TableView/TableView.tsx:168:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/components/TableView/TableView.tsx:177:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardContainer.tsx:68:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardContainer.tsx:68:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardContainer.tsx:102:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardContainer.tsx:102:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/DashboardBuilder/state.ts:82:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilters/CascadePopover/index.tsx:156:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx:98:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx:100:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterValue.tsx:185:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterValue.tsx:190:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/index.tsx:187:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/index.tsx:240:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/index.tsx:240:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/index.tsx:240:32",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/index.tsx:244:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/index.tsx:244:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts:147:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/state.ts:75:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:508:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:694:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:712:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:713:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:715:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:723:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/state.ts:45:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/state.ts:76:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/state.ts:84:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/DataTableControl/index.tsx:153:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/DataTablesPane/index.tsx:218:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/DataTablesPane/index.tsx:244:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreViewContainer.jsx:156:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreViewContainer.jsx:289:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreViewContainer.jsx:296:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreViewContainer.jsx:306:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreViewContainer.jsx:346:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreViewContainer.jsx:373:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/ConditionalFormattingControl/ConditionalFormattingControl.tsx:100:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/ConditionalFormattingControl/ConditionalFormattingControl.tsx:100:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterLabel.tsx:233:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx:384:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx:165:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx:165:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx:186:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx:358:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.jsx:220:74",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.jsx:268:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/ViewQueryModal.tsx:92:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/ViewQueryModal.tsx:92:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:424:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/GroupBy/GroupByFilterPlugin.tsx:57:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/GroupBy/GroupByFilterPlugin.tsx:57:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/GroupBy/GroupByFilterPlugin.tsx:63:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/GroupBy/GroupByFilterPlugin.tsx:63:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx:168:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx:168:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx:168:42",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:153:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:160:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:160:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:165:33",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:234:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:243:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:248:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:248:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/Time/TimeFilterPlugin.tsx:93:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeColumn/TimeColumnFilterPlugin.tsx:69:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeColumn/TimeColumnFilterPlugin.tsx:69:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeColumn/TimeColumnFilterPlugin.tsx:73:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeColumn/TimeColumnFilterPlugin.tsx:73:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeGrain/TimeGrainFilterPlugin.tsx:57:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeGrain/TimeGrainFilterPlugin.tsx:57:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeGrain/TimeGrainFilterPlugin.tsx:83:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeGrain/TimeGrainFilterPlugin.tsx:83:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeGrain/TimeGrainFilterPlugin.tsx:87:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/filters/components/TimeGrain/TimeGrainFilterPlugin.tsx:87:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/AlertList.tsx:147:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/AlertList.tsx:336:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/AlertList.tsx:413:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx:914:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx:990:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/AlertReportModal.tsx:996:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/alert/ExecutionLog.tsx:80:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotation/AnnotationList.tsx:98:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotation/AnnotationList.tsx:199:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotation/AnnotationList.tsx:199:12",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotation/AnnotationModal.tsx:253:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotation/AnnotationModal.tsx:264:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotation/AnnotationModal.tsx:265:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotation/AnnotationModal.tsx:266:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotation/AnnotationModal.tsx:267:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotationlayers/AnnotationLayerModal.tsx:202:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotationlayers/AnnotationLayerModal.tsx:213:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotationlayers/AnnotationLayerModal.tsx:214:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotationlayers/AnnotationLayerModal.tsx:215:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotationlayers/AnnotationLayersList.tsx:262:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/annotationlayers/AnnotationLayersList.tsx:317:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/chart/ChartList.tsx:412:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/chart/ChartList.tsx:416:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/csstemplates/CssTemplateModal.tsx:196:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/csstemplates/CssTemplateModal.tsx:207:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/csstemplates/CssTemplateModal.tsx:208:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/csstemplates/CssTemplateModal.tsx:209:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/csstemplates/CssTemplatesList.tsx:241:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/csstemplates/CssTemplatesList.tsx:303:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/dashboard/DashboardList.tsx:401:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/dashboard/DashboardList.tsx:405:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx:818:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx:836:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx:486:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/query/QueryList.tsx:327:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/hooks.ts:111:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/hooks.ts:183:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/hooks.ts:271:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/hooks.ts:315:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/hooks.ts:360:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/hooks.ts:467:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/hooks.ts:548:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/welcome/ActivityTable.tsx:174:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/welcome/ChartTable.tsx:110:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/welcome/DashboardTable.tsx:100:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/welcome/Welcome.tsx:236:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/welcome/Welcome.tsx:255:6",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/welcome/Welcome.tsx:261:6"
+      ]
+    },
+
+    {
+      "rule": "no-console",
+      "count": 17,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/actions/sliceEntities.js:107:13",
+	"/Users/evan/GitHub/superset/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/utils.ts:99:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:378:3",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:388:9",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:692:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/datasource/DatasourceEditor.jsx:766:13",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:85:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:94:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:135:11",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:174:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:185:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:213:9",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:232:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:243:9",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:260:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/utils/downloadAsImage.ts:92:9",
+	"/Users/evan/GitHub/superset/superset-frontend/src/utils/testUtils.ts:38:5"
+      ]
+    },
+
+    {
+      "rule": "react/forbid-foreign-prop-types",
+      "count": 1,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreViewContainer.jsx:60:24"
+      ]
+    },
+
+    {
+      "rule": "@typescript-eslint/no-use-before-define",
+      "count": 9,
+      "files": [
+      	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DateFilterControl/components/AdvancedFrame.tsx:28:25",
+	"/Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DateFilterControl/components/AdvancedFrame.tsx:31:20",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:98:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:101:5",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:120:40",
+	"/Users/evan/GitHub/superset/superset-frontend/src/middleware/asyncEvent.ts:183:42",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx:351:38",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/welcome/ChartTable.tsx:107:7",
+	"/Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/welcome/DashboardTable.tsx:97:7"
+      ]
+    }
+	]
+}
\ No newline at end of file
diff --git a/superset-frontend/eslint_metrics.js b/superset-frontend/eslint_metrics.js
new file mode 100644
index 0000000..69b2f33
--- /dev/null
+++ b/superset-frontend/eslint_metrics.js
@@ -0,0 +1,31 @@
+module.exports = results => {
+  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 metricsByRule = Object.entries(byRuleId)
+    .map(([ruleId, occurrences]) => `
+    {
+      "rule": "${ruleId}",
+      "count": ${occurrences.length},
+      "files": [
+      \t"${occurrences.join('",\n\t\t"')}"
+      ]
+    }`)
+    .join(',\n');
+
+    return `{\n\t"metrics": [\n\t\t\t${metricsByRule}\n\t]\n}`;
+};
+  
+
+// use via `eslint -f ./eslint_metrics.js`
\ No newline at end of file
diff --git a/superset-frontend/package.json b/superset-frontend/package.json
index 76a832e..3b5110b 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -47,6 +47,7 @@
     "format": "npm run _prettier -- --write",
     "lint": "npm run _lint && npm run type",
     "lint-fix": "npm run _lint -- --fix && npm run type",
+    "lint-stats": "eslint -f ./eslint_metrics.js -o eslint-stats.json --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx .",
     "plugins:build": "node ./scripts/build.js",
     "plugins:build-assets": "node ./scripts/copyAssets.js",
     "plugins:build-storybook": "cd packages/superset-ui-demo && npm run build-storybook",