Initial Commit

This module creates a set of shareable eslint style guidelines
for use in OpenStack. The base rule set is taken from the current
horizon rules under consideration.
This commit is contained in:
Michael Krotscheck 2015-06-23 17:20:21 -07:00
commit 4aecdfd567
9 changed files with 1141 additions and 0 deletions

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

825
.eslintrc Normal file
View File

@ -0,0 +1,825 @@
# For a detailed list of all options please see here:
# http://eslint.org/docs/configuring/
# By default, ESLint uses Espree as its parser.
parser: espree
# Most environment options are not explicitly enabled or disabled, only
# included here for completeness' sake. They are commented out, because the
# global updates.py script would otherwise override them during a global
# requirements synchronization.
#
# Individual projects should choose which platforms they deploy to.
env:
# browser global variables.
# browser: true
# Node.js global variables and Node.js-specific rules.
# node: true
# web workers global variables.
# worker: true
# defines require() and define() as global variables as per the amd spec.
# amd: true
# Adds all of the Jasmine testing global variables for version 1.3 and 2.0.
# jasmine: true
# phantomjs global variables.
# phantomjs: true
# jquery global variables.
# jquery: true
# prototypejs global variables.
# prototypejs: true
# shelljs global variables.
# shelljs: true
# meteor global variables.
# meteor: true
# OpenStack uses Jasmine, not Mocha.
# mocha: false
# Openstack does not support ES6 at its present level of adoption.
# es6: false
# Below we activate and configure the linting rules for all javascript in
# OpenStack. These will be synchronized across all projects that make use of
# them.
rules:
#############################################################################
# Possible Errors
#############################################################################
# Disallow trailing commas, as those break some browsers.
# http://eslint.org/docs/rules/comma-dangle
comma-dangle:
- 2
- "never"
# Prevent the assignment of a variable in a conditional.
# http://eslint.org/docs/rules/no-cond-assign
no-cond-assign: 2
# Do not permit the use of console logging statements.
# http://eslint.org/docs/rules/no-console
no-console: 2
# Do not permit if (true) or if(false)
# http://eslint.org/docs/rules/no-constant-condition
no-constant-condition: 2
# Do not permit ASCII 0-31 (control characters) in regular expressions.
# http://eslint.org/docs/rules/no-control-regex
no-control-regex: 2
# Do not permit debugger; statements.
# http://eslint.org/docs/rules/no-debugger
no-debugger: 2
# Do not permit duplicate argument names in function declaration.
# http://eslint.org/docs/rules/no-dupe-args
no-dupe-args: 2
# Do not permit duplicate keys in object declarations.
# http://eslint.org/docs/rules/no-dupe-keys
no-dupe-keys: 2
# Do not permit duplicate cases in switch statements.
# http://eslint.org/docs/rules/no-duplicate-case
no-duplicate-case: 2
# Disallow empty regex character classes. (/[]/)
# http://eslint.org/docs/rules/no-empty-character-class
no-empty-character-class: 2
# Disallow empty block statements.
# http://eslint.org/docs/rules/no-empty
no-empty: 0 # TODO(krotscheck): Discuss & Activate
# Disallow assigning of the exception parameter in a catch block.
# http://eslint.org/docs/rules/no-ex-assign
no-ex-assign: 2
# Disallow the use of double negation (!!foo) if already in a boolean context
# http://eslint.org/docs/rules/no-extra-boolean-cast
no-extra-boolean-cast: 2
# Disallow extraneous parentheses around functions.
# http://eslint.org/docs/rules/no-extra-parens
no-extra-parens:
- 0 # TODO(krotscheck): Discuss & Activate
- "functions"
# Disallow extraneous semicolons.
# http://eslint.org/docs/rules/no-extra-semi
no-extra-semi: 2
# Disallow overwriting functions written as function declarations
# http://eslint.org/docs/rules/no-func-assign
no-func-assign: 2
# Disallow function or variable declarations in nested blocks
# http://eslint.org/docs/rules/no-inner-declarations
no-inner-declarations: 2
# Disallow invalid regular expression strings in the RegExp constructor
# http://eslint.org/docs/rules/no-invalid-regexp
no-invalid-regexp: 2
# Disallow irregular whitespace outside of strings and comments
# http://eslint.org/docs/rules/no-irregular-whitespace
no-irregular-whitespace: 2
# Disallow negation of the left operand of an in expression
# http://eslint.org/docs/rules/no-negated-in-lhs
no-negated-in-lhs: 2
# Disallow the use of object properties of the global object (Math and JSON) as functions
# http://eslint.org/docs/rules/no-obj-calls
no-obj-calls: 2
# Disallow multiple spaces in a regular expression literal
# http://eslint.org/docs/rules/no-regex-spaces
no-regex-spaces: 2
# Disallow reserved words being used as object literal keys
# Disabled- this is for ECMA3 backwards compatibility only.
# http://eslint.org/docs/rules/no-reserved-keys
no-reserved-keys: 0
# Disallow sparse arrays
# http://eslint.org/docs/rules/no-sparse-arrays
no-sparse-arrays: 2
# Disallow unreachable statements
# http://eslint.org/docs/rules/no-unreachable
no-unreachable: 2
# Disallow comparisons with the value NaN
# http://eslint.org/docs/rules/use-isnan
use-isnan: 2
# Ensure JSDoc comments are valid
# http://eslint.org/docs/rules/valid-jsdoc
valid-jsdoc: 0 # TODO(krotscheck): Discuss & Activate
# Ensure that the results of typeof are compared against a valid string
# http://eslint.org/docs/rules/valid-typeof
valid-typeof: 2
#############################################################################
# Best Practices
#############################################################################
# Enforces getter/setter pairs in objects
# http://eslint.org/docs/rules/accessor-pairs
accessor-pairs: 2
# Treat var statements as if they were block scoped
# http://eslint.org/docs/rules/block-scoped-var
block-scoped-var: 0 # TODO(krotscheck): Discuss & Activate
# Specify the maximum cyclomatic complexity allowed in a program
# http://eslint.org/docs/rules/complexity
complexity:
- 1
- 10
# Require return statements to either always or never specify values
# http://eslint.org/docs/rules/consistent-return
consistent-return: 0 # TODO(krotscheck): Discuss & Activate
# Specify curly brace conventions for all control statements
# http://eslint.org/docs/rules/curly
curly: 2
# Require default case in switch statements
# http://eslint.org/docs/rules/default-case
default-case: 0 # TODO(krotscheck): Discuss & Activate
# encourages use of dot notation whenever possible
# http://eslint.org/docs/rules/dot-notation
dot-notation: 2
# Enforces consistent newlines before or after dots
# http://eslint.org/docs/rules/dot-location
dot-location: 0
# Require the use of === and !==
# http://eslint.org/docs/rules/eqeqeq
eqeqeq: 0 # TODO(krotscheck): Discuss & Activate
# Make sure for-in loops have an if statement
# http://eslint.org/docs/rules/guard-for-in
guard-for-in: 1
# Disallow the use of alert, confirm, and prompt
# http://eslint.org/docs/rules/no-alert
no-alert: 2
# Disallow use of arguments.caller or arguments.callee
# http://eslint.org/docs/rules/no-caller
no-caller: 2
# Disallow division operators explicitly at beginning of regular expression
# http://eslint.org/docs/rules/no-div-regex
no-div-regex: 2
# Disallow else after a return in an if
# http://eslint.org/docs/rules/no-else-return
no-else-return: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of labels for anything other then loops and switches
# http://eslint.org/docs/rules/no-empty-label
no-empty-label: 2
# Disallow comparisons to null without a type-checking operator
# http://eslint.org/docs/rules/no-eq-null
no-eq-null: 2
# Disallow use of eval()
# http://eslint.org/docs/rules/no-eval
no-eval: 2
# Disallow adding to native types
# http://eslint.org/docs/rules/no-extend-native
no-extend-native: 2
# Disallow unnecessary function binding
# http://eslint.org/docs/rules/no-extra-bind
no-extra-bind: 2
# Disallow fallthrough of case statements
# http://eslint.org/docs/rules/no-fallthrough
no-fallthrough: 2
# Disallow the use of leading or trailing decimal points in numeric literals
# http://eslint.org/docs/rules/no-floating-decimal
no-floating-decimal: 2
# Disallow use of eval()-like methods
# http://eslint.org/docs/rules/no-implied-eval
no-implied-eval: 2
# Disallow usage of __iterator__ property
# http://eslint.org/docs/rules/no-iterator
no-iterator: 2
# Disallow use of labeled statements
# http://eslint.org/docs/rules/no-labels
no-labels: 2
# Disallow unnecessary nested blocks
# http://eslint.org/docs/rules/no-lone-blocks
no-lone-blocks: 2
# Disallow creation of functions within loops
# http://eslint.org/docs/rules/no-loop-func
no-loop-func: 2
# Disallow use of multiple spaces
# http://eslint.org/docs/rules/no-multi-spaces
no-multi-spaces: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of multiline strings
# http://eslint.org/docs/rules/no-multi-str
no-multi-str: 2
# Disallow reassignments of native objects
# http://eslint.org/docs/rules/no-native-reassign
no-native-reassign: 2
# Disallow use of new operator for Function object
# http://eslint.org/docs/rules/no-new-func
no-new-func: 2
# Disallows creating new instances of String,Number, and Boolean
# http://eslint.org/docs/rules/no-new-wrappers
no-new-wrappers: 2
# Disallow use of new operator when not part of the assignment or comparison
# http://eslint.org/docs/rules/no-new
no-new: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of octal escape sequences in string literals, such as var foo = "Copyright \251";
# http://eslint.org/docs/rules/no-octal-escape
no-octal-escape: 2
# Disallow use of octal literals
# http://eslint.org/docs/rules/no-octal
no-octal: 2
# Disallow reassignment of function parameters
# http://eslint.org/docs/rules/no-param-reassign
no-param-reassign: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of process.env
#
# Please consolidate all your env access to one single file, and apply
# by-line exceptions there.
#
# http://eslint.org/docs/rules/no-process-env
no-process-env: 2
# Disallow usage of __proto__ property
# http://eslint.org/docs/rules/no-proto
no-proto: 2
# Disallow declaring the same variable more than once
# http://eslint.org/docs/rules/no-redeclare
no-redeclare: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of assignment in return statement
# http://eslint.org/docs/rules/no-return-assign
no-return-assign: 2
# Disallow use of javascript: urls.
# http://eslint.org/docs/rules/no-script-url
no-script-url: 2
# Disallow comparisons where both sides are exactly the same
# http://eslint.org/docs/rules/no-self-compare
no-self-compare: 2
# Disallow use of comma operator
# http://eslint.org/docs/rules/no-sequences
no-sequences: 2
# Restrict what can be thrown as an exception
# http://eslint.org/docs/rules/no-throw-literal
no-throw-literal: 2
# Disallow usage of expressions in statement position
# http://eslint.org/docs/rules/no-unused-expressions
no-unused-expressions: 2
# Disallow use of void operator
# http://eslint.org/docs/rules/no-void
no-void: 2
# Disallow usage of configurable warning terms in comments - e.g. TODO
# http://eslint.org/docs/rules/no-warning-comments
no-warning-comments:
- 1
- terms:
- "todo"
- "xxx"
- "fixme"
# Disallow use of the with statement
# http://eslint.org/docs/rules/no-with
no-with: 2
# Require use of the second argument for parseInt()
# http://eslint.org/docs/rules/radix
radix: 0 # TODO(krotscheck): Discuss & Activate
# Requires to declare all vars on top of their containing scope
#
# http://eslint.org/docs/rules/vars-on-top
vars-on-top: 0
# Require immediate function invocation to be wrapped in parentheses
# http://eslint.org/docs/rules/wrap-iife
wrap-iife:
- 2
- "any"
# Require or disallow Yoda conditions.
# http://eslint.org/docs/rules/yoda
yoda:
- 0 # TODO(krotscheck): Discuss & Activate
- "never"
#############################################################################
# Strict Mode
#############################################################################
# (Deprecated) require or disallow the "use strict" pragma in global scope
# http://eslint.org/docs/rules/global-strict
global-strict: 0
# (Deprecated) disallow unnecessary use of "use strict";
# http://eslint.org/docs/rules/no-extra-strict
no-extra-strict: 0
# controls location of Use Strict Directives
# http://eslint.org/docs/rules/strict
strict:
- 0 # TODO(krotscheck): Discuss & Activate
- "function"
#############################################################################
# Variable declaration rules
#############################################################################
# Disallow the catch clause parameter name being the same as a variable in
# the outer scope
# http://eslint.org/docs/rules/no-catch-shadow
no-catch-shadow: 2
# Disallow deletion of variables
# http://eslint.org/docs/rules/no-delete-var
no-delete-var: 2
# Disallow labels that share a name with a variable
# http://eslint.org/docs/rules/no-label-var
no-label-var: 2
# Disallow shadowing of names such as arguments
# http://eslint.org/docs/rules/no-shadow-restricted-names
no-shadow-restricted-names: 2
# Disallow declaration of variables already declared in the outer scope
# http://eslint.org/docs/rules/no-shadow
no-shadow: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of undefined when initializing variables
# http://eslint.org/docs/rules/no-undef-init
no-undef-init: 2
# Disallow use of undeclared variables unless mentioned in a /*global */ block
# http://eslint.org/docs/rules/no-undef
no-undef: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of undefined variable
# http://eslint.org/docs/rules/no-undefined
no-undefined: 0 # TODO(krotscheck): Discuss & Activate
# Disallow declaration of variables that are not used in the code
# http://eslint.org/docs/rules/no-unused-vars
no-unused-vars: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of variables before they are defined
# http://eslint.org/docs/rules/no-use-before-define
no-use-before-define: 0 # TODO(krotscheck): Discuss & Activate
#############################################################################
# Node.js rules
#############################################################################
# Enforces error handling in callbacks
# http://eslint.org/docs/rules/handle-callback-err
handle-callback-err: 2
# Disallow mixing regular variable and require declarations
# http://eslint.org/docs/rules/no-mixed-requires
no-mixed-requires: 2
# Disallow use of new operator with the require function
# http://eslint.org/docs/rules/no-new-require
no-new-require: 2
# Disallow string concatenation with __dirname and __filename
# http://eslint.org/docs/rules/no-path-concat
no-path-concat: 2
# Disallow process.exit()
# http://eslint.org/docs/rules/no-process-exit
no-process-exit: 2
# Restrict usage of specified node modules
# http://eslint.org/docs/rules/no-restricted-modules
no-restricted-modules: 0
# Disallow use of synchronous methods
# http://eslint.org/docs/rules/no-sync
no-sync: 2
#############################################################################
# Stylistic Changes
#############################################################################
# Enforce one true brace style
# http://eslint.org/docs/rules/brace-style
brace-style: 0 # TODO(krotscheck): Discuss & Activate
# Require camel case names
# http://eslint.org/docs/rules/camelcase
camelcase:
- 2
- properties: "never"
# Enforce spacing before and after comma
# http://eslint.org/docs/rules/comma-spacing
comma-spacing: 0 # TODO(krotscheck): Discuss & Activate
# Enforce one true comma style
# http://eslint.org/docs/rules/comma-style
comma-style: 2
# Enforces consistent naming when capturing the current execution context
# http://eslint.org/docs/rules/consistent-this
consistent-this:
- 0 # TODO(krotscheck): Discuss & Activate
- "self"
# Enforce newline at the end of file, with no multiple empty lines
# http://eslint.org/docs/rules/eol-last
eol-last: 2
# Require function expressions to have a name
# http://eslint.org/docs/rules/func-names
func-names: 0 # TODO(krotscheck): Discuss & Activate
# Enforces use of function declarations or expressions
# http://eslint.org/docs/rules/func-style
func-style: 0
# This option sets a specific tab width for your code
# http://eslint.org/docs/rules/indent
indent:
- 2 # TODO(krotscheck): Discuss & Activate
- 2
# Enforces spacing between keys and values in object literal properties
# http://eslint.org/docs/rules/key-spacing
key-spacing: 0 # TODO(krotscheck): Discuss & Activate
# Enforces empty lines around comments
# http://eslint.org/docs/rules/lines-around-comment
lines-around-comment: 0 # TODO(krotscheck): Discuss & Activate
# Disallow mixed 'LF' and 'CRLF' as linebreaks
# http://eslint.org/docs/rules/linebreak-style
linebreak-style:
- 2
- "unix"
# Specify the maximum depth callbacks can be nested
# http://eslint.org/docs/rules/max-nested-callbacks
max-nested-callbacks:
- 0 # TODO(krotscheck): Discuss & Activate
- 3
# Require a capital letter for constructors
# http://eslint.org/docs/rules/new-cap
new-cap: 0 # TODO(krotscheck): Discuss & Activate
# Disallow the omission of parentheses when invoking a constructor
# http://eslint.org/docs/rules/new-parens
new-parens: 2
# allow/disallow an empty newline after var statement
# http://eslint.org/docs/rules/newline-after-var
newline-after-var: 0
# Disallow use of the Array constructor
# http://eslint.org/docs/rules/no-array-constructor
no-array-constructor: 0 # TODO(krotscheck): Discuss & Activate
# Disallow use of the continue statement
# http://eslint.org/docs/rules/no-continue
no-continue: 0
# Disallow comments inline after code
# http://eslint.org/docs/rules/no-inline-comments
no-inline-comments: 0
# disallow if as the only statement in an else block
# http://eslint.org/docs/rules/no-lonely-if
no-lonely-if: 0
# Disallow mixed spaces and tabs for indentation
# http://eslint.org/docs/rules/no-mixed-spaces-and-tabs
no-mixed-spaces-and-tabs: 2
# Disallow multiple empty lines
# http://eslint.org/docs/rules/no-multiple-empty-lines
no-multiple-empty-lines:
- 2
- max: 1
# Disallow nested ternary expressions
# http://eslint.org/docs/rules/no-nested-ternary
no-nested-ternary: 0
# Disallow use of the Object constructor
# http://eslint.org/docs/rules/no-new-object
no-new-object: 1
# (Deprecated) Disallow space before semicolon
# http://eslint.org/docs/rules/no-space-before-semi
no-space-before-semi: 0
# Disallow space between function identifier and application
# http://eslint.org/docs/rules/no-spaced-func
no-spaced-func: 0 # TODO(krotscheck): Discuss & Activate
# Disallow the use of ternary operators
# http://eslint.org/docs/rules/no-ternary
no-ternary: 0
# Disallow trailing whitespace at the end of lines
# http://eslint.org/docs/rules/no-trailing-spaces
no-trailing-spaces: 2
# Disallow dangling underscores in identifiers
# http://eslint.org/docs/rules/no-underscore-dangle
no-underscore-dangle: 0 # TODO(krotscheck): Discuss & Activate
# Disallow the use of Boolean literals in conditional expressions
# http://eslint.org/docs/rules/no-unneeded-ternary
no-unneeded-ternary: 0 # TODO(krotscheck): Discuss & Activate
# Disallow wrapping of non-IIFE statements in parens
# http://eslint.org/docs/rules/no-wrap-func
no-wrap-func: 0 # TODO(krotscheck): Discuss & Activate
# Require or disallow padding inside curly braces
# http://eslint.org/docs/rules/object-curly-spacing
object-curly-spacing: 0 # TODO(krotscheck): Discuss & Activate
# Allow or disallow one variable declaration per function
# http://eslint.org/docs/rules/one-var
one-var:
- 2
- uninitialized: "always"
initialized: "never"
# Prevent assignment operator shorthand where possible
# http://eslint.org/docs/rules/operator-assignment
operator-assignment:
- 0 # TODO(krotscheck): Discuss & Activate
- "never"
# Enforce operators to be placed before or after line breaks
# http://eslint.org/docs/rules/operator-linebreak
operator-linebreak: 2
# Enforce padding within blocks
# http://eslint.org/docs/rules/padded-blocks
padded-blocks: 0
# Require quotes around object literal property names
# http://eslint.org/docs/rules/quote-props
quote-props: 0 # TODO(krotscheck): Discuss & Activate
# Specify whether backticks, double or single quotes should be used
# http://eslint.org/docs/rules/quotes
quotes:
- 0 # TODO(krotscheck): Discuss & Activate
- 'single'
# Enforce spacing before and after semicolons
# http://eslint.org/docs/rules/semi-spacing
semi-spacing: 0 # TODO(krotscheck): Discuss & Activate
# Require or disallow use of semicolons instead of ASI
# http://eslint.org/docs/rules/semi
semi:
- 2
- 'always'
# Sort variables within the same declaration block
# http://eslint.org/docs/rules/sort-vars
sort-vars: 0
# (Deprecated) Require a space after function names
# http://eslint.org/docs/rules/space-after-function-name
space-after-function-name: 0
# Require a space after certain keywords
# http://eslint.org/docs/rules/space-after-keywords
space-after-keywords: 2
# require or disallow space before blocks
# http://eslint.org/docs/rules/space-before-blocks
space-before-blocks:
- 2
- "always"
# Require or disallow space before function opening parenthesis
# http://eslint.org/docs/rules/space-before-function-paren
space-before-function-paren:
- 0 # TODO(krotscheck): Discuss & Activate
- "always"
# (Deprecated) Require or disallow space before function parentheses
# http://eslint.org/docs/rules/space-before-function-parentheses
space-before-function-parentheses: 0
# Require or disallow spaces inside brackets
# http://eslint.org/docs/rules/space-in-brackets
space-in-brackets: 0 # TODO(krotscheck): Discuss & Activate
# require or disallow spaces inside parentheses
# http://eslint.org/docs/rules/space-in-parens
space-in-parens: 0 # TODO(krotscheck): Discuss & Activate
# Require spaces around operators
# http://eslint.org/docs/rules/space-infix-ops
space-infix-ops: 2
# Require a space after return, throw, and case
# http://eslint.org/docs/rules/space-return-throw-case
space-return-throw-case: 2
# Require or disallow spaces before/after unary operators (words on by default, nonwords)
# http://eslint.org/docs/rules/space-unary-ops
space-unary-ops:
- 2
- words: true
nonwords: false
# (deprecated) Require or disallow spaces before/after unary operators (words on by default, nonwords)
# http://eslint.org/docs/rules/space-unary-word-ops
space-unary-word-ops: 0
# Require or disallow a space immediately following the // in a line comment
# http://eslint.org/docs/rules/spaced-line-comment
spaced-line-comment: 0 # TODO(krotscheck): Discuss & Activate
# require regex literals to be wrapped in parentheses
# http://eslint.org/docs/rules/wrap-regex
wrap-regex: 0
#############################################################################
# ECMAScript 6 (All Off)
#############################################################################
# enforce the spacing around the * in generator functions
# http://eslint.org/docs/rules/generator-star-spacing
generator-star-spacing: 0
# (deprecated) enforce the position of the * in generator functions
# http://eslint.org/docs/rules/generator-star
generator-star: 0
# require let or const instead of var
# http://eslint.org/docs/rules/no-var
no-var: 0
# require method and property shorthand syntax for object literals
# http://eslint.org/docs/rules/object-shorthand
object-shorthand: 0
# suggest using of const declaration for variables that are never modified after declared
# http://eslint.org/docs/rules/prefer-const
prefer-const: 0
#############################################################################
# Legacy
#############################################################################
# specify the maximum depth that blocks can be nested
# http://eslint.org/docs/rules/max-depth
max-depth: 0
# specify the maximum length of a line in your program
# http://eslint.org/docs/rules/max-len
max-len:
- 2
- 100
# Limits the number of parameters that can be used in function declaration.
# http://eslint.org/docs/rules/max-params
max-params: 0
# Specify the maximum number of statements allowed in a function
# http://eslint.org/docs/rules/max-statements
max-statements: 0
# Disallow use of bitwise operators
# http://eslint.org/docs/rules/no-bitwise
no-bitwise: 0
# Disallow use of unary operators, ++ and --
# http://eslint.org/docs/rules/no-plusplus
no-plusplus: 0
# We only support ECMA5, disable everything else.
ecmaFeatures:
arrowFunctions: false
binaryLiterals: false
blockBindings: false
classes: false
defaultParams: false
destructuring: false
forOf: false
generators: false
modules: false
objectLiteralComputedProperties: false
objectLiteralDuplicateProperties: false
objectLiteralShorthandMethods: false
objectLiteralShorthandProperties: false
octalLiterals: false
regexUFlag: false
regexYFlag: false
restParams: false
spread: false
superInFunctions: false
templateStrings: false
unicodeCodePointEscapes: false
globalReturn: false
jsx: false

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# IDE Exclusions
*.iml
.idea/
# Node generated files
package/
node_modules/
npm-debug.log

176
LICENSE Normal file
View File

@ -0,0 +1,176 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

15
README.md Normal file
View File

@ -0,0 +1,15 @@
# eslint-config-openstack
OpenStack has a set of style guidelines for clarity. OpenStack is a very large code base, spanning
dozens of git trees, with over a thousand developers contributing every 6 months. As such, common
style helps developers understand code in reviews, move between projects smoothly, and overall make
the code more maintainable.
Even though eslint permits overriding rules on a per-project basis, it should be the goal of every
project to stay as close to the common guidelines as possible.
## Installation
1. `npm install --save-dev eslint eslint-config-openstack`
2. Add `extends: "openstack"` to your `.eslintrc`

33
index.js Normal file
View File

@ -0,0 +1,33 @@
/*
* Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
*
* Licensed under the Apache License, Version 2.0 (the 'License'); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
/**
* The default module for this package simply reads in the .eslintrc yaml file, and returns it
* as a module.
*/
(function () {
var yaml = require('js-yaml');
var fs = require('fs');
var path = require('path');
/*eslint-disable no-sync */
var rcPath = path.join(__dirname, '.eslintrc');
var fileContent = fs.readFileSync(rcPath);
/*eslint-enable no-sync */
module.exports = yaml.safeLoad(fileContent);
})();

39
package.json Normal file
View File

@ -0,0 +1,39 @@
{
"name": "eslint-config-openstack",
"version": "1.0.0",
"description": "JavaScript Style Guidelines for OpenStack.",
"main": "index.js",
"files": [
"index.js",
".eslintrc",
"LICENSE",
"README.md"
],
"scripts": {
"test": "jasmine",
"lint": "eslint ./"
},
"repository": {
"type": "git",
"url": "git@github.com:krotscheck/eslint-config-openstack.git"
},
"keywords": [
"eslint",
"eslintconfig",
"openstack"
],
"author": "OpenStack <openstack-dev@lists.openstack.org>",
"license": "Apache-2.0",
"bugs": {
"url": "https://github.com/krotscheck/eslint-config-openstack/issues"
},
"homepage": "https://github.com/krotscheck/eslint-config-openstack",
"peerDependencies": {
"eslint": "0.23.0"
},
"devDependencies": {
"eslint": "0.23.0",
"jasmine": "^2.3.1",
"js-yaml": "3.3.1"
}
}

23
spec/index.js Normal file
View File

@ -0,0 +1,23 @@
describe("Unit: eslint-config-openstack", function () {
it("should set espree as the default parser.", function () {
var config = require('../index');
expect(config.parser).toEqual('espree');
});
it("should disable all ecma6 features.", function () {
var config = require('../index');
var keys = Object.keys(config.ecmaFeatures);
keys.forEach(function (key) {
expect(config.ecmaFeatures[key]).toBeFalsy();
});
});
it("should disable all environments.", function () {
var config = require('../index');
expect(config.env).toBeFalsy();
});
});

10
spec/support/jasmine.json Normal file
View File

@ -0,0 +1,10 @@
{
"spec_dir": "spec",
"spec_files": [
"**/*.js",
"!helpers/**/*.js"
],
"helpers": [
"helpers/**/*.js"
]
}