我在工作文件夹中进行了很多更改,并且在尝试进行更新时遇到了麻烦.
现在,当我发出'svn cleanup'时,我得到:
>svn cleanup .
svn: In directory '.'
svn: Error processing command 'modify-wcprop' in '.'
svn: 'MemPoolTests.cpp' is not under version control
Run Code Online (Sandbox Code Playgroud)
MemPoolTests.cpp是另一个开发人员添加的新文件,在更新中被删除.它以前在我的工作文件夹中不存在.
有什么我可以做的事情来尝试前进,而不必检查存储库的新副本?
澄清:感谢有关将目录移开并删除新副本的建议.我知道这是一个选项,但它是我想避免的一个,因为嵌套了几个目录很多变化(这应该是一个分支......)
我希望有一种更积极的方式来进行清理,也许是某种程度上强制文件SVN在回到已知状态时遇到了麻烦(我尝试删除它的工作副本......这没有帮助).
我有一个在Visual Studio 2008下编译的大型遗留C++项目.我知道有相当数量的"死"代码无法在任何地方访问 - 未调用的方法,未使用的整个类.
我正在寻找一种可以通过静态分析识别出来的工具.
这个问题:传统C/C++项目中的死代码检测建议使用代码覆盖工具.这不是一个选项,因为测试覆盖率不够高.
它还提到了一个无法访问的代码.gcc的选项.我想要一些类似于Visual Studio的东西.我们已经使用链接器的/ OPT:REF选项来删除冗余代码,但是这并没有报告死代码的有用级别(当与/ VERBOSE一起使用时,有超过100,000行,包括来自库的很多行).
有没有更好的选项适合Visual Studio项目?
在规范中描述JSON数据的最佳方法是什么?
在过去,我使用了'罗嗦'描述的例子,但感觉不精确.
似乎有一个新生的JSON模式标准,但它看起来不像一个非常活跃的项目.还有其他方法吗?
(更新)在考虑了好几天后,我喜欢使用转换约定的bmargulies建议.由于本案例中的JSON文档是.NET Web服务的出现,我将简单地用C#类语法记录模式.这可能不是非常严格,但所涉及的每个人都会理解它,并结合示例将尽快传达信息.
我们有大型C++项目,我们用它来编译/ MP交换机以利用多个内核.
但是,我们最近引入了一些在几个tlb上使用#import的代码,而#import与/ MP不兼容,这意味着我们回到单线程构建和更多时间来获取咖啡.
关于如何让#import和/ MP玩得好的任何建议?是否有一个工具可以从#import静态生成C++标头作为预构建步骤?
更新:
以下马特的建议很有效.对于其他在谷歌上绊倒这个的人:
#import
语句放在lib项目中#include
.tlh
您正在执行的生成的文件#import
/MP
开关并失去咖啡休息时间......我有一个控制器,它在一个实体上实现一个简单的Add操作,并重定向到Details页面:
[HttpPost]
public ActionResult Add(Thing thing)
{
// ... do validation, db stuff ...
return this.RedirectToAction<c => c.Details(thing.Id));
}
Run Code Online (Sandbox Code Playgroud)
这很好用(使用MvcContrib程序集中的RedirectToAction).
当我单元测试这个方法时,我想访问从Details操作返回的ViewData(所以我可以获取新插入的东西的主键并证明它现在在数据库中).
测试有:
var result = controller.Add(thing);
Run Code Online (Sandbox Code Playgroud)
但这里的结果是类型:( System.Web.Mvc.RedirectToRouteResult
这是一个System.Web.Mvc.ActionResult
).它还没有执行Details方法.
我试过调用ExecuteResult
返回的对象传递一个模拟,ControllerContext
但框架不满意模拟对象中缺乏细节.
我可以尝试填写详细信息等,但是然后我的测试代码比我正在测试的代码更长,我觉得我需要进行单元测试的单元测试!
我错过了测试哲学中的一些东西吗?当我无法进入返回状态时,如何测试此操作?
我有以下C#代码:
byte rule = 0;
...
rule = rule | 0x80;
Run Code Online (Sandbox Code Playgroud)
产生错误:
无法将类型'int'隐式转换为'byte'.存在显式转换(您是否错过了演员?)
[更新:问题的第一个版本错了......我误读了编译器输出]
添加强制转换并不能解决问题:
rule = rule | (byte) 0x80;
Run Code Online (Sandbox Code Playgroud)
我需要把它写成:
rule |= 0x80;
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪.为什么|=
操作员与操作员有什么不同|
?
有没有其他方法告诉编译器将常量视为一个字节?
@ Giovanni Galbo:是的,不是.该代码处理外部设备中闪存的编程,逻辑上代表单个字节的存储器.我可以稍后施展,但这似乎更明显.我想我的C传承太多了!
@ Jonathon Holland:'as'语法看起来更整洁但不幸的是看起来不起作用......它产生:
as运算符必须与引用类型或可空类型一起使用('byte'是不可为空的值类型)
是否可以自动/轻松地将现有WPF应用程序转换为SilverLight?
我试图提出用于高吞吐量C++服务器的最佳数据结构.数据结构将用于存储从几个到几百万个对象的任何内容,并且不需要排序(尽管可以非常便宜地提供唯一的排序键).
要求是它可以支持有效的插入,理想的是O(1),适度有效的移除和有效的遍历.它不需要支持查找操作(除了可能需要删除).
扭曲是它在修改时必须是线程安全的,而其他线程枚举数据结构.这意味着一个简单的红黑树不起作用,因为一个线程不能插入一个元素(并执行必要的树旋转)而不会弄乱其他线程持有的任何游标.
这是不接受使用读/写锁和推迟写操作,直到所有的读者已经完成,因为读操作可以长期居住.如果有读取器发生的插入对于该读取器是否可见则无关紧要.
内存占用也非常重要,小的显然更好!
有什么建议吗?
回复评论:
谢谢你的回答.
不,插入不能使现有迭代器无效.迭代器可能会或可能不会看到新插入,但是如果没有发生插入,它们必须看到他们将看到的所有内容.
删除是必需的,但是由于更高级别的规则,我可以保证迭代器永远不会停止在可以删除的项目上.
锁定游标的每个节点会对性能产生太大影响.可能有多个线程同时读取,并且多个线程在锁中使用的任何类型的内存热点都会占用内存带宽(因为我们发现了很难的方法!).即使是一个简单的多线程调用InterlockedIncrement的读者也无法完全扩展.
我同意链表可能是最好的方法.删除是罕见的,因此支持后向指针支持O(1)删除的内存代价是昂贵的,我们可以根据需要单独计算它们,因为删除往往是批处理操作.
幸运的是,只要在更改头指针之前在插入的节点中更新指针,插入到链表中就不需要对读者进行任何锁定.
锁定 - 复制 - 解锁的想法很有趣.所涉及的数据量太大,无法作为读者的默认工作,但当它们与读者发生冲突时,它可以用于作家.读/写锁将保护整个结构,如果数据结构与读取器发生冲突,则写入将克隆数据结构.写作比读取要少得多.
我有以下.NET值类型:
[StructLayout(LayoutKind.Sequential)]
public struct Date
{
public UInt16 V;
}
[StructLayout(LayoutKind.Sequential)]
public struct StringPair
{
public String A;
public String B;
public String C;
public Date D;
public double V;
}
Run Code Online (Sandbox Code Playgroud)
我有代码将指向值类型的指针传递给非托管代码,以及通过调用System.Runtime.InteropServices.Marshal.OffsetOf发现的偏移量.非托管代码填充Date和double值.
为StringPair结构报告的偏移量正是我所期望的:0,8,16,24,32
我在测试函数中有以下代码:
FieldInfo[] fields = typeof(StringPair).GetFields(BindingFlags.Instance|BindingFlags.Public);
for ( int i = 0; i < fields.Length; i++ )
{
int offset = System.Runtime.InteropServices.Marshal.OffsetOf(typeof(StringPair), fields[i].Name).ToInt32();
Console.WriteLine(String.Format(" >> field {0} @ offset {1}", fields[i].Name, offset));
}
Run Code Online (Sandbox Code Playgroud)
这打印出这些偏移.
>> field A @ offset 0
>> field B @ offset 8
>> field …
Run Code Online (Sandbox Code Playgroud) 我正在将复杂的混合C++/.NET解决方案从VS2008迁移到VS2010.
升级的解决方案适用于VS2010,但构建系统始终引用一个C++/CLI程序集.它不会重新编译任何内容,但链接器会触及该文件.导致构建中下游的连锁反应作为一大堆依赖然后得到重建.
有关如何找出它认为需要重新链接文件的原因的任何想法?我打开了详细的构建日志,但没有什么突出的.
c# ×2
c++ ×2
.net ×1
asp.net-mvc ×1
casting ×1
com ×1
concurrency ×1
dead-code ×1
jit ×1
json ×1
marshalling ×1
silverlight ×1
svn ×1
unit-testing ×1
value-type ×1
visual-c++ ×1
wpf ×1