ExistBlock - Sonarqube

Bom dia senhores, Fui passar um fonte no sonarqube e esta apresentando API em LOOP nessa linha:


If ExistBlock("EXMLPROD")

Não entendi, eu vou substituir pelo o que?

Bom dia!

Essa mensagem é gerada quando alguma função em específico (GetMv, etc) está dentro de um loop de repetição (While ou For).

Verifique se esse ExistBlock encontra-se dentro de um While ou For, mova-o para fora essa estrutura de repetição e valide o fonte novamente.

Eu sei disso, a duvida é sobre o ExistBlock especificamente. Como vou colocar fora do While ou For se é uma condição(IF) ? O que você aconselha?

Você tem que analisar a necessidade deste Existblock ser chamado dentro do Looping para validar a condição. Tem como validar o mesmo FORA do loop? O fato é que o Sonar agora vai criticar estas funções que ficam em Loop e precisamos buscar uma alternativa fora dele. Qual o contexto da sua customização? O que é feito dentro da função chamada no ExistBlock?

Boa tarde Lucas,

Na verdade não seria substituir, o SonarQube aponta isso para você remover o ExistBlock do loop e colocar o seu retorno por exemplo em uma variável local, evitando chamar diversas vezes o ExistBlock.

Por exemplo:


/*Código anterior*/
local lExmlProd as logical
local nLoopTest as numeric

lExmlProd := ExistBlock("EXMLPROD")

for nLoopTest := 1 to 10
    if lExmlProd
        ConOut("=D")
    endif
next
/*Código posterior*/

Entendi, obrigado pelo suporte!