UNPKG

@sun-asterisk/sunlint

Version:

☀️ SunLint - Multi-language static analysis tool for code quality and security | Sun* Engineering Standards

139 lines (134 loc) 6.95 kB
{ "comment": "SunLint to ESLint Rule Mapping - Full Implementation Status", "version": "1.0.0", "stats": { "commonRulesTotal": 76, "commonRulesImplemented": 27, "commonRulesMissing": 49, "securityRulesTotal": 59, "securityRulesImplemented": 43, "securityRulesMissing": 16, "reactRulesImplemented": 9, "typescriptRulesImplemented": 8 }, "missingCommonRules": [ "C001", "C004", "C008", "C009", "C011", "C016", "C020", "C021", "C022", "C024", "C025", "C026", "C027", "C028", "C036", "C039", "C044", "C045", "C046", "C048", "C049", "C050", "C051", "C052", "C053", "C054", "C055", "C056", "C057", "C058", "C059", "C060", "C061", "C062", "C063", "C064", "C065", "C066", "C067", "C068", "C069", "C070", "C071", "C073", "C074" ], "missingSecurityRules": [ "S004", "S021", "S024", "S028", "S031", "S032", "S040", "S049", "S051", "S053", "S056", "S059", "S060", "S061", "S062", "S063" ], "mappings": { "C002": ["custom/c002-no-duplicate-code"], "C003": ["custom/c003-no-vague-abbreviations"], "C005": ["max-statements-per-line", "complexity"], "C006": ["custom/c006-function-name-verb-noun"], "C007": ["spaced-comment", "no-inline-comments", "no-warning-comments"], "C010": ["custom/c010-limit-block-nesting"], "C012": ["consistent-return", "no-void", "@typescript-eslint/no-confusing-void-expression"], "C013": ["custom/c013-no-dead-code"], "C014": ["custom/c014-abstract-dependency-preferred"], "C015": ["@typescript-eslint/naming-convention", "camelcase"], "C017": ["custom/c017-limit-constructor-logic"], "C018": ["custom/c018-no-generic-throw"], "C019": ["no-console", "no-alert", "no-debugger"], "C023": ["custom/c023-no-duplicate-variable-name-in-scope"], "C029": ["custom/c029-catch-block-logging"], "C030": ["custom/c030-use-custom-error-classes"], "C031": ["no-implicit-coercion", "eqeqeq"], "C032": ["no-new", "no-constructor-return"], "C033": ["prefer-const", "no-var"], "C034": ["no-global-assign", "no-implicit-globals", "@typescript-eslint/no-namespace"], "C035": ["custom/c035-no-empty-catch"], "C037": ["consistent-return", "@typescript-eslint/explicit-function-return-type", "@typescript-eslint/explicit-module-boundary-types"], "C038": ["import/no-dynamic-require", "import/order", "@typescript-eslint/no-var-requires"], "C040": ["no-duplicate-imports", "import/no-duplicates"], "C041": ["custom/c041-no-config-inline"], "C042": ["custom/c042-boolean-name-prefix"], "C043": ["custom/c043-no-console-or-print"], "C047": ["custom/c047-no-duplicate-retry-logic"], "C072": ["custom/c072-one-assert-per-test"], "C075": ["custom/c075-explicit-function-return-types"], "C076": ["custom/c076-single-behavior-per-test"], "T002": ["custom/t002-interface-prefix-i"], "T003": ["custom/t003-ts-ignore-reason"], "T004": ["custom/t004-no-empty-type"], "T007": ["custom/t007-no-fn-in-constructor"], "T010": ["custom/t010-no-nested-union-tuple"], "T019": ["custom/t019-no-this-assign"], "T020": ["custom/t020-no-default-multi-export"], "T021": ["custom/t021-limit-nested-generics"], "S001": ["custom/s001-fail-securely"], "S002": ["custom/s002-idor-check"], "S003": ["custom/s003-no-unvalidated-redirect"], "S005": ["custom/s005-no-origin-auth"], "S006": ["custom/s006-activation-recovery-secret-not-plaintext"], "S007": ["custom/s007-no-plaintext-otp"], "S008": ["custom/s008-crypto-agility"], "S009": ["custom/s009-no-insecure-crypto"], "S010": ["custom/s010-no-insecure-random-in-sensitive-context"], "S011": ["custom/s011-no-insecure-uuid"], "S012": ["custom/s012-hardcode-secret"], "S013": ["custom/s013-verify-tls-connection"], "S014": ["custom/s014-insecure-tls-version"], "S015": ["custom/s015-insecure-tls-certificate"], "S016": ["custom/s016-sensitive-query-parameter"], "S017": ["custom/s017-no-sql-injection"], "S018": ["custom/s018-positive-input-validation"], "S019": ["custom/s019-no-raw-user-input-in-email"], "S020": ["custom/s020-no-eval-dynamic-execution"], "S022": ["custom/s022-output-encoding"], "S023": ["custom/s023-no-json-injection"], "S025": ["custom/s025-server-side-input-validation"], "S026": ["custom/s026-json-schema-validation"], "S027": ["custom/s027-no-hardcoded-secrets"], "S029": ["custom/s029-require-csrf-protection"], "S030": ["custom/s030-no-directory-browsing"], "S033": ["custom/s033-require-samesite-cookie"], "S034": ["custom/s034-require-host-cookie-prefix"], "S035": ["custom/s035-cookie-specific-path"], "S036": ["custom/s036-no-unsafe-file-include"], "S037": ["custom/s037-require-anti-cache-headers"], "S038": ["custom/s038-no-version-disclosure"], "S039": ["custom/s039-no-session-token-in-url"], "S041": ["custom/s041-require-session-invalidate-on-logout"], "S042": ["custom/s042-require-periodic-reauthentication"], "S043": ["custom/s043-terminate-sessions-on-password-change"], "S044": ["custom/s044-require-full-session-for-sensitive-operations"], "S045": ["custom/s045-anti-automation-controls"], "S046": ["custom/s046-secure-notification-on-auth-change"], "S047": ["custom/s047-secure-random-passwords"], "S048": ["custom/s048-password-credential-recovery"], "S050": ["custom/s050-session-token-weak-hash"], "S052": ["custom/s052-secure-random-authentication-code"], "S054": ["custom/s054-verification-default-account"], "S055": ["custom/s055-verification-rest-check-the-incoming-content-type"], "S057": ["custom/s057-utc-logging"], "S058": ["custom/s058-no-ssrf"], "R001": ["react/no-this-in-sfc", "no-param-reassign", "react/function-component-definition", "react/forbid-component-props"], "R002": ["react-hooks/rules-of-hooks", "react-hooks/exhaustive-deps", "react/no-did-mount-set-state", "react/no-did-update-set-state"], "R003": ["react/no-direct-mutation-state", "react/jsx-no-constructed-context-values", "react/forbid-dom-props"], "R004": ["no-param-reassign", "react/forbid-foreign-prop-types"], "R005": ["react/jsx-no-bind"], "R006": ["react/jsx-pascal-case", "react/jsx-uses-react", "react/jsx-uses-vars"], "R007": ["react-hooks/rules-of-hooks"], "R008": ["react-hooks/rules-of-hooks"], "R009": ["react-hooks/rules-of-hooks"] }, "implementationTodo": { "commonRules": { "priority1": ["C001", "C004", "C008", "C009", "C011"], "priority2": ["C016", "C020", "C021", "C022", "C024", "C025"], "priority3": ["C026", "C027", "C028", "C036", "C039", "C044", "C045", "C046"] }, "securityRules": { "needImplementation": ["S004", "S021", "S024", "S028", "S031", "S032", "S040"], "needMapping": ["All implemented S001-S058 except missing ones above"] } } }