Как я могу исправить «Рефакторинг этой функции для последовательного использования« возврата »». от сонара js - PullRequest
0 голосов
/ 18 марта 2020

Я применяю анализ Sonar JS к своему проекту. В приведенном ниже коде обнаружена ошибка «Рефакторинг этой функции для последовательного использования« возврата »». Как я могу это исправить?

var filter1Depth = function(attr0, attr1, val){
        var id;
        if(val === "vAuto"){
            id = "AirConditioner.Indoor.Ventilator";
            val = "Auto";
        }
        return { // Error is generated from this line.
            field : attr0,
            operator: function(item, value){
                if(value == "") return true;
                if(!item || !item.length) return;

                var i, length = item.length;
                if(value == "undefined"){
                    for( i = 0; i < length; i++ ){
                        if(typeof item[i][attr1] === 'undefined'){
                            return true;
                        }
                    }
                }else{
                    for(i = 0; i < length; i++){
                        if(item[i][attr1] == value){
                            if(id){
                                 if(id === item[i]["id"]) return true;
                                 return;
                            }
                            return true;
                        }
                    }
                }

                return;
            },
            value : val
        };
    };

Другой пример, как показано ниже.

var filter1DepthNone = function(attr0, attr1, val){
        return { field : attr0, operator: function(item, value){ // error!!
            if(value == "") return true;
            if(!item || !item.length) return;

            var length = item.length;
            for(var i = 0; i < length; i++){
                if(item[i][attr1] != value){
                    return;
                }
            }

            return true;
        }, value : val};
    };

Мои коды, из которых генерируется эта ошибка, имеют похожий шаблон ..

1 Ответ

1 голос
/ 18 марта 2020

В некоторых блоках вы ничего не возвращаете (return;, поэтому undefined), но в других блоках той же функции вы возвращаете логическое значение (true / false).

Вам необходимо убедиться, что ваши возвращаемые значения соответствуют функции - то есть, если вы где-то возвращаете логическое значение, везде, где вы возвращаете значение в той же функции, вы также возвращаете логическое значение.

...