标签: legacy-code

使用phpunit测试遗留代码

我有一个遗留代码库,我需要使用PHPUnit测试该代码.所以我根据你的经验要求提出建议.我应该先测试哪些课程?还是优先考虑?

我应该从easy/small类开始还是使用base/super类?

php testing phpunit unit-testing legacy-code

4
推荐指数
2
解决办法
1286
查看次数

查看 C++ DLL 的成员

我有一个写于 1998 年的 C++ DLL,我想查看成员(属性、字段、方法、构造函数等)。我的理解是,编写 DLL 的公司不再存在,但它仍在使用。

如果我只有 DLL,这可能吗?或者您是否只需要知道 DLL 中的内容即可使用它。如果可能的话,我会怎么做呢?

我希望通过 P/Invoke 使用 .Net 中的 DLL。

c++ reflection legacy-code

4
推荐指数
1
解决办法
4386
查看次数

1998年的老式C代码现在无法在gcc下编译

我有~16k行1998年的老式C代码(约50个主要编程),当时在gcc下完美构建但现在在第一个例程"stutter.c"中失败了许多"左值操作数需要左值"错误.我不足以找到问题的C程序员,并且似乎无法在因特网上搜索特定于我的问题的答案(使用这个相当通用的错误消息).

以下是具体内容:

从(vintage)Makefile编译行:

gcc -O3 -Wall -D__dest_os = unix -I/usr/X11/include -DPLOTX11 -c -o stutter.o ../src/stutter.c

失败的陈述示例:

    cell_car(cell) = free_list;
    cell_type(cell) = type;
    cell_name(atom) = strdup(name);
    cell_cdr(list) = binding_list;
    cell_cdr(cell_car(current)) = b;
Run Code Online (Sandbox Code Playgroud)

...(和很多类似的)

之前是:

    typedef enum CELL_ENUM {
      CELL_LAMBDA, CELL_SFUNC, CELL_VFUNC, CELL_LIST, CELL_ATOM
    } CELL_TYPE;

    typedef struct CELL_STRUCT {
    void *car, *cdr;
    unsigned type : 7;
    unsigned mark : 1;
    char empty[3];
    } CELL;
Run Code Online (Sandbox Code Playgroud)

和:

    #define cell_car(c)      ((CELL *)(c)->car)
    #define cell_cdr(c)      ((CELL *)(c)->cdr)        
    #define cell_name(c)     ((char *)(c)->car)
    #define cell_func(c)     ((CELL *(*)())(c)->car) …
Run Code Online (Sandbox Code Playgroud)

c gcc legacy-code

4
推荐指数
1
解决办法
389
查看次数

在C++应用程序中查找未引用的方法

我们有一个很大的C/C++遗留源代码树,它已经在块中出现了几次.我们预计会有大量的方法不再使用.是否有工具可以帮助我们快速识别未使用的代码?

c++ code-coverage legacy-code

3
推荐指数
1
解决办法
649
查看次数

将iostream与stdio同步

我正在尝试将iostream添加到遗留代码中,因此希望同步这两个库.根据这篇文章,我应该使用std :: ios_base :: sync_with_stdio.

现在,我想知道它是如何在实践中使用的(请举例说明),我应该注意的副作用.

谢谢

c c++ io stl legacy-code

3
推荐指数
2
解决办法
2416
查看次数

C#中的扩展方法:为什么这样做?

我有点困惑,为什么这不会给出错误.我发现这些代码深入到一些过时的遗留软件中,并且很惊讶它看起来有用.

public static string CleanFileName(this string fileName)
{
  return CleanFileName(fileName, 64);
}

public static string CleanFileName(this string fileName, int maxLength)
{
  //some logic
}
Run Code Online (Sandbox Code Playgroud)

我对扩展方法的体验是这样称呼它:

fileName.CleanFileName(64);
Run Code Online (Sandbox Code Playgroud)

这只能起作用,因为它也是静态方法吗?这是一种常见的做法,只是我还没有看到过的东西,或者是我应该用火杀死的一段过时的遗留代码?

c# extension-methods static legacy-code this

3
推荐指数
2
解决办法
290
查看次数

数据库压缩和存档 - MS Access后端

场景:有一个遗留程序(不确定是什么语言),我被要求"在数据库中压缩和存档表单".在用户打开应用程序的那一刻,它需要大约2-5分钟来加载大约27000条记录!我的理论是,它正在加载启动时的所有记录,但这可能不是唯一的原因.在进行了一些挖掘并找到看起来正确的Access Back端之后,我还在公司内的15个以上的其他共享中找到了相同的访问文件.现在这个应用程序是在1997年左右创建的,当时我猜测Access是常态,但他们真的会从15个以上的Access数据库中获取数据吗?加速这个程序的标准似乎是将旧记录存档到另一个访问数据库中(这就是为什么我认为它在启动时加载所有内容.

问题:我周一开会讨论该计划,并想知道是否有人可以提出一些有用的问题,理论,解决方案等.这不是我不能自己做的,我只是觉得另一个观点不能伤害.另一个有趣的事实是,我可能或者可能无法获得源代码,因为它可能是由承包商创建的,并且代码很久以前就丢失了.

附注:Access是否可以自动存档旧记录?这意味着将它们转移到另一个名为XXXArch的数据库.

提前致谢.我会尽力回答你的任何问题.

编辑:

下面是有关情况的最新消息.

看起来它只使用一个数据库作为主要数据库而另一个数据库存档.我仍然没有自己的用户帐户来打开应用程序,但在查看数据库时,有一个用户表,其中包含登录ID和相同的密码(PASSWORD),因此我尝试以其中一个用户身份登录,只需选择一些数据不修改任何东西.选择时我几乎可以立即获得数据,并且没有看到其他用户获得的任何减速.我还没有看到源代码,但是我可以告诉它(将exe文件放入记事本中)它看起来像是在VBA中编码而且可能是使用MS Access创建的.此外,应用程序似乎在数据文件夹中创建temp.mdb.目前它没有任何内容.没有桌子,没有.一世' m假设/希望这是降低用户速度的原因,可以删除以提高性能.我会在获得源代码后发布另一个更新,并更好地了解减慢速度的原因.

ms-access legacy-code archiving compact-database

3
推荐指数
1
解决办法
1604
查看次数

Java中的泛型 - 与遗留代码互操作

我正在从Oracle http://docs.oracle.com/javase/tutorial/extra/generics/legacy.html阅读本教程

但我无法弄清楚这条线的含义

因此,即使存在未经检查的警告,Java虚拟机的类型安全性和完整性也不会存在风险.

有人可以更清楚地为我解释一下吗?补充:JVM 的" 完整性 " 究竟是什么?" 有风险 "究竟是什么意思?

java generics jvm legacy-code

3
推荐指数
1
解决办法
353
查看次数

如何"自动关闭"警报框

我们有一个由不再存在的公司制作的控件.由于页面加载的一些奇怪的原因,它现在已经开始向页面呈现这样的内容:

<script type="text/javascript">
 alert('Your license has expired!')
</script>
Run Code Online (Sandbox Code Playgroud)

由于公司不再存在,我们无法获得支持,控制也非常复杂,并且运行在一些无法快速替换的遗留代码中,因此简单地重写页面也不是一个选项(尚未).

我暂时需要做的是在对象呈现之前从页面中删除对象,或者通过某些脚本自动关闭对话框...

有任何想法吗?

javascript alert legacy-code

3
推荐指数
1
解决办法
2万
查看次数

允许变量在本地范围内使用

我正在研究一个大型遗留项目,其中在for语句中声明的变量在范围之外使用.VS2013不喜欢这样,并给出编译器错误.

我如何告诉VStudio允许这样做?

for (CBookmarks::iterator it = m_listBookmarks.begin();
    !(it==m_listBookmarks.end()) && hSelected!=it->hParent;
    it++);

CString Hierarchy = LookupHierarchy(it->hParent);
Run Code Online (Sandbox Code Playgroud)

这是一个我没有维护的大型项目.我只是阅读源代码并尝试将其作为新项目的参考.我不想"修复"代码库.

编辑

出于某种原因,我仍然遇到编译错误,尽管配置:

在此输入图像描述

我尝试更改https://msdn.microsoft.com/en-us/library/84wcsx8x.aspx?f=255&MSPPError=-2147217396但我仍然遇到编译错误.

c++ legacy-code visual-studio-2013

3
推荐指数
1
解决办法
66
查看次数