Como resolver os warnings do ModelDef e ViewDef

Hoje vou mostrar como resolver aqueles warnings de função nunca usada em fontes em MVC.

Se você desenvolve códigos MVC em AdvPL, já deve ter percebido que as funções estáticas ModelDef e ViewDef não são chamadas em nenhum lugar.

O motivo disso, é que nesse paradigma de programação, quem controla as chamadas é a uma camada mais abaixo, via StaticCall, por isso não precisamos nos preocupar em chamar as funções.

Porém em algumas versões do Protheus, ao compilar, no VSCode é exibido aquela mensagem de função nunca chamada (function never called).

Para resolvermos isso, é simples, a lógica seria mais ou menos assim:

  • Na sua User Function, crie uma variável numérica, com o conteúdo por exemplo, igual a 1
  • No fim dela, antes do Return, adicione um “dumb test”, testando se essa variável é igual a 0
  • Dentro desse dumb, adicione as chamadas da ViewDef e da ModelDef

Então basicamente, o que fizemos foi criar uma variável com um conteúdo específico, e adicionar um if que nunca terá a condição como verdadeira, então nunca entrará dentro do conteúdo.

Abaixo um exemplo (note a variável nIgnore):

User Function zTSTA04()
	Local aArea   := GetArea()
	Local oBrowse
	Local nIgnore := 1
	Private aRotina := {}

	//Definicao do menu
	aRotina := MenuDef()

	//Instanciando o browse
	oBrowse := FWMBrowse():New()
	oBrowse:SetAlias(cTabPai)
	oBrowse:SetDescription(cTitulo)
	oBrowse:DisableDetails()
	oBrowse:DisableReport()

	//Ativa a Browse
	oBrowse:Activate()

	//Tratativa para ignorar warnings de ViewDef e ModelDef nunca chamados
	If nIgnore == 0
		ModelDef()
		ViewDef()
	EndIf

	RestArea(aArea)
Return Nil

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

2 Responses

  1. Marco Nagoa - Conectar disse:

    Pois é rapaz, boa idéia, grato!

Deixe uma resposta