From 78e53844fa8cc2948b4d2218ba1e2a07cbc7eecc Mon Sep 17 00:00:00 2001 From: Bill Cromie Date: Tue, 12 Apr 2016 21:18:38 -0400 Subject: [PATCH] more codeclimate setup --- .codeclimate.yml | 46 +++++ .csslintrc | 2 + .eslintignore | 1 + .eslintrc | 213 ++++++++++++++++++++ .travis.yml | 3 + codeclimate-config.patch | 416 +++++++++++++++++++++++++++++++++++++++ coffeelint.json | 129 ++++++++++++ 7 files changed, 810 insertions(+) create mode 100644 .codeclimate.yml create mode 100644 .csslintrc create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 codeclimate-config.patch create mode 100644 coffeelint.json diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 000000000..66c1bc820 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,46 @@ +--- +engines: + brakeman: + enabled: true + bundler-audit: + enabled: true + csslint: + enabled: true + coffeelint: + enabled: true + duplication: + enabled: true + config: + languages: + - ruby + - javascript + - python + - php + eslint: + enabled: true + fixme: + enabled: true + rubocop: + enabled: true +ratings: + paths: + - Gemfile.lock + - "**.erb" + - "**.haml" + - "**.rb" + - "**.rhtml" + - "**.slim" + - "**.css" + - "**.coffee" + - "**.inc" + - "**.js" + - "**.jsx" + - "**.module" + - "**.php" + - "**.py" +exclude_paths: +- config/ +- db/ +- spec/ +- test/ +- vendor/ diff --git a/.csslintrc b/.csslintrc new file mode 100644 index 000000000..aacba956e --- /dev/null +++ b/.csslintrc @@ -0,0 +1,2 @@ +--exclude-exts=.min.css +--ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..96212a359 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +**/*{.,-}min.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 000000000..9faa37508 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,213 @@ +ecmaFeatures: + modules: true + jsx: true + +env: + amd: true + browser: true + es6: true + jquery: true + node: true + +# http://eslint.org/docs/rules/ +rules: + # Possible Errors + comma-dangle: [2, never] + no-cond-assign: 2 + no-console: 0 + no-constant-condition: 2 + no-control-regex: 2 + no-debugger: 2 + no-dupe-args: 2 + no-dupe-keys: 2 + no-duplicate-case: 2 + no-empty: 2 + no-empty-character-class: 2 + no-ex-assign: 2 + no-extra-boolean-cast: 2 + no-extra-parens: 0 + no-extra-semi: 2 + no-func-assign: 2 + no-inner-declarations: [2, functions] + no-invalid-regexp: 2 + no-irregular-whitespace: 2 + no-negated-in-lhs: 2 + no-obj-calls: 2 + no-regex-spaces: 2 + no-sparse-arrays: 2 + no-unexpected-multiline: 2 + no-unreachable: 2 + use-isnan: 2 + valid-jsdoc: 0 + valid-typeof: 2 + + # Best Practices + accessor-pairs: 2 + block-scoped-var: 0 + complexity: [2, 6] + consistent-return: 0 + curly: 0 + default-case: 0 + dot-location: 0 + dot-notation: 0 + eqeqeq: 2 + guard-for-in: 2 + no-alert: 2 + no-caller: 2 + no-case-declarations: 2 + no-div-regex: 2 + no-else-return: 0 + no-empty-label: 2 + no-empty-pattern: 2 + no-eq-null: 2 + no-eval: 2 + no-extend-native: 2 + no-extra-bind: 2 + no-fallthrough: 2 + no-floating-decimal: 0 + no-implicit-coercion: 0 + no-implied-eval: 2 + no-invalid-this: 0 + no-iterator: 2 + no-labels: 0 + no-lone-blocks: 2 + no-loop-func: 2 + no-magic-number: 0 + no-multi-spaces: 0 + no-multi-str: 0 + no-native-reassign: 2 + no-new-func: 2 + no-new-wrappers: 2 + no-new: 2 + no-octal-escape: 2 + no-octal: 2 + no-proto: 2 + no-redeclare: 2 + no-return-assign: 2 + no-script-url: 2 + no-self-compare: 2 + no-sequences: 0 + no-throw-literal: 0 + no-unused-expressions: 2 + no-useless-call: 2 + no-useless-concat: 2 + no-void: 2 + no-warning-comments: 0 + no-with: 2 + radix: 2 + vars-on-top: 0 + wrap-iife: 2 + yoda: 0 + + # Strict + strict: 0 + + # Variables + init-declarations: 0 + no-catch-shadow: 2 + no-delete-var: 2 + no-label-var: 2 + no-shadow-restricted-names: 2 + no-shadow: 0 + no-undef-init: 2 + no-undef: 0 + no-undefined: 0 + no-unused-vars: 0 + no-use-before-define: 0 + + # Node.js and CommonJS + callback-return: 2 + global-require: 2 + handle-callback-err: 2 + no-mixed-requires: 0 + no-new-require: 0 + no-path-concat: 2 + no-process-exit: 2 + no-restricted-modules: 0 + no-sync: 0 + + # Stylistic Issues + array-bracket-spacing: 0 + block-spacing: 0 + brace-style: 0 + camelcase: 0 + comma-spacing: 0 + comma-style: 0 + computed-property-spacing: 0 + consistent-this: 0 + eol-last: 0 + func-names: 0 + func-style: 0 + id-length: 0 + id-match: 0 + indent: 0 + jsx-quotes: 0 + key-spacing: 0 + linebreak-style: 0 + lines-around-comment: 0 + max-depth: 0 + max-len: 0 + max-nested-callbacks: 0 + max-params: 0 + max-statements: [2, 30] + new-cap: 0 + new-parens: 0 + newline-after-var: 0 + no-array-constructor: 0 + no-bitwise: 0 + no-continue: 0 + no-inline-comments: 0 + no-lonely-if: 0 + no-mixed-spaces-and-tabs: 0 + no-multiple-empty-lines: 0 + no-negated-condition: 0 + no-nested-ternary: 0 + no-new-object: 0 + no-plusplus: 0 + no-restricted-syntax: 0 + no-spaced-func: 0 + no-ternary: 0 + no-trailing-spaces: 0 + no-underscore-dangle: 0 + no-unneeded-ternary: 0 + object-curly-spacing: 0 + one-var: 0 + operator-assignment: 0 + operator-linebreak: 0 + padded-blocks: 0 + quote-props: 0 + quotes: 0 + require-jsdoc: 0 + semi-spacing: 0 + semi: 0 + sort-vars: 0 + space-after-keywords: 0 + space-before-blocks: 0 + space-before-function-paren: 0 + space-before-keywords: 0 + space-in-parens: 0 + space-infix-ops: 0 + space-return-throw-case: 0 + space-unary-ops: 0 + spaced-comment: 0 + wrap-regex: 0 + + # ECMAScript 6 + arrow-body-style: 0 + arrow-parens: 0 + arrow-spacing: 0 + constructor-super: 0 + generator-star-spacing: 0 + no-arrow-condition: 0 + no-class-assign: 0 + no-const-assign: 0 + no-dupe-class-members: 0 + no-this-before-super: 0 + no-var: 0 + object-shorthand: 0 + prefer-arrow-callback: 0 + prefer-const: 0 + prefer-reflect: 0 + prefer-spread: 0 + prefer-template: 0 + require-yield: 0 diff --git a/.travis.yml b/.travis.yml index 931bdcd1a..a0fc4ca0a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,3 +17,6 @@ after_success: before_install: - openssl aes-256-cbc -K $encrypted_bde597b39305_key -iv $encrypted_bde597b39305_iv -in deploy_key.enc -out deploy_key -d - echo -e "Host example.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config +addons: + code_climate: + repo_token: bc9e0fee3d10d7a24d762909e4fffe85dab761dfded5db6ffddf9d7b6e5b61f4 diff --git a/codeclimate-config.patch b/codeclimate-config.patch new file mode 100644 index 000000000..94cbf5451 --- /dev/null +++ b/codeclimate-config.patch @@ -0,0 +1,416 @@ +diff --git a/.codeclimate.yml b/.codeclimate.yml +index e69de29..66c1bc8 100644 +--- a/.codeclimate.yml ++++ b/.codeclimate.yml +@@ -0,0 +1,46 @@ ++--- ++engines: ++ brakeman: ++ enabled: true ++ bundler-audit: ++ enabled: true ++ csslint: ++ enabled: true ++ coffeelint: ++ enabled: true ++ duplication: ++ enabled: true ++ config: ++ languages: ++ - ruby ++ - javascript ++ - python ++ - php ++ eslint: ++ enabled: true ++ fixme: ++ enabled: true ++ rubocop: ++ enabled: true ++ratings: ++ paths: ++ - Gemfile.lock ++ - "**.erb" ++ - "**.haml" ++ - "**.rb" ++ - "**.rhtml" ++ - "**.slim" ++ - "**.css" ++ - "**.coffee" ++ - "**.inc" ++ - "**.js" ++ - "**.jsx" ++ - "**.module" ++ - "**.php" ++ - "**.py" ++exclude_paths: ++- config/ ++- db/ ++- spec/ ++- test/ ++- vendor/ +diff --git a/.csslintrc b/.csslintrc +index e69de29..aacba95 100644 +--- a/.csslintrc ++++ b/.csslintrc +@@ -0,0 +1,2 @@ ++--exclude-exts=.min.css ++--ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes +diff --git a/.eslintignore b/.eslintignore +index e69de29..96212a3 100644 +--- a/.eslintignore ++++ b/.eslintignore +@@ -0,0 +1 @@ ++**/*{.,-}min.js +diff --git a/.eslintrc b/.eslintrc +index e69de29..9faa375 100644 +--- a/.eslintrc ++++ b/.eslintrc +@@ -0,0 +1,213 @@ ++ecmaFeatures: ++ modules: true ++ jsx: true ++ ++env: ++ amd: true ++ browser: true ++ es6: true ++ jquery: true ++ node: true ++ ++# http://eslint.org/docs/rules/ ++rules: ++ # Possible Errors ++ comma-dangle: [2, never] ++ no-cond-assign: 2 ++ no-console: 0 ++ no-constant-condition: 2 ++ no-control-regex: 2 ++ no-debugger: 2 ++ no-dupe-args: 2 ++ no-dupe-keys: 2 ++ no-duplicate-case: 2 ++ no-empty: 2 ++ no-empty-character-class: 2 ++ no-ex-assign: 2 ++ no-extra-boolean-cast: 2 ++ no-extra-parens: 0 ++ no-extra-semi: 2 ++ no-func-assign: 2 ++ no-inner-declarations: [2, functions] ++ no-invalid-regexp: 2 ++ no-irregular-whitespace: 2 ++ no-negated-in-lhs: 2 ++ no-obj-calls: 2 ++ no-regex-spaces: 2 ++ no-sparse-arrays: 2 ++ no-unexpected-multiline: 2 ++ no-unreachable: 2 ++ use-isnan: 2 ++ valid-jsdoc: 0 ++ valid-typeof: 2 ++ ++ # Best Practices ++ accessor-pairs: 2 ++ block-scoped-var: 0 ++ complexity: [2, 6] ++ consistent-return: 0 ++ curly: 0 ++ default-case: 0 ++ dot-location: 0 ++ dot-notation: 0 ++ eqeqeq: 2 ++ guard-for-in: 2 ++ no-alert: 2 ++ no-caller: 2 ++ no-case-declarations: 2 ++ no-div-regex: 2 ++ no-else-return: 0 ++ no-empty-label: 2 ++ no-empty-pattern: 2 ++ no-eq-null: 2 ++ no-eval: 2 ++ no-extend-native: 2 ++ no-extra-bind: 2 ++ no-fallthrough: 2 ++ no-floating-decimal: 0 ++ no-implicit-coercion: 0 ++ no-implied-eval: 2 ++ no-invalid-this: 0 ++ no-iterator: 2 ++ no-labels: 0 ++ no-lone-blocks: 2 ++ no-loop-func: 2 ++ no-magic-number: 0 ++ no-multi-spaces: 0 ++ no-multi-str: 0 ++ no-native-reassign: 2 ++ no-new-func: 2 ++ no-new-wrappers: 2 ++ no-new: 2 ++ no-octal-escape: 2 ++ no-octal: 2 ++ no-proto: 2 ++ no-redeclare: 2 ++ no-return-assign: 2 ++ no-script-url: 2 ++ no-self-compare: 2 ++ no-sequences: 0 ++ no-throw-literal: 0 ++ no-unused-expressions: 2 ++ no-useless-call: 2 ++ no-useless-concat: 2 ++ no-void: 2 ++ no-warning-comments: 0 ++ no-with: 2 ++ radix: 2 ++ vars-on-top: 0 ++ wrap-iife: 2 ++ yoda: 0 ++ ++ # Strict ++ strict: 0 ++ ++ # Variables ++ init-declarations: 0 ++ no-catch-shadow: 2 ++ no-delete-var: 2 ++ no-label-var: 2 ++ no-shadow-restricted-names: 2 ++ no-shadow: 0 ++ no-undef-init: 2 ++ no-undef: 0 ++ no-undefined: 0 ++ no-unused-vars: 0 ++ no-use-before-define: 0 ++ ++ # Node.js and CommonJS ++ callback-return: 2 ++ global-require: 2 ++ handle-callback-err: 2 ++ no-mixed-requires: 0 ++ no-new-require: 0 ++ no-path-concat: 2 ++ no-process-exit: 2 ++ no-restricted-modules: 0 ++ no-sync: 0 ++ ++ # Stylistic Issues ++ array-bracket-spacing: 0 ++ block-spacing: 0 ++ brace-style: 0 ++ camelcase: 0 ++ comma-spacing: 0 ++ comma-style: 0 ++ computed-property-spacing: 0 ++ consistent-this: 0 ++ eol-last: 0 ++ func-names: 0 ++ func-style: 0 ++ id-length: 0 ++ id-match: 0 ++ indent: 0 ++ jsx-quotes: 0 ++ key-spacing: 0 ++ linebreak-style: 0 ++ lines-around-comment: 0 ++ max-depth: 0 ++ max-len: 0 ++ max-nested-callbacks: 0 ++ max-params: 0 ++ max-statements: [2, 30] ++ new-cap: 0 ++ new-parens: 0 ++ newline-after-var: 0 ++ no-array-constructor: 0 ++ no-bitwise: 0 ++ no-continue: 0 ++ no-inline-comments: 0 ++ no-lonely-if: 0 ++ no-mixed-spaces-and-tabs: 0 ++ no-multiple-empty-lines: 0 ++ no-negated-condition: 0 ++ no-nested-ternary: 0 ++ no-new-object: 0 ++ no-plusplus: 0 ++ no-restricted-syntax: 0 ++ no-spaced-func: 0 ++ no-ternary: 0 ++ no-trailing-spaces: 0 ++ no-underscore-dangle: 0 ++ no-unneeded-ternary: 0 ++ object-curly-spacing: 0 ++ one-var: 0 ++ operator-assignment: 0 ++ operator-linebreak: 0 ++ padded-blocks: 0 ++ quote-props: 0 ++ quotes: 0 ++ require-jsdoc: 0 ++ semi-spacing: 0 ++ semi: 0 ++ sort-vars: 0 ++ space-after-keywords: 0 ++ space-before-blocks: 0 ++ space-before-function-paren: 0 ++ space-before-keywords: 0 ++ space-in-parens: 0 ++ space-infix-ops: 0 ++ space-return-throw-case: 0 ++ space-unary-ops: 0 ++ spaced-comment: 0 ++ wrap-regex: 0 ++ ++ # ECMAScript 6 ++ arrow-body-style: 0 ++ arrow-parens: 0 ++ arrow-spacing: 0 ++ constructor-super: 0 ++ generator-star-spacing: 0 ++ no-arrow-condition: 0 ++ no-class-assign: 0 ++ no-const-assign: 0 ++ no-dupe-class-members: 0 ++ no-this-before-super: 0 ++ no-var: 0 ++ object-shorthand: 0 ++ prefer-arrow-callback: 0 ++ prefer-const: 0 ++ prefer-reflect: 0 ++ prefer-spread: 0 ++ prefer-template: 0 ++ require-yield: 0 +diff --git a/coffeelint.json b/coffeelint.json +index e69de29..86422e3 100644 +--- a/coffeelint.json ++++ b/coffeelint.json +@@ -0,0 +1,129 @@ ++{ ++ "arrow_spacing": { ++ "level": "ignore" ++ }, ++ "braces_spacing": { ++ "level": "ignore", ++ "spaces": 0, ++ "empty_object_spaces": 0 ++ }, ++ "camel_case_classes": { ++ "level": "error" ++ }, ++ "coffeescript_error": { ++ "level": "error" ++ }, ++ "colon_assignment_spacing": { ++ "level": "ignore", ++ "spacing": { ++ "left": 0, ++ "right": 0 ++ } ++ }, ++ "cyclomatic_complexity": { ++ "value": 10, ++ "level": "ignore" ++ }, ++ "duplicate_key": { ++ "level": "error" ++ }, ++ "empty_constructor_needs_parens": { ++ "level": "ignore" ++ }, ++ "ensure_comprehensions": { ++ "level": "warn" ++ }, ++ "eol_last": { ++ "level": "ignore" ++ }, ++ "indentation": { ++ "value": 2, ++ "level": "error" ++ }, ++ "line_endings": { ++ "level": "ignore", ++ "value": "unix" ++ }, ++ "max_line_length": { ++ "value": 80, ++ "level": "error", ++ "limitComments": true ++ }, ++ "missing_fat_arrows": { ++ "level": "ignore", ++ "is_strict": false ++ }, ++ "newlines_after_classes": { ++ "value": 3, ++ "level": "ignore" ++ }, ++ "no_backticks": { ++ "level": "error" ++ }, ++ "no_debugger": { ++ "level": "warn", ++ "console": false ++ }, ++ "no_empty_functions": { ++ "level": "ignore" ++ }, ++ "no_empty_param_list": { ++ "level": "ignore" ++ }, ++ "no_implicit_braces": { ++ "level": "ignore", ++ "strict": true ++ }, ++ "no_implicit_parens": { ++ "strict": true, ++ "level": "ignore" ++ }, ++ "no_interpolation_in_single_quotes": { ++ "level": "ignore" ++ }, ++ "no_plusplus": { ++ "level": "ignore" ++ }, ++ "no_stand_alone_at": { ++ "level": "ignore" ++ }, ++ "no_tabs": { ++ "level": "error" ++ }, ++ "no_this": { ++ "level": "ignore" ++ }, ++ "no_throwing_strings": { ++ "level": "error" ++ }, ++ "no_trailing_semicolons": { ++ "level": "error" ++ }, ++ "no_trailing_whitespace": { ++ "level": "error", ++ "allowed_in_comments": false, ++ "allowed_in_empty_lines": true ++ }, ++ "no_unnecessary_double_quotes": { ++ "level": "ignore" ++ }, ++ "no_unnecessary_fat_arrows": { ++ "level": "warn" ++ }, ++ "non_empty_constructor_needs_parens": { ++ "level": "ignore" ++ }, ++ "prefer_english_operator": { ++ "level": "ignore", ++ "doubleNotLevel": "ignore" ++ }, ++ "space_operators": { ++ "level": "ignore" ++ }, ++ "spacing_after_comma": { ++ "level": "ignore" ++ }, ++ "transform_messes_up_line_numbers": { ++ "level": "warn" ++ } ++} diff --git a/coffeelint.json b/coffeelint.json new file mode 100644 index 000000000..86422e323 --- /dev/null +++ b/coffeelint.json @@ -0,0 +1,129 @@ +{ + "arrow_spacing": { + "level": "ignore" + }, + "braces_spacing": { + "level": "ignore", + "spaces": 0, + "empty_object_spaces": 0 + }, + "camel_case_classes": { + "level": "error" + }, + "coffeescript_error": { + "level": "error" + }, + "colon_assignment_spacing": { + "level": "ignore", + "spacing": { + "left": 0, + "right": 0 + } + }, + "cyclomatic_complexity": { + "value": 10, + "level": "ignore" + }, + "duplicate_key": { + "level": "error" + }, + "empty_constructor_needs_parens": { + "level": "ignore" + }, + "ensure_comprehensions": { + "level": "warn" + }, + "eol_last": { + "level": "ignore" + }, + "indentation": { + "value": 2, + "level": "error" + }, + "line_endings": { + "level": "ignore", + "value": "unix" + }, + "max_line_length": { + "value": 80, + "level": "error", + "limitComments": true + }, + "missing_fat_arrows": { + "level": "ignore", + "is_strict": false + }, + "newlines_after_classes": { + "value": 3, + "level": "ignore" + }, + "no_backticks": { + "level": "error" + }, + "no_debugger": { + "level": "warn", + "console": false + }, + "no_empty_functions": { + "level": "ignore" + }, + "no_empty_param_list": { + "level": "ignore" + }, + "no_implicit_braces": { + "level": "ignore", + "strict": true + }, + "no_implicit_parens": { + "strict": true, + "level": "ignore" + }, + "no_interpolation_in_single_quotes": { + "level": "ignore" + }, + "no_plusplus": { + "level": "ignore" + }, + "no_stand_alone_at": { + "level": "ignore" + }, + "no_tabs": { + "level": "error" + }, + "no_this": { + "level": "ignore" + }, + "no_throwing_strings": { + "level": "error" + }, + "no_trailing_semicolons": { + "level": "error" + }, + "no_trailing_whitespace": { + "level": "error", + "allowed_in_comments": false, + "allowed_in_empty_lines": true + }, + "no_unnecessary_double_quotes": { + "level": "ignore" + }, + "no_unnecessary_fat_arrows": { + "level": "warn" + }, + "non_empty_constructor_needs_parens": { + "level": "ignore" + }, + "prefer_english_operator": { + "level": "ignore", + "doubleNotLevel": "ignore" + }, + "space_operators": { + "level": "ignore" + }, + "spacing_after_comma": { + "level": "ignore" + }, + "transform_messes_up_line_numbers": { + "level": "warn" + } +}