使用一般SVN忽略模式的最佳(或尽可能好)是什么?
有许多不同的IDE,编辑器,编译器,插件,平台等特定文件和一些"重叠"的文件类型(即某些类型的项目而不是其他类型的项目).
但是,无论开发环境的具体情况如何,您都希望自动将大量文件类型自动包含在源代码管理中.
这个问题的答案可以作为任何项目的良好起点 - 只要求他们添加他们需要的少数环境特定项目.它也可以适用于其他版本控制系统(VCS).
language-agnostic svn environment version-control development-environment
我在当前项目中使用基于接口的编程,并在重载运算符(特别是Equality和Inequality运算符)时遇到问题.
更新 - 以下假设是错误的!
我担心要求使用Equals而不是operator ==的原因是我在.NET指南中找不到任何地方,它声称它会使用Equals而不是operator ==甚至建议它.但是,重新阅读覆盖等于和操作员指南后==我发现了这个:
默认情况下,operator ==通过确定两个引用是否指示同一对象来测试引用相等性.因此,引用类型不必实现operator ==以获得此功能.当一个类型是不可变的,也就是说,实例中包含的数据不能改变时,重载operator ==来比较值的相等而不是引用相等可能是有用的,因为作为不可变对象,它们可以被认为是相同的因为它们具有相同的价值.在非不可变类型中覆盖operator ==不是一个好主意.
和这个Equatable接口
当在Contains,IndexOf,LastIndexOf和Remove等方法中测试相等性时,IEquatable接口由泛型集合对象(如Dictionary,List和LinkedList)使用.它应该针对可能存储在泛型集合中的任何对象实现.
请参阅下面的代码和输出,以说明问题.
在使用基于接口的编程时,如何为类提供适当的操作符重载?
对于预定义的值类型,如果操作数的值相等,则相等运算符(==)返回true,否则返回false.对于除string之外的引用类型,如果其两个操作数引用同一对象,则==返回true.对于字符串类型,==比较字符串的值.
using System;
namespace OperatorOverloadsWithInterfaces
{
public interface IAddress : IEquatable<IAddress>
{
string StreetName { get; set; }
string City { get; set; }
string State { get; set; }
}
public …
Run Code Online (Sandbox Code Playgroud) 在Windows C应用程序中,我想验证传递给函数的参数,以确保指定的路径存在.*
如何在C中检查Windows上是否存在目录?
*我知道你可以进入竞争条件,在你检查存在的时间和使用它不再存在的路径的时间之间,但我可以处理.
当权限发挥作用时,明确知道目录是否存在可能会变得棘手.在尝试确定目录是否存在时,该进程可能无权访问目录或父目录.这可以满足我的需求.如果目录不存在或者我无法访问它,则在我的应用程序中都将两者视为无效路径故障,因此我不需要区分.如果您的解决方案提供此区别,则(虚拟)奖励积分.
C语言,C运行时库或Win32 API中的任何解决方案都很好,但理想情况下我想坚持常用的库(例如kernel32,user32等)并避免涉及加载非标准库的解决方案(如Shlwapi.dll中的PathFileExists).如果您的解决方案是跨平台的,那么(虚拟)奖励积分.
您可以使用Visual Studio C++编译器使用几种不同的调试标志.他们是:
如果要启用最小重建,则/ Z7标志上需要/ Zi标志.
如果你打算使用/ MP标志,/ Z7和/ Zi看起来在MSDN上似乎没有区别.但是,SCons文档声明必须使用/ Z7来支持并行构建.
在Visual Studio C++项目中使用/ Zi vs/Z7有什么含义?
我错过了其中任何一种选择的其他优缺点吗?
具体来说,目标的单个程序数据库格式(PDB)文件与每个源的多个CodeView格式(.obj)文件的好处是什么?
compiler-construction visual-studio-2005 visual-studio-2008 visual-studio visual-c++
我正在用C#.NET 3.5编写一个类库程序集,用于与其他应用程序集成,包括第三方商用现成(COTS)工具.因此,有时这个类库将由我控制的应用程序(EXE)调用,而有时它将被其他DLL或我无法控制的应用程序调用.
任何解决方案必须
要么
当我的独立类库由我无法控制的DLL或应用程序(例如第三方COTS工具)调用且未指定log4net配置信息时,我的类库无法执行任何日志记录.
如何为独立类库程序集配置和启用log4net,以便无论调用应用程序是否提供log4net配置,它都将记录?
我正在寻找一个用于本机C++的分析器.它当然不一定是免费的,但成本会影响购买决策.这是为了商业工作,所以我不能使用个人或学术许可副本.
我正在寻找的主要功能是:
我使用过英特尔的VTune和Compuware的Devpartner性能分析社区版.
VTune似乎非常强大,但它有一个陡峭的学习曲线.它也非常"模块化",所以你必须弄清楚你需要购买哪些部件.
DevPartner PACE非常易于使用,并提供所有关键功能,但它只进行了45天的试用.许可版本(Visual C++ BoundsChecker Suite的DevPartner)大约1400美元一个座位,这是可行的,但有点高imo.
什么是原生C++的优秀剖析器和为什么?
惯例1:高级类型目录,项目子目录
例如,wxWidgets项目使用以下样式:
/solution
/bin
/prj1
/prj2
/include
/prj1
/prj2
/lib
/prj1
/prj2
/src
/prj1
/prj2
/test
/prj1
/prj2
Run Code Online (Sandbox Code Playgroud)
优点:
缺点:
惯例2:高级项目目录,类型子目录
例如,Wireshark项目使用此样式
/solution
/prj1
/bin
/include
/lib
/src
/test
/prj2
/bin
/include
/lib
/src
/test
Run Code Online (Sandbox Code Playgroud)
优点:
缺点:
我们目前正在使用我们项目的惯例1,到目前为止它已经运作得相当好.现在,我正在添加单元测试(通过CxxTest)并使用nmake促进迁移到持续集成,约定1在创建正确的nmake文件时引起了一些严重的麻烦.
降低维护整个解决方案的构建脚本的工作量.
在其他项目的解决方案中分离项目及其构建步骤.
通过使用构建脚本进行签出以便为每次提交释放媒体生成,从而促进持续集成(显然也利用其他工具,如CruiseControl).
为开发人员添加或删除其他项目或源文件尽可能简单且最不容易出错.
我正在通过设置一个包含两个子项目的基本C++示例项目来尝试Scons:
我遇到的问题是该库在与SConscript文件相同的目录中构建其.obj,.pdb,.lib,.dll等文件,而EXE在与SConscript相同的目录中构建其文件.应用程序成功构建了Prj2依赖项及其自身.但是,您无法运行生成的EXE,因为它无法找到所需的库,因为它位于其他目录中.
如何才能获得多个依赖于将二进制文件和调试信息输出到公共目录的项目,以便可以执行和调试它们?
这是我到目前为止所想到的:
我更新了下面的文件结构和文件内容,以完整地反映其中的工作解决方案.感谢他的洞察力.
使用此配置,您必须通过cd到构建目录然后运行以下命令来执行构建.我需要一个正常工作的别名设置来解决这个问题.
build> scons ../bin/project1.exe
Run Code Online (Sandbox Code Playgroud)
/scons-sample
/bin
/release
/debug
/build
SConstruct
scons_helper.py
/prj1
SConscript
/include
/src
main.cpp
/prj2
SConscript
/include
functions.h
/src
functions.cpp
Run Code Online (Sandbox Code Playgroud)
import os.path
BIN_DIR = '../bin'
OBJ_DIR = './obj'
#--------------------------------------
# CxxTest Options
#--------------------------------------
CXXTEST_DIR = '../extern/CxxTest/CxxTest-latest'
PERL = 'perl -w'
TESTS = '*.h'
TESTGEN = PERL + CXXTEST_DIR + '/cxxtestgen.pl'
CXXTESTGEN_FLAGS = '--runner=ParenPrinter \
--abort-on-fail \
--have-eh'
#--------------------------------------
# Options
#-------------------------------------- …
Run Code Online (Sandbox Code Playgroud) 我有一个用本地C++编写的应用程序,在几年的时间里,大约有60个KLOC.有很多功能和类已经死了(可能有10-15%像下面提到的类似Unix的问题).我们最近开始对所有新代码进行单元测试,并尽可能将其应用于修改后的代码.但是,我会做一个SWAG,目前我们的测试覆盖率不到5%.
方法和/或工具必须支持:
如果方法支持超过这些要求,那么很好.
注意:我们目前使用Visual Studio 2005的专业版,而不是Team System.因此,使用Team System可能是一个有效的建议(我不知道,我从未使用它)但是我希望它不是唯一的解决方案.
我相信通用工具不可能在任何具有零误报的任意应用程序中找到所有死的(例如无法访问的代码)(我认为这相当于Halting问题).但是,我也相信通用工具有可能找到很多类型的死代码,这些代码实际上很可能已经死了,就像类或函数一样,它们在代码中永远不会引用任何其他东西.
通过使用单元测试来提供此覆盖,您不再使用通用算法,从而增加了可以检测到的死代码的百分比以及任何命中不是误报的概率.相反,使用单元测试可能会导致漏报,因为单元测试本身可能是执行给定代码段的唯一事情.理想情况下,我会进行回归测试,以执行所有外部可用的方法,API,用户控件等,这些将用作代码覆盖率分析的基线测量,以排除某些方法的误报.但遗憾的是,我目前没有这种自动化测试.
由于我拥有如此庞大的代码库,但测试用例覆盖率如此之低,我正在寻找一些可以帮助的东西,而不需要花费大量时间来编写测试用例.
您如何使用Visual Studio 2005开发环境在Windows平台上的本机C++应用程序中以自动或半自动方式检测死代码?
我正在使用.NET Framework 3.5 SP1在Visual Studio 2008 SP1中使用ADO实体框架编写数据访问库.我试图在两个实体之间创建关联,这两个实体都是从抽象类型派生的.我使用Table Per Hierarchy(TPH)表示两个实体继承层次结构,这意味着只有两个表 - 每个实体继承层次结构一个.
注意您可以使用每种类型的表(TPT)来避免此问题,但它带来了它自身的缺点.在继承持久性模型之间进行选择时,请参阅此处和此处了解更多详细信息
以下是实体模型的Designer视图的屏幕截图:
And here is a screenshot of the database schema:
When you create associations in the ADO Entity Framework Designer between derived types modeled with TPH using Visual Studio 2008 SP1 and the .NET Framework 3.5 SP1 you are likely to receive the following an "Error 3034: Two entities with different keys are mapped to the same …