monanadmin / monan

Repositório organizacional das atividades dos macro-grupos do MONAN - Model for Ocean-laNd-Atmosphere PredictioN
14 stars 10 forks source link

[GCC] GRC: Ferramenta e Workflow de Code Review na prática usando o GF [Spike] #356

Open joaomas opened 8 months ago

joaomas commented 8 months ago

User Story

COMO Saulo, QUEREMOS retomar o desenvolvimento da ferramenta de Code Review, PARA iniciar o uso desta ferramenta no processo de revisão do código.

:clipboard: Critérios de aceite de conclusão da Issue

Detalhamento adicional da atividade

Se possível automatizar uma regra, que poderia ser:

Impactos

N.A

Dependências

N.A

Solução

Image

Regras obrigatórias selecionadas do DTN01.

4.10 - O atributo intent deve ser usado para todos argumentos em uma função ou subrotina, com exceção de ponteiros e estruturas (tipos) o que não é definido pelo padrão. Deixa clara a intenção do argumento dentro da subrotina. Os intents podem ser “in”, “out” ou “inout”.

4.28 - Toda procedure deve estar sob declaração de implicit none.

4.53 - É proibido o uso de comandos obsoletos para Fortran 90/95 como os listados abaixo:

//

[João] - Criado Fork do GF_standalone para maior liberdade de estudo do code review e workflow.

//

Reunião - 16/11/2023

Estudo da ferramenta automatizada de codereview (checagem de regras):

Link Jamboard: https://jamboard.google.com/d/1jd1Yeli844ADNjUHm5ojGevfMRXy62f4h2J7otw8kjY/edit?usp=sharing

Snapshot em 17/11:

Image

Criado repositório implementando a "casca" do software de code review em:

Após a análise da estrutura criada pela ferramenta QA, a implementação destas regras não foi executada, ainda há bastante trabalho antes de se definir exatamente como estas serão implementadas. Por esse motivo, foi implementada apenas a regra verificando snake_case, que ainda será validada nas próximas tarefas (#368).

Problemas encontrados

N.A

:white_check_mark: Conclusão

A tarefa subestimou todo o tempo de trabalho de design e refatoração, mas conseguiu obter uma primeira versão não funcional, com as principais classes implementadas

:spiral_calendar: Trabalhos Futuros

A tarefa continua na issue #368

joaomas commented 8 months ago

@klclaudio vamos resgatar do trabalho do CCPPxMONANxMPAS pelo menos 3 regras comuns e importantes. O Denis deu uma sugestão hoje de pesquisar na linha do code review alguma ferramenta baseada em IA, talvez integrada ao vs code para automatização das tarefas.

deniseiras commented 7 months ago

Sobre a ferramenta, poderia ser usada alguma biblioteca como chatGPT (existem outros) , ou algum outro tipo de LLM que faça a análise do código e até mesmo a sugestão de refactoring . Mas esse estudo poderia ser algo em paralelo para o futuro, que não afete o tempo desta tarefa.

joaomas commented 7 months ago

Links:

https://github.com/features/code-review

https://www.youtube.com/watch?v=vZ-ZoVAuSW8

https://itforum.com.br/noticias/github-novos-recursos-ia-generativa/?utm_campaign=news_itf_-_091123&utm_medium=email&utm_source=RD+Station

https://kinsta.com/blog/code-review-tools/

https://marmelab.com/blog/2023/02/27/copilot-code-review.html

"An Automated Tool for Upgrading Fortran Codes" - Lesley Mak and Pooya Taheri - https://summit.sfu.ca/_flysystem/fedora/2022-08/software-01-00014.pdf

Image

Repositório do programa: https://github.com/LMAK00/Fordadt

https://dev.to/thawkin3/tools-and-integrations-to-significantly-improve-code-review-in-github-emf

https://www.youtube.com/watch?v=oK2grTDf8Ls

https://www.youtube.com/watch?v=thtAHpgYVg8

https://www.youtube.com/watch?v=giraAZnQxvE

https://www.youtube.com/watch?v=vCwuZfK0VG4

https://www.youtube.com/watch?v=jeWTvDad6VM

deniseiras commented 7 months ago

ChatGPT e outras LLMs for code generation, review e refactor

Artigo mais citado:

OpenAI - ChatGPT

Refraction

OpenAI - ChatGPT

Aprendendo a prompt AI

ChatGPT - refactor código, simplificando código

joaomas commented 7 months ago

Para teste ChatGPT - https://medium.com/@giladhoshmand/how-gpt-4-writes-tests-for-me-775194008ec5

joaomas commented 7 months ago

Adicionar README no repositório QA:

https://github.com/monanadmin/QA

joaomas commented 7 months ago

Link JamBoard https://jamboard.google.com/d/1jd1Yeli844ADNjUHm5ojGevfMRXy62f4h2J7otw8kjY/viewer

Link Draw.io https://drive.google.com/file/d/1WoZXf1CpPIpkxa3-YDsZT4Fyu1NqBCFw/view ou https://app.diagrams.net/#G1WoZXf1CpPIpkxa3-YDsZT4Fyu1NqBCFw ou

Salvo em GDrive - GCC_DIMNT - Board_GCC - Milesontes_Issues_Docs - 356_Ferramenta_CodeReviewer