GillesRasigade/pattern

View on GitHub

Showing 46 of 46 total issues

Function reconnect has a Cognitive Complexity of 19 (exceeds 5 allowed). Consider refactoring.
Open

  reconnect() {
    const self = this;
    const ws = this.ws;

    self._attempts = 0;
Severity: Minor
Found in src/Queue/QueueWebSocket.js - About 2 hrs to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Function main has 45 lines of code (exceeds 25 allowed). Consider refactoring.
Open

function* main() {
  // let { mapper, commandEmitter, commandHandler, stateEmitter, stateHandler } =
  yield before();

  const user = {};
Severity: Minor
Found in doc/examples/cqrs/index.js - About 1 hr to fix

    Function reconnect has 36 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

      reconnect() {
        const self = this;
        const ws = this.ws;
    
        self._attempts = 0;
    Severity: Minor
    Found in src/Queue/QueueWebSocket.js - About 1 hr to fix

      Function reconnect has 28 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          const cb = co.wrap(function* reconnect() {
            if (self._attempts >= self.WEBSOCKET_RECONNECT_MAX_ATTEMPTS) {
              return false;
            }
      
      
      Severity: Minor
      Found in src/Queue/QueueWebSocket.js - About 1 hr to fix

        Function onMessage has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
        Open

          onMessage(message, flags = {}) {
            if (flags.binary) {
              throw new Error('Binary flag not yet supported =)');
            } else {
              const data = JSON.parse(message);
        Severity: Minor
        Found in src/Queue/QueueWebSocket.js - About 1 hr to fix

        Cognitive Complexity

        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

        A method's cognitive complexity is based on a few simple rules:

        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
        • Code is considered more complex for each "break in the linear flow of the code"
        • Code is considered more complex when "flow breaking structures are nested"

        Further reading

        Function replay has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
        Open

          replay() {
            const self = this;
            return co(function* replay() {
              self._replaying = true;
        
        
        Severity: Minor
        Found in src/EventSourcing/EventSourcing.js - About 55 mins to fix

        Cognitive Complexity

        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

        A method's cognitive complexity is based on a few simple rules:

        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
        • Code is considered more complex for each "break in the linear flow of the code"
        • Code is considered more complex when "flow breaking structures are nested"

        Further reading

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

            if (this.txChannel) {
              this.txChannel.close();
              this.tx.close.bind(this.tx, callback);
            }
        Severity: Minor
        Found in src/Queue/QueueAmqp.js and 1 other location - About 40 mins to fix
        src/Queue/QueueAmqp.js on lines 118..121

        Duplicated Code

        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

        Tuning

        This issue has a mass of 49.

        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

        Refactorings

        Further Reading

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

          get queueName() {
            return this._options.queue.name !== undefined ? this._options.queue.name : this.name;
          }
        Severity: Minor
        Found in src/Queue/QueueAmqp.js and 1 other location - About 40 mins to fix
        src/Queue/QueueAmqp.js on lines 90..92

        Duplicated Code

        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

        Tuning

        This issue has a mass of 49.

        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

        Refactorings

        Further Reading

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

            if (this.rxChannel) {
              this.rxChannel.close();
              this.rx.close.bind(this.rx, callback);
            }
        Severity: Minor
        Found in src/Queue/QueueAmqp.js and 1 other location - About 40 mins to fix
        src/Queue/QueueAmqp.js on lines 122..125

        Duplicated Code

        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

        Tuning

        This issue has a mass of 49.

        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

        Refactorings

        Further Reading

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

          get exchangeName() {
            return this._options.exchange.name !== undefined ? this._options.exchange.name : this.name;
          }
        Severity: Minor
        Found in src/Queue/QueueAmqp.js and 1 other location - About 40 mins to fix
        src/Queue/QueueAmqp.js on lines 86..88

        Duplicated Code

        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

        Tuning

        This issue has a mass of 49.

        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

        Refactorings

        Further Reading

        Function _defineGettersSetters has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
        Open

          static _defineGettersSetters(constructor) {
            const schema = constructor.SCHEMA;
            if (schema && schema.properties) {
               // eslint-disable-next-line no-restricted-syntax
              for (const key in schema.properties) {
        Severity: Minor
        Found in src/Entity/Entity.js - About 35 mins to fix

        Cognitive Complexity

        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

        A method's cognitive complexity is based on a few simple rules:

        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
        • Code is considered more complex for each "break in the linear flow of the code"
        • Code is considered more complex when "flow breaking structures are nested"

        Further reading

        Function close has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
        Open

          close(callback) {
            if (this.ws) {
              if (this._supervisor) {
                this._supervisor.removeAllListeners();
                this._supervisor.close(1000, '');
        Severity: Minor
        Found in src/Queue/QueueWebSocket.js - About 35 mins to fix

        Cognitive Complexity

        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

        A method's cognitive complexity is based on a few simple rules:

        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
        • Code is considered more complex for each "break in the linear flow of the code"
        • Code is considered more complex when "flow breaking structures are nested"

        Further reading

        Identical blocks of code found in 2 locations. Consider refactoring.
        Open

        return co(main.apply(null, process.argv.slice(2)))
        .then(console.log, console.error);
        Severity: Minor
        Found in doc/examples/mapper-mongodb.js and 1 other location - About 30 mins to fix
        doc/examples/entity.js on lines 50..51

        Duplicated Code

        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

        Tuning

        This issue has a mass of 45.

        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

        Refactorings

        Further Reading

        Identical blocks of code found in 2 locations. Consider refactoring.
        Open

        return co(main.apply(null, process.argv.slice(2)))
        .then(console.log, console.error);
        Severity: Minor
        Found in doc/examples/entity.js and 1 other location - About 30 mins to fix
        doc/examples/mapper-mongodb.js on lines 43..44

        Duplicated Code

        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

        Tuning

        This issue has a mass of 45.

        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

        Refactorings

        Further Reading

        This generator function does not have 'yield'.
        Open

          * close() {
        Severity: Minor
        Found in src/Mapper/MapperMongoDb.js by eslint

        Disallow generator functions that do not have yield (require-yield)

        Rule Details

        This rule generates warnings for generator functions that do not have the yield keyword.

        Examples

        Examples of incorrect code for this rule:

        /*eslint require-yield: "error"*/
        /*eslint-env es6*/
        
        function* foo() {
          return 10;
        }

        Examples of correct code for this rule:

        /*eslint require-yield: "error"*/
        /*eslint-env es6*/
        
        function* foo() {
          yield 5;
          return 10;
        }
        
        function foo() {
          return 10;
        }
        
        // This rule does not warn on empty generator functions.
        function* foo() { }

        When Not To Use It

        If you don't want to notify generator functions that have no yield expression, then it's safe to disable this rule.

        Related Rules

        Calls to require() should use string literals
        Open

              schema = require(path); // eslint-disable-line global-require
        Severity: Minor
        Found in src/Validator/Validator.js by eslint

        For more information visit Source: http://eslint.org/docs/rules/

        Do not access Object.prototype method 'hasOwnProperty' from target object.
        Open

            } else if (obj.hasOwnProperty('schema')) {
        Severity: Minor
        Found in src/Validator/Validator.js by eslint

        Disallow use of Object.prototypes builtins directly (no-prototype-builtins)

        In ECMAScript 5.1, Object.create was added, which enables the creation of objects with a specified [[Prototype]]. Object.create(null) is a common pattern used to create objects that will be used as a Map. This can lead to errors when it is assumed that objects will have properties from Object.prototype. This rule prevents calling Object.prototype methods directly from an object.

        Rule Details

        This rule disallows calling some Object.prototype methods directly on object instances.

        Examples of incorrect code for this rule:

        /*eslint no-prototype-builtins: "error"*/
        
        var hasBarProperty = foo.hasOwnProperty("bar");
        
        var isPrototypeOfBar = foo.isPrototypeOf(bar);
        
        var barIsEnumerable = foo.propertyIsEnumerable("bar");

        Examples of correct code for this rule:

        /*eslint no-prototype-builtins: "error"*/
        
        var hasBarProperty = Object.prototype.hasOwnProperty.call(foo, "bar");
        
        var isPrototypeOfBar = Object.prototype.isPrototypeOf.call(foo, bar);
        
        var barIsEnumerable = {}.propertyIsEnumerable.call(foo, "bar");

        When Not To Use It

        You may want to turn this rule off if you will never use an object that shadows an Object.prototype method or which does not inherit from Object.prototype. Source: http://eslint.org/docs/rules/

        Expected 'this' to be used by class method 'accessor'.
        Open

          accessor() {
        Severity: Minor
        Found in src/Entity/Entity.js by eslint

        Enforce that class methods utilize this (class-methods-use-this)

        If a class method does not use this, it can safely be made a static function.

        It's possible to have a class method which doesn't use this, such as:

        class A {
            constructor() {
                this.a = "hi";
            }
        
            print() {
                console.log(this.a);
            }
        
            sayHi() {
                console.log("hi");
            }
        }
        
        let a = new A();
        a.sayHi(); // => "hi"

        In the example above, the sayHi method doesn't use this, so we can make it a static method:

        class A {
            constructor() {
                this.a = "hi";
            }
        
            print() {
                console.log(this.a);
            }
        
            static sayHi() {
                console.log("hi");
            }
        }
        
        A.sayHi(); // => "hi"

        Also note in the above examples that the code calling the function on an instance of the class (let a = new A(); a.sayHi();) changes to calling it on the class itself (A.sayHi();).

        Rule Details

        This rule is aimed to flag class methods that do not use this.

        Examples of incorrect code for this rule:

        /*eslint class-methods-use-this: "error"*/
        /*eslint-env es6*/
        
        class A {
            foo() {
                console.log("Hello World");     /*error Expected 'this' to be used by class method 'foo'.*/
            }
        }

        Examples of correct code for this rule:

        /*eslint class-methods-use-this: "error"*/
        /*eslint-env es6*/
        class A {
            foo() {
                this.bar = "Hello World"; // OK, this is used
            }
        }
        
        class A {
            constructor() {
                // OK. constructor is exempt
            }
        }
        
        class A {
            static foo() {
                // OK. static methods aren't expected to use this.
            }
        }

        Options

        Exceptions

        "class-methods-use-this": [<enabled>, { "exceptMethods": [&lt;...exceptions&gt;] }]</enabled>

        The exceptMethods option allows you to pass an array of method names for which you would like to ignore warnings.

        Examples of incorrect code for this rule when used without exceptMethods:

        /*eslint class-methods-use-this: "error"*/
        
        class A {
            foo() {
            }
        }

        Examples of correct code for this rule when used with exceptMethods:

        /*eslint class-methods-use-this: ["error", { "exceptMethods": ["foo"] }] */
        
        class A {
            foo() {
            }
        }

        Source: http://eslint.org/docs/rules/

        Use the spread operator instead of '.apply()'.
        Open

                const result = self[event.method].apply(self, event.args);
        Severity: Minor
        Found in src/EventSourcing/EventSourcing.js by eslint

        Suggest using the spread operator instead of .apply(). (prefer-spread)

        Before ES2015, one must use Function.prototype.apply() to call variadic functions.

        var args = [1, 2, 3, 4];
        Math.max.apply(Math, args);

        In ES2015, one can use the spread operator to call variadic functions.

        /*eslint-env es6*/
        
        var args = [1, 2, 3, 4];
        Math.max(...args);

        Rule Details

        This rule is aimed to flag usage of Function.prototype.apply() in situations where the spread operator could be used instead.

        Examples

        Examples of incorrect code for this rule:

        /*eslint prefer-spread: "error"*/
        
        foo.apply(undefined, args);
        foo.apply(null, args);
        obj.foo.apply(obj, args);

        Examples of correct code for this rule:

        /*eslint prefer-spread: "error"*/
        
        // Using the spread operator
        foo(...args);
        obj.foo(...args);
        
        // The `this` binding is different.
        foo.apply(obj, args);
        obj.foo.apply(null, args);
        obj.foo.apply(otherObj, args);
        
        // The argument list is not variadic.
        // Those are warned by the `no-useless-call` rule.
        foo.apply(undefined, [1, 2, 3]);
        foo.apply(null, [1, 2, 3]);
        obj.foo.apply(obj, [1, 2, 3]);

        Known limitations:

        This rule analyzes code statically to check whether or not the this argument is changed. So, if the this argument is computed in a dynamic expression, this rule cannot detect a violation.

        /*eslint prefer-spread: "error"*/
        
        // This warns.
        a[i++].foo.apply(a[i++], args);
        
        // This does not warn.
        a[++i].foo.apply(a[i], args);

        When Not To Use It

        This rule should not be used in ES3/5 environments.

        In ES2015 (ES6) or later, if you don't want to be notified about Function.prototype.apply() callings, you can safely disable this rule.

        Related Rules

        Expected 'this' to be used by class method 'getObjectCollectionName'.
        Open

          getObjectCollectionName(obj) {
        Severity: Minor
        Found in src/Mapper/MapperMongoDb.js by eslint

        Enforce that class methods utilize this (class-methods-use-this)

        If a class method does not use this, it can safely be made a static function.

        It's possible to have a class method which doesn't use this, such as:

        class A {
            constructor() {
                this.a = "hi";
            }
        
            print() {
                console.log(this.a);
            }
        
            sayHi() {
                console.log("hi");
            }
        }
        
        let a = new A();
        a.sayHi(); // => "hi"

        In the example above, the sayHi method doesn't use this, so we can make it a static method:

        class A {
            constructor() {
                this.a = "hi";
            }
        
            print() {
                console.log(this.a);
            }
        
            static sayHi() {
                console.log("hi");
            }
        }
        
        A.sayHi(); // => "hi"

        Also note in the above examples that the code calling the function on an instance of the class (let a = new A(); a.sayHi();) changes to calling it on the class itself (A.sayHi();).

        Rule Details

        This rule is aimed to flag class methods that do not use this.

        Examples of incorrect code for this rule:

        /*eslint class-methods-use-this: "error"*/
        /*eslint-env es6*/
        
        class A {
            foo() {
                console.log("Hello World");     /*error Expected 'this' to be used by class method 'foo'.*/
            }
        }

        Examples of correct code for this rule:

        /*eslint class-methods-use-this: "error"*/
        /*eslint-env es6*/
        class A {
            foo() {
                this.bar = "Hello World"; // OK, this is used
            }
        }
        
        class A {
            constructor() {
                // OK. constructor is exempt
            }
        }
        
        class A {
            static foo() {
                // OK. static methods aren't expected to use this.
            }
        }

        Options

        Exceptions

        "class-methods-use-this": [<enabled>, { "exceptMethods": [&lt;...exceptions&gt;] }]</enabled>

        The exceptMethods option allows you to pass an array of method names for which you would like to ignore warnings.

        Examples of incorrect code for this rule when used without exceptMethods:

        /*eslint class-methods-use-this: "error"*/
        
        class A {
            foo() {
            }
        }

        Examples of correct code for this rule when used with exceptMethods:

        /*eslint class-methods-use-this: ["error", { "exceptMethods": ["foo"] }] */
        
        class A {
            foo() {
            }
        }

        Source: http://eslint.org/docs/rules/

        Severity
        Category
        Status
        Source
        Language