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 № 1Powinieneś preferować system kontroli źródła, aby śledzić, kto co napisał. git blame
na 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.