IDE STS
03/05/2013 15:19
0
Boa tarde. Estou com uma dúvida em relação a IDE STS.

Vamos a situação:

Imagine a seguinte Domain:

class Teste{
String campo1
String campo2
String campo3

(...)
}


Tenho a codificação da controller e por aí vai. Se tenho uma referência no campo3 na minha controller, e por algum motivo eu resolvo tirar ele da Domain, ele não apresenta erro de compilação! Ele sublinha as referências em TODO o projeto, em um projeto grande, fica impossível encontrar essas referências. É até possível, mas tenho que varrer o sistema todo... nem preciso dizer que é um trabalho de estagiário do caramba e, espero, desnecessário.

Existe alguma forma de capturar isso na compilação?

Agradeço as respostas.
Tags: ide, sts, grails, compile, domain, erro


0
Olá, Eduardo.

Amigo, a linguagem Groovy é muito dinâmica. Logo o compilador raramente marca algo como erro, pois é muito comum a injeção de atributos e métodos em tempo de execução. Dai esse sublinhado apenas alerta "ei, isso não existe mas talvez venha a existir em runtime".

Porém se mandar o STS (melhor usar o GGTS, hein!) use o invocador de comando Grails e execute o "compile" que as vezes ele aponta alguns erros.

Abraços.


0
Bom dia Yoshi.

Obrigado pela resposta, mas estes erros ele não aponta com o 'compile'. Uma pena.

*Estou usando o GGTS.

Abs.


0
Então, Eduardo.

Como te disse. O Groovy (e consequentemente a IDE) não marca isso como erro pois não é um erro a principio. Como a linguagem e principalmente o framework Grails são muito dinâmicos, muitos métodos e atributos são injetados em tempo de execução.

Se essas coisas fossem marcadas como erro de compilação, seria uma linguagem altamente verbosa como o Java. Sei que isso as vezes atrapalha, mas é um preço a se pagar. Com o tempo acostuma e vê-se que isso não é um problema que desmereça a característica dinâmica do Groovy/Grails.

Mas com a evolução constante das IDEs, quem sabe numa nova versão passe a constar não um erro, mas um aviso mais explícito do tipo "método/atributo não encontrado e pode causar erro em Runtime".


0
Boa noite Yoshi.

Era exatamente o que pensei sobre a IDE, estou buscando alguma forma de pelo menos ele me mostrar um warning, sei lá. Pois se ele marca esta opção, ele certamente varre a Domain em busca o atributo, quem sabe programo um plugin, sei lá.

A minha aplicação está ficando robusta, e uma mudança destas acaba ficando difícil de encontrar as devidas chamadas do atributo. Complicado. Mas como disse, um preço a ser pago pelo dinamismo da linguagem, mas, ainda assim, é algo muito chato de lidar.


Abs e boa noite.


0
Fala Eduardo,

Temos que aproveitar que a ferramenta é aberta para contribuirmos com sua evolução e ajudar a todos que precisam dela.

Não sei se tem como habilitar de alguma forma o que você quer, mas seria interessante postar uma issue para a evolução do código no https://issuetracker.springsource.com/browse/STS#selectedTab=com.atlassian.jira.plugin.system.project%3Asummary-panel ou até para os mais experientes fazer um fork no projeto e dar um pull dessa alteração.

Por fim, hoje eu trabalho com o IntelliJ e esta tem se mostrado a mais poderosa em minha opinião. Quando me deparo no caso descrito por você a IDE sublinha o atributo ou método que não existe na classe com a seguinte descrição "Cannot find declaration to go to".

Espero ter ajudado.

07/05/2013 12:46


0
Eduardo, verifica se as melhorias implementadas na versão 2.0 do Groovy pode te ajudar.
Dá uma olhada na sessão Static type checking do seguinte artigo para ver se te ajuda.
http://www.infoq.com/articles/new-groovy-20



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto