标签: legacy

将单元测试添加到现有项目

我的问题与之前提出的问题非常相关,但我需要一些实用的建议.

我手里拿着"有效地使用遗留代码",当我在我正在研究的项目中阅读时,我正在使用本书中的建议.该项目是一个C++应用程序,由几个库组成,但代码的主要部分被编译为单个可执行文件.当我不得不触摸某些内容时,我正在使用googletest将单元测试添加到现有代码中.

我的问题是我如何设置我的构建过程,以便我可以构建我的单元测试,因为有两个不同的可执行文件需要共享代码,而我无法从我的"测试中"应用程序中提取代码到库.现在我已经为应用程序创建了我的构建过程,该应用程序将单元测试链接与主应用程序的构建过程中生成的目标文件相关联,但我真的不喜欢它.有什么建议吗?

c++ legacy unit-testing

9
推荐指数
1
解决办法
1890
查看次数

你如何从遗留代码的FxCop开始?

有没有人有将FxCop引入遗留代码的经验?如果有人引入违反规则的代码,我们希望我们的构建失败.但就目前而言,这是不可能的,因为遗留代码有超过9000个违规行为.

抑制我所知错误的唯一方法是通过SuppressMessage属性,但这只适用于方法和GeneratedCodeAttribute.最后一个可以用于类和命名空间(如果我没记错的话),但不应该用于非生成的代码(参见这里).

现在,我们每天花一些时间来删除违规行为,但新的违规行为仍在继续,因为我们的构建不会失败.

有任何想法吗?

legacy fxcop legacy-code

9
推荐指数
1
解决办法
773
查看次数

测试数据密集型遗留应用程序的提示

我正在研究一个非常大的数据密集型遗留应用程序.代码库和数据库都是大规模的.大量的业务逻辑遍布所有层,包括存储过程.

是否有人建议如何开始将"单元"测试(技术上的集成测试,因为他们需要跨几层测试几乎任何给定过程的单个方面)以有效的方式应用到应用程序中?当前的架构不容易支持任何类型的注入或模拟.正在编写新代码以便于测试,但遗留代码呢?由于数据库本身和业务逻辑的强烈依赖性,我目前正在使用内联sql来查找用于测试的数据,但这些都非常耗时.创建视图和/或存储过程是不够的.

您采取了哪些方法(如果适用)?什么有用?什么没有&为什么?任何建议,将不胜感激.谢谢.

legacy unit-testing

9
推荐指数
1
解决办法
1809
查看次数

谁应该学习"旧"系统?

我参与了几个项目,主要涉及用"新"系统替换"旧"系统.不变的是,模式一直是建立"新"系统的团队中几乎没有人对"旧"系统有任何真正的了解.每当我对此提出质疑时,我都被告知这是有目的的......通过不了解"旧"系统,团队能够以不同的方式思考,而不受那里事情的限制.因此,团队中通常只有1或2个人对"旧"系统有所了解,每当有关"旧"系统如何做某事的问题时,他们都会被咨询.

但似乎总会发生的事情是,在"新"系统交付之后,用户总是会对新系统中的"我们如何做X(在旧系统中很容易)"这一形式提出疑问?对于开发人员来说,这通常是他们第一次听说X.所以他们必须去研究X是什么,他们回馈给用户的答案往往是"你不能"或"你可以,但它是真的很尴尬".

这对我来说似乎不对......在我看来,通过让"新"系统的每个开发人员真正了解"旧"系统可以获得很多,而这并不一定会扼杀他们的创造力,如果他们拥有不错的设计和开发技能.

对哪种方法最好的想法?

architecture migration legacy

9
推荐指数
2
解决办法
275
查看次数

为什么Joomla调试显示记录了446个查询并记录了446个遗留查询?

我已经被要求修复已经设置的Joomla站点的性能.

我查看调试输出,它显示两次相同的查询,一次用于记录的查询,再次显示记录的旧查询.我的猜测是它实际上运行相同的查询两次,每页只有不到900个查询(希望我错了)

Legacy插件已禁用,因此传统模式根本不启用.该站点也使用VirtueMart(如果全局配置中的缓存已打开,则BTW无法正常工作)

除了我认为它不应该运行446个查询这一事实(有时甚至高达每页650个),任何人都遇到过这个问题,我想在哪里解决这个问题.

更新:

回答下面的问题......它正在运行Artio JoomSef,以及System - SEF插件

谢谢

legacy performance joomla virtuemart

9
推荐指数
1
解决办法
1005
查看次数

如何(单元)测试数据密集型PL/SQL应用程序

我们的团队愿意对在扩展现有庞大Oracle系统的正在运行的项目下编写的新代码进行单元测试.

该系统仅由PL/SQL编写,由数千个表,数百个存储过程包组成,主要从表中获取数据和/或插入/更新其他数据.

我们的延期也不例外.大多数函数从非常复杂的SELECT语句返回数据,通过许多相互绑定的表(在返回它们之前添加一些逻辑)或者从一个复杂的数据结构转换到另一个(以另一种方式复杂化).

对这些代码进行单元测试的最佳方法是什么?

现有代码库没有单元测试.更糟糕的是,只有包,触发器和视图是源控制的,表结构(包括"alter table"内容和必要的数据转换是通过除版本控制之外的通道部署的).在我们的项目范围内无法改变这一点.

维护测试数据似乎是不可能的,因为每周都有新的代码部署到生产环境中,通常没有事先通知,经常改变数据结构(在这里添加一列,在那里删除一个).

我很高兴有任何建议或参考来帮助我们.一些团队成员往往厌倦了弄清楚如何开始我们的经验,单元测试不包括PL/SQL数据密集型遗留系统(只有那些"来自本书"的绿地Java项目).

oracle legacy tdd unit-testing plsql

9
推荐指数
1
解决办法
3317
查看次数

我可以从旧版C回调中抛出C++异常吗?

我有使用一些C库的C++代码.C库采用C语言回调.我在我的C++代码中编写了一个回调函数,现在我不知何故需要报告错误(但它返回void).我想知道我是否可以从C++代码中使用的C回调中抛出异常?

这对我来说很难理解.

谢谢,Boda Cydo.

c c++ legacy callback

9
推荐指数
1
解决办法
995
查看次数

python 3.3的文件处理速度与fortran 77相比

这个奇怪的问题,我知道.

我在fortran 77中有一个代码库,它在大多数情况下解析大型非二进制文件,对这些文件进行一些操作然后进行大量的文件编写.代码库不进行任何矩阵操作或数字运算.这个遗留代码是fortran,因为许多其他代码库确实需要严重的数字运算.这最初只是用fortran写的,因为有了fortran的知识.

我的建议是完全用python重写(很可能是3.3).fortran代码的维护与您预期的一样困难,并且测试的结果与您想象的一样差.显然python在这里会有很多帮助.

在python中的文件处理速度方面是否有任何性能命中(甚至收益)?目前,该系统的大部分运行时间是读/写文件.

提前致谢

python migration legacy io fortran

9
推荐指数
1
解决办法
441
查看次数

了解其他人的代码

我偶尔不幸有需要修改,很旧,差的 不是记录并不佳 不是设计的代码.

通常需要花费很长时间才能进行简单的更改,因为现有代码的结构并不多,而且我真的必须先阅读大量代码才能了解事情的发展方向.

我认为在这种情况下会有很多帮助的工具可以让人们可以看到代码的概述,然后甚至可以深入了解更多细节.我怀疑这样一个工具很难做对,因为它试图找到很少或没有的结构.

我想这不是一个真正的问题,而是一种沉思.我应该把它变成一个问题 - 其他人做了什么来帮助他们了解其他人的代码,好的和坏的?

legacy visualization legacy-code

8
推荐指数
1
解决办法
985
查看次数

使用com.sun.net.ssl.internal.ssl.Provider()的旧Java代码

我正在使用2003年的一些代码.有一个对以下类的引用:

new com.sun.net.ssl.internal.ssl.Provider()
Run Code Online (Sandbox Code Playgroud)

它导致错误:

Access restriction: The type Provider is not accessible due to restriction on required library /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/jsse.jar

有没有人对使用这个类的合适替代方案有任何建议?

java provider legacy ssl

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