/ / Rails: Ruby Code That Can Scan Ruby Code - ruby-on-rails, ruby, metaprogramowanie, współpraca

Rails: Ruby Code, który może skanować Ruby Code - ruby-on-rails, ruby, metaprogramming, współpraca

Rozpoczynam projekt z kilkoma współpracownikami. Chcemy śledzić, kto napisał jaki kod, a także uzyskać liczbę metod, akcji kontrolera i widoków, które napisał współautor. Wymaga to poziomu metaprogramowania, którego nikt z nas nie zna.

Jak dotąd najlepszym pomysłem jest dodanie komentarza przed każdym fragmentem kodu z nazwą użytkownika współtwórcy i krótkim, spójnym wyrażeniem. Na przykład:

# method by RacerX
def a_useful_method
. . .
end

# method by MysteryProgrammer123
def another_useful_method
. . .
end

# action by MysteryProgrammer123
def new
. . .
end

Następnie uruchomimy metodę, aby policzyć wszystkie wystąpienia action by i method by i view by napisane przez każdego użytkownika w całym projekcie.Niestety, nie wiemy, jak napisać kod Ruby, który mógłby przeglądać inny kod Rubiego. Może to nawet nie być możliwe. Jeśli jednak jest to możliwe, jak to się robi?

Alternatywnie, może istnieć lepsze podejście, którego nie rozważamy.

Odpowiedzi:

3 dla odpowiedzi № 1

Powinieneś preferować system kontroli źródła, aby śledzić, kto co napisał. git blamena przykład może utworzyć listę z adnotacjami, pokazującą autora i linię źródłową.

Identyfikacja widoków powinna być łatwa, znajdują się one w katalogu widoków. Definicje metod statycznych można zwykle znaleźć za pomocą wyrażenia regularnego /bdefs+(?:w+.)?(w+)b/. Odróżnianie „akcji” od innych metod prawdopodobnie polega na filtrowaniu nazw metod względem popularnych nazw akcji i innych nazw odkrytych podczas badania tras.


1 dla odpowiedzi nr 2

Zamiast wymyślać koło na nowo, użyj plikugotowe narzędzie. A jeśli nie przyjdzie ci do głowy, jak zaimplementować taki kod, to prawdopodobnie nie będziesz w stanie takiego kodu napisać. Narzędzie do dokumentacji, takie jak DZIEDZINIEC może być użyteczne.Sposób, w jaki to działa, polega na dodawaniu wyjaśnień jako komentarzy przed definicjami metod. Zwykle jest to przeznaczone do pisania dokumentacji do czytania przez użytkowników, ale możesz odejść od jej przeznaczenia i wpisać takie rzeczy, jak imię i nazwisko programisty lub cokolwiek innego, co lubisz.