【问题标题】:Releasing partial source code to customer向客户发布部分源代码
【发布时间】:2015-07-22 23:51:12
【问题描述】:

我为一家公司编写了一个程序。他们想要源代码。

该程序使用我为多个客户的多个项目编写的代码。

我只想发布该程序使用的代码。因此,如果一个名为 Utils.pas 的共享文件包含十个函数,而该程序仅使用其中两个函数,那么我想发布一个名为 Utils.pas 的文件,其中仅包含这两个函数。

代码是 Borland Pascal,使用 Delphi 编写的。

有人知道我该怎么做吗?

澄清:我不是在询问许可。我希望客户只拥有他们的程序使用的源代码,而不是其他任何东西。

【问题讨论】:

  • 如果你不能用你现有的文件结构做到这一点,你还没有把它分解成足够多的部分。这是拥有包罗万象的源文件的危险。
  • 如果您为他们生成的代码使用了您生成的“通用库”,为什么不简单地为他们的项目提供 .pas 文件,并为他们提供编译的 DCU 文件你的“公共图书馆”?
  • 任何特定于所有客户的东西,把它放在你自己的组件包中,只提供给他们没有源代码的 BPL。然后,剩余的来源将是客户特定的。但是,如果您有特定于某个客户的代码,而您不希望其他特定客户看到,那么您还必须为每个客户的代码生成 BPL。这仍然是一项艰巨的任务,祝您好运。
  • 或者您可以使用 DLL 执行类似的解决方案。请记住,您希望为每个库指定一个唯一的名称,无论是哪种类型,它都是特定于每个客户的,但不会泄露客户的名字。像客户 ID 一样用作标识符,只有您知道 ID 是为谁服务的。

标签: delphi pascal


【解决方案1】:

将他们的代码从 utils.pas 中拆分出来,放入 client_xxxx_utils.pas。向他们收取通常的费用,以完成这项工作、重建、冒烟测试等。问题已解决。

好吧,万一弄清楚要修剪什么是一件苦差事…… 编译程序,查看 utils.pas 单元。通常,您会在边距中有蓝点,表示您可以设置断点。 “死代码”的空白处不会有蓝点,因为该代码已被链接器消除。任何没有蓝点的东西都是他们不需要的。

对于更自动化的方法,也许 Peganza Pascal Analyzer 可以识别其中一个报告中的死代码。

这里有一些关于 SO 的相关问题,有类似的答案(有些是我的!)

Finding unused (aka "dead") code in Delphi

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 2017-11-24
    • 2018-01-19
    • 1970-01-01
    • 2016-02-16
    • 2015-11-15
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多