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 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?
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!
— Lucas Almeida 25 de Jun de 2019Bom 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?
— CAIO CESAR HENRIQUE 02 de Jul de 2019