2016-10-08 3 views
0

ich diesen Code für ein Mungo-Schema geschrieben habe:Sonarqube vs eslint Regeln (benannte Funktion vs anonymer Funktion)

localeTypesSchema.statics.findAndModify = 
    function findAndModify(query, sort, update, options, callback) { 
     const promised = q.nbind(this.collection.findAndModify, this.collection); 
     return promised(query || {}, sort || [], update || {}, options, callback); 
    }; 

Sonarqube ist (major, Codegeruch) über Make this function anonymous by removing its name (cross-browser, user-experience) beschweren.

Wenn ich den Namen dann entfernen eslint Verlängerung airbnb beschwert (Warnung) über [eslint] Missing function expression name. (func-names).

Ich kann es nicht in eine Pfeilfunktion umwandeln, da es this verwendet, und this sollte an Funktionsaufrufer und nicht an Umfang der Pfeilfunktion gebunden werden.

Wie soll ich den Code schreiben?

Antwort

1

Beide Optionen können gültig sein: Lesen Sie die Beschreibung des SonarQube rule und des eslint rule. Tatsächlich kann die Eslint-Regel so konfiguriert werden, dass eine Wahl durchgesetzt wird oder die Gegensätzliche. Tools helfen nur, wenn Sie eine Regel durchsetzen wollen.

+0

Also gibt es einen Weg, dass ich alle Regeln in 'airbnb' eslint Erweiterung verwenden kann? – David

+0

Wenn Sie möchten, dass Funktionsausdrücke benannt werden, sollten Sie die SonarQube-Regel deaktivieren. –

+0

Ich kann die SonarQube-Rolle nicht finden, die deaktiviert werden sollte. Kannst du mir bitte helfen? –