2013-02-06 12 views
7

Napisałem program dla firmy. Chcą kodu źródłowego.Zwolnienie częściowego kodu źródłowego do klienta

Program wykorzystuje kod, który napisałem dla wielu klientów na kilka projektów.

Chcę zwolnić tylko kod używany przez ten program. Jeśli wspólny plik o nazwie Utils.pas zawiera dziesięć funkcji, a ten program używa tylko dwóch z nich, to chcę zwolnić plik o nazwie Utils.pas z tylko tymi dwiema funkcjami.

Kod to Borland Pascal, napisany przy użyciu Delphi.

Ktoś wie, jak mogę to zrobić?

Wyjaśnienie: Nie pytam o licencję. Chcę, aby klient miał tylko kod źródłowy, który jest używany przez jego program i nic więcej.

+2

Jeśli nie można tego zrobić z istniejącą strukturą plików, to haven” t rozbił go na wystarczającą ilość kawałków. Jest to niebezpieczne ze względu na posiadanie wszystkich plików źródłowych. – Blrfl

+0

Jeśli kod, który dla nich stworzyłeś, korzysta z "popularnych bibliotek", które stworzyłeś, dlaczego nie po prostu udostępnić pliki .pas dla swoich projektów i skompilowanych plików DCU dla "wspólnych bibliotek"? – LaKraven

+1

Wszystko, co jest specyficzne dla wszystkich klientów, umieść je we własnym pakiecie komponentów i dostarczaj tylko BPL bez źródła. Następnie pozostałe źródło będzie zależało od klienta. Jeśli jednak masz kod, który jest specyficzny dla jednego klienta, którego nie chcesz, aby inny konkretny klient zobaczył, będziesz musiał również przygotować BPL dla każdego kodu klienta. To wciąż duże zadanie i życzę powodzenia. –

Odpowiedz

2

Przerwij ich kod z utils.pas do client_xxxx_utils.pas. Naładuj je według zwykłej stawki za pracę, którą wykonujesz, przebuduj, test dymu itp. Problem rozwiązany.

OK, na wypadek, gdyby trzeba było wymyślić, co przyciąć ... Skompiluj program i spójrz na jednostkę utils.pas. Zwykle na marginesie znajdują się Niebieskie Kropki, co oznacza, że ​​można ustawić punkty przełamania. "Dead Code" nie będzie miał niebieskich kropek na marginesie, ponieważ kod został wyeliminowany przez linker. Wszystko, czego nie ma niebieska kropka, jest czymś, czego nie potrzebują.

Dla bardziej automatycznego podejścia, być może Peganza Pascal Analyzer może zidentyfikować martwy kod w jednym z wielu raportów.

Oto niektóre pytania związane z tutaj na SO o podobnej odpowiedzi (niektóre przeze mnie!)

Finding unused (aka "dead") code in Delphi

How to "automatically" remove unused units from uses clause?