Open joaomas opened 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.
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.
Links:
https://github.com/features/code-review
https://www.youtube.com/watch?v=vZ-ZoVAuSW8
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
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
Desvantagem: *"One of the problems working with ChatGPT in exercises like this is the limited context window (also called "token limit"). Once it receives enough words (or more strictly tokens) in the conversation, it starts forgetting the earliest material, an effect that makes it curiously forgetful. That's not noticeable for short chats, but it does matter when working with large amounts of context as in this exercise. ChatGPT has been steadily increasing its context window, GPT-4 has a token limit of 8,192, with another variant increased to 32,768.
... this is fairly easy to fix, as we can prompt it with something like "you are not finished" or "go on". Secondly, if the overall prompt is too big, then ChatGPT will simply return a fatal error and we have to start a new conversation.
... The third is the more tricky problem, where ChatGPT starts forgetting and losing context. When this happens we need to reset the context. This is where the approach of getting a master plan and breaking down the task into separate elements helps"*
Para teste ChatGPT - https://medium.com/@giladhoshmand/how-gpt-4-writes-tests-for-me-775194008ec5
Adicionar README no repositório QA:
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
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
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:
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