Tenho esse trecho de código javascript:
for (var j = 0; j < styles[i].stylers.length; j++) {
for (var p in styles[i].stylers[j]) {
var ruleArg = styles[i].stylers[j][p];
if (p == 'hue' || p == 'color') {
ruleArg = '0x' + ruleArg.substring(1);
}
styleRule.push(p + ':' + ruleArg);
}
}
Na imagem seguinte recebe essa informação do sonar:
Aplicada a sugestão de correção, pelo próprio sonar:
for (var j = 0; j < styles[i].stylers.length; j++) {
for (var p in styles[i].stylers[j]) {
if (styles[i].stylers[j].hasOwnProperty(p)) {//aqui inseri a correção sugerida
var ruleArg = styles[i].stylers[j][p];
if (p == 'hue' || p == 'color') {
ruleArg = '0x' + ruleArg.substring(1);
}
styleRule.push(p + ':' + ruleArg);
}
}
}
Do ponto de vista da sugestão do Sonar, o código inserido está correto?
Parece que sim. O sonar ainda está acusando erro?
Antes tinham 12 bugs reportados, agora 0.
No build do jenkins tenho isso:
Poderia apontar onde pode estar o erro no trecho de código anterior?
Na minha época de javascript (há muito, muito tempo atrás) era considero uma má prática usar o for...in
para percorrer arrays, acho que justamente por isso o sonar pede esse if a mais.
Você pode usar o método forEach
do array em si, ou nesse caso talvez até um map. Algo assim:
styles[i].stylers[j].forEach( (elemento, indice) => {
var ruleArg = styles[i].stylers[j][p];
if (p == 'hue' || p == 'color') {
ruleArg = '0x' + ruleArg.substring(1);
}
styleRule.push(p + ':' + ruleArg);
});
1 curtida
Note que minha resposta anterior foi antes dessa nova falha do build.
A parte do log que você postou não mostra o motivo da falha.
No log deve ter uma seção chamada “Quality Gates Sonarqube Plugin” que mostra porque está falhando agora.
1 curtida
Detalhe que o erro do sonar (onde está 0.0%) é para a cobertura dos testes, e não para possíveis erros no código.