Ferramenta de validação de convenção de nomenclatura  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
legionarioba
JavaTeenager
[Avatar]

Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline

Boa tarde PessoALL,

Estou trabalhando em uma aplicação multi-modular, com uma estrutura relativamente complexa, e estou configurando o comportamento transacional através de Spring AOP. Gostaria de, no meu processo de integração contínua( e desenvolvimento no Eclipse também), fiscalizar que os nomes dos métodos utilizados em um determinado package (br.corporacao.*.services.*), sigam determinada nomenclatura, pra que eu possa garantir que o comportamento transacional irá funcionar com corretude(sem ter que esperar assertividade precisa dos desenvolvedores da equipe, e garantindo o comportamento em todos os módulos do sistema). Existe alguma ferramenta capaz de executar tal tarefa?

http://silvioluiz.wordpress.com
[Email] [MSN]
enantiomero
JavaEvangelist

Membro desde: 23/04/2008 09:44:26
Mensagens: 304
Offline

Que tipo de nomenclatura? Talvez você possa escrever uma regra para o ou para o PMD ( http://pmd.sourceforge.net/integrations.html ) ou para o CheckStyle ( http://eclipse-cs.sourceforge.net/ ).

legionarioba
JavaTeenager
[Avatar]

Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline

Não, os dois não se aplicam a meu caso...

O que quero é algo como nesse exemplo:

Método transacional : gravarUsuario, gravarPolitica, (gravar*)

Método leitura : obterUsuarios, obterPoliticas, obter*

Eu quero validar que meus métodos estão seguindo tais regras...



http://silvioluiz.wordpress.com
[Email] [MSN]
pablosaraiva
JavaGuru

Membro desde: 27/03/2009 17:08:37
Mensagens: 243
Offline

Minha sugestão é criar uma ferramenta que vai varrer seu código fonte OU buscar o nome dos métodos através de reflexão.

Após isso, aplicar expressões regulares.

Existem 10 tipos de pessoas no mundo. As que conhecem binário e as que não.
legionarioba
JavaTeenager
[Avatar]

Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline

Pablo,

Eu sei o que eu teria que fazer, em tese tive o mesmo pensamento dessa sua sugestão, a questão é, já existe alguma ferramenta que faça esse tipo de trabalho? Porque PMD, CheckStyle partem de definições inerentes aos mesmos, e inspecionam os fontes(seja via plugin no Eclipse, seja via Hudson, Maven). Gostaria de algo parecido, mas para o cenário que citei..




http://silvioluiz.wordpress.com
[Email] [MSN]
enantiomero
JavaEvangelist

Membro desde: 23/04/2008 09:44:26
Mensagens: 304
Offline

legionarioba wrote:Não, os dois não se aplicam a meu caso...

O que quero é algo como nesse exemplo:

Método transacional : gravarUsuario, gravarPolitica, (gravar*)

Método leitura : obterUsuarios, obterPoliticas, obter*

Eu quero validar que meus métodos estão seguindo tais regras...



Hum... como é que um programa sabe, lendo seus programas-fontes, que um método é de atualização ou de consulta? Você precisa criar uma regra, já que não sei se você usa Hibernate, se usa JDBC puro etc.
legionarioba
JavaTeenager
[Avatar]

Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline

Em meu caso seria uma regularExpression mesmo. Eu não teria como validar que uma regular expression obter* garanta comportamento apenas de leitura , e gravar* seja transacional. Mas se eu pelo menos pudesse validar que nas classes desse pacote, tivessem apenas assinatura dos dois tipos, ao menos conseguiria cobrir os casos em que o padrão fugiria dos dois. Não quero definir um padrão assim:

transacional: gravar*
leitura : *

entendeu? Ao menos isso já me daria garantia de evitar que métodos estivessem fora de um dos dois padrões ....

http://silvioluiz.wordpress.com
[Email] [MSN]
pablosaraiva
JavaGuru

Membro desde: 27/03/2009 17:08:37
Mensagens: 243
Offline

Na verdade o código validador não precisa saber se o método é de leitura, gravação ou qualquer outra coisa.

Ele seria um classificador.

Pega o método A. Começa por gravar? O restante da nomenclatura está correta? Classifica como gravação.
Pega o método B. Começa por obter? O restante da nomenclatura está correta? Classifica como leitura.
Pega o método C. Começa por get? Exibe um alerta mostrando que o método está fora da nomenclatura do projeto.


(Desculpe, mensagem enviada antes de ver a mensagem anterior. Vou manter só por motivos históricos)

This message was edited 1 time. Last update was at 18/09/2009 18:18:21


Existem 10 tipos de pessoas no mundo. As que conhecem binário e as que não.
enantiomero
JavaEvangelist

Membro desde: 23/04/2008 09:44:26
Mensagens: 304
Offline

http://pmd.sourceforge.net/howtowritearule.html

Acho que dá para criar uma regra do tipo "Para uma classe no pacote br.corporacao.*.services.*, os métodos públicos devem ter o nome "gravar[A-Z][a-zA-Z0-9]*" ou "obter[A-Z][a-zA-Z0-9]*" .

Pegue seu desenvolvedor que acabou de ter aquela matéria de Construção de Compiladores e sabe tudo sobre parsing, e passe o abacaxi para ele.
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team