2012-04-03 5 views
7

Powszechnie uważa się, że dobrą praktyką jest dodawanie linii z informacjami o autorze, wersji i licencji do górnej części plików źródłowych. Na przykład, GNU GPL v3 sugeruje, aby dodaćAutomatyczne zarządzanie nagłówkiem licencji/autora/wersji w plikach źródłowych

<one line to give the program's name and a brief idea of what it does.> 
Copyright (C) <year> <name of author> 

This program is free software: you can redistribute it and/or modify 
it under the terms [SNIP] 

znajdę to uciążliwe, aby go dodać ręcznie do każdego pliku i mieć je zaktualizować, wszystko co teraz i potem, gdy niektóre z tych informacji zmianami (nowych autorów, prawa autorskie lat, zwyżki wersji).

Czy istnieje sposób, aby zarządzać tym automatycznie, więc muszę tylko edytować te rzeczy w jednym miejscu i zostanie to automatycznie skopiowane?

W razie potrzeby można założyć, że korzystam z dowolnego nowoczesnego systemu kontroli wersji.

+0

Proszę wyjaśnić, co VCS i na jakich OS chcesz użyć. Ponadto - czy planujesz użyć jakichś narzędzi CI | Deploy? –

+0

Nota boczna - rok ochrony praw autorskich nie jest rokiem w roku, jest to zakres (* dynamiczny *) w formie start-end (zgodnie z sugestiami FSF i czystą logiką) –

+0

@LazyBadger: Używam głównie Linux + git, ale ja Jestem także ciekawy rozwiązań dla innych systemów. Powiedzmy, że nie ma CI/Deploy, ale nie widzę, jak to może być istotne, ponieważ działają one tylko na późniejszym etapie (chcę, aby linie praw autorskich były tam w VCS, * przed * wdrożeniem). Co się tyczy roku praw autorskich, niezależnie od tego, czy jest to tylko format 2007-2011, czy 2011, nadal muszę go aktualizować co roku, prawda? –

Odpowiedz

4

Powszechnie uważa się za dobrą praktykę dodawanie niektórych wierszy z informacjami o autorze, wersji i licencji do początku plików źródłowych.

To zależy. Przede wszystkim istnieją dwa (lub więcej) sposobów, aby to zrobić:

  • zarządzają informacjami licencyjnymi na plik
  • zarządzają informacje licencyjne w centralnej lokalizacji.

Jeśli rozpoczynać projekt od początku, metoda na plik jest często łatwa do zrobienia, przy zachowaniu przejrzystości. Kiedy piszesz, z czasem coraz trudniej jest śledzić rzeczy. Coraz więcej projektów przechodzi następnie do wariantu lokalizacji centralnej.

Metoda "plik po pliku" ma tę zaletę, że zakres pracy jest jasny. Często wpisujesz nazwę aplikacji w komentarzu do pliku. Jeśli jeden plik zostanie usunięty z jakiegoś powodu, informacja nadal tam jest, a łańcuch dokumentacji nie jest uszkodzony.

Dzięki metodzie centralnej korzyść jest taka, że ​​zwykle jest to obsługiwane przez oprogramowanie do kontroli wersji, na przykład GIT. Zobowiązania mogą być podpisane przez osobę towarzyszącą, a autor może być podany. To jest udokumentowane, kto napisał, który kod automatycznie, a informacje są przechowywane w centralnej lokalizacji: VCS.

Zachowaj plik COPYING w pakiecie, w którym podajesz główne informacje centralnie. Możesz łatwo wygenerować listę autorów za pomocą VCS. I za każdym pliku można utworzyć jeden nagłówek, który właśnie określa, jakie oprogramowanie i gdzie patrzeć, tylko gołe zarysie:

/** 
* Flux Deluxe v3.2.0 - Vector Drawing Redefined 
* 
* Copyright 2010, 2012 by it's authors. 
* Some rights reserved. See COPYING, AUTHORS. 
*/ 

Jeśli wydać nową wersję w nowym roku to nie myślenia do aktualizacji wszystkie pliki.

+1

Cóż, moje pytanie brzmi dokładnie, jak zarządzać tym "nieumiejętnym" aktualizowaniem wszystkich plików, bez, oczywiście, robienia tego ręcznie. Czy jest na to jakieś narzędzie? Czy piszesz własne wyrażenie regularne dla każdej zmiany wersji i mam nadzieję, że nie pasuje do zbyt wiele? Czy edytujesz każdy plik ręcznie? –

+0

Aby zamienić tekst w (wielu) plikach, możesz użyć ['sed'] (http://www.grymoire.com/Unix/Sed.html). Dodatkowo w zależności od tego, z którego IDE korzystasz, często jest wyszukiwane i zamieniane w plikach. To właśnie miałem na myśli, mówiąc "nie myślenia": wyszukiwanie wielu plików i wymienianie. Jeśli nagłówki pozostaną takie same (przynajmniej ich główna część), to tylko proste wyszukiwanie i zamiana. – hakre

+0

OK, dzięki. Nie byłem zadowolony z tego rozwiązania, ponieważ zawsze istnieje ryzyko, że pasuje zbyt wiele (zastąpienie wszystkich "Flux Deluxe v.3.2.0" z v.3.2.1? Twój plik CHANGELOG i komunikaty o błędach zgodności mogą mieć coś przeciwko temu. ..), więc zapytałem, czy istnieje jakieś narzędzie specjalnie napisane dla tego w pobliżu. Przyjmuję "nie, wszyscy rzucamy własne wyrażenie regularne" jako odpowiedź. :) –

0

Jeśli pracujesz z Visual Studio, możesz użyć makr i dołączyć do niego skrót. Następnie, podczas tworzenia nowego pliku, użyj skrótu, aby dodać nagłówek. Jeśli chcesz mieć pewność, że w każdym pliku znajduje się nagłówek, możesz użyć StyleCop.

poniższe linki mogą być pomocne:
http://abhijitjana.net/2010/12/05/add-document-header-for-files-automatically-in-visual-studio/
http://stylecop.codeplex.com/

W Eclipse, jest też wsparcie makr, więc powinieneś być w stanie zrobić to samo jak sugeruje dla VS. Jednak nie mam z tym żadnego doświadczenia.

Dla Java, istnieje alternatywa do StyleCop:
http://stylecop.codeplex.com/

Nie słyszałem żadnej SVN-narzędzi, które dostosowują się sama plików. Używanie makr w edytorze jest najbardziej zbliżone do tego, co chcesz.

+0

Makra pracują przy tworzeniu nagłówka po raz pierwszy (jak również przy kopiowaniu i wklejaniu), ale nie w celu aktualizacji, chyba że czegoś mi brakuje. I wciąż wymagają one pracy, która skaluje się jako O (n) z liczbą plików zamiast O (1). –