小编Rob*_*ker的帖子

'svn cleanup'失败后该怎么办?

我在工作文件夹中进行了很多更改,并且在尝试进行更新时遇到了麻烦.

现在,当我发出'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在回到已知状态时遇到了麻烦(我尝试删除它的工作副本......这没有帮助).

svn

244
推荐指数
10
解决办法
32万
查看次数

死代码识别(C++)

我有一个在Visual Studio 2008下编译的大型遗留C++项目.我知道有相当数量的"死"代码无法在任何地方访问 - 未调用的方法,未使用的整个类.

我正在寻找一种可以通过静态分析识别出来的工具.

这个问题:传统C/C++项目中的死代码检测建议使用代码覆盖工具.这不是一个选项,因为测试覆盖率不够高.

它还提到了一个无法访问的代码.gcc的选项.我想要一些类似于Visual Studio的东西.我们已经使用链接器的/ OPT:REF选项来删除冗余代码,但是这并没有报告死代码的有用级别(当与/ VERBOSE一起使用时,有超过100,000行,包括来自库的很多行).

有没有更好的选项适合Visual Studio项目?

c++ static-analysis dead-code

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

如何在规范中描述JSON数据?

在规范中描述JSON数据的最佳方法是什么?

在过去,我使用了'罗嗦'描述的例子,但感觉不精确.

似乎有一个新生的JSON模式标准,但它看起来不像一个非常活跃的项目.还有其他方法吗?


(更新)在考虑了好几天后,我喜欢使用转换约定的bmargulies建议.由于本案例中的JSON文档是.NET Web服务的出现,我将简单地用C#类语法记录模式.这可能不是非常严格,但所涉及的每个人都会理解它,并结合示例将尽快传达信息.

json

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

替换Visual C++中的#import

我们有大型C++项目,我们用它来编译/ MP交换机以利用多个内核.

但是,我们最近引入了一些在几个tlb上使用#import的代码,而#import与/ MP不兼容,这意味着我们回到单线程构建和更多时间来获取咖啡.

关于如何让#import和/ MP玩得好的任何建议?是否有一个工具可以从#import静态生成C++标头作为预构建步骤?

更新:

以下马特的建议很有效.对于其他在谷歌上绊倒这个的人:

  1. 创建一个单独的静态lib项目
  2. 设置足够的包含,以便您可以将该#import语句放在lib项目中
  3. 使您的主项目依赖于lib项目(以确保正确的构建顺序)
  4. 将lib项目的临时构建文件夹添加到主项目的包含路径
  5. #include.tlh您正在执行的生成的文件#import
  6. 启用/MP开关并失去咖啡休息时间......

com visual-c++

29
推荐指数
3
解决办法
5168
查看次数

使用RedirectToAction对ASP.NET MVC 2中的控制器进行单元测试

我有一个控制器,它在一个实体上实现一个简单的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但框架不满意模拟对象中缺乏细节.

我可以尝试填写详细信息等,但是然后我的测试代码比我正在测试的代码更长,我觉得我需要进行单元测试的单元测试!

我错过了测试哲学中的一些东西吗?当我无法进入返回状态时,如何测试此操作?

asp.net-mvc unit-testing

20
推荐指数
4
解决办法
8268
查看次数

C#数字常量

我有以下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'是不可为空的值类型)

c# casting

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

将WPF应用程序转换为SilverLight

是否可以自动/轻松地将现有WPF应用程序转换为SilverLight?

silverlight wpf silverlight-2.0

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

并发数据结构设计

我试图提出用于高吞吐量C++服务器的最佳数据结构.数据结构将用于存储从几个到几百万个对象的任何内容,并且不需要排序(尽管可以非常便宜地提供唯一的排序键).

要求是它可以支持有效的插入,理想的是O(1),适度有效的移除和有效的遍历.它不需要支持查找操作(除了可能需要删除).

扭曲是它在修改时必须是线程安全的,而其他线程枚举数据结构.这意味着一个简单的红黑树不起作用,因为一个线程不能插入一个元素(并执行必要的树旋转)而不会弄乱其他线程持有的任何游标.

这是接受使用读/写锁和推迟写操作,直到所有的读者已经完成,因为读操作可以长期居住.如果有读取器发生的插入对于该读取器是否可见则无关紧要.

内存占用也非常重要,小的显然更好!

有什么建议吗?

回复评论:

谢谢你的回答.

不,插入不能使现有迭代器无效.迭代器可能会或可能不会看到新插入,但是如果没有发生插入,它们必须看到他们将看到的所有内容.

删除是必需的,但是由于更高级别的规则,我可以保证迭代器永远不会停止在可以删除的项目上.

锁定游标的每个节点会对性能产生太大影响.可能有多个线程同时读取,并且多个线程在锁中使用的任何类型的内存热点都会占用内存带宽(因为我们发现了很难的方法!).即使是一个简单的多线程调用InterlockedIncrement的读者也无法完全扩展.

我同意链表可能是最好的方法.删除是罕见的,因此支持后向指针支持O(1)删除的内存代价是昂贵的,我们可以根据需要单独计算它们,因为删除往往是批处理操作.

幸运的是,只要在更改头指针之前在插入的节点中更新指针,插入到链表中就不需要对读者进行任何锁定.

锁定 - 复制 - 解锁的想法很有趣.所涉及的数据量太大,无法作为读者的默认工作,但当它们与读者发生冲突时,它可以用于作家.读/写锁将保护整个结构,如果数据结构与读取器发生冲突,则写入将克隆数据结构.写作比读取要少得多.

c++ concurrency data-structures

14
推荐指数
2
解决办法
6089
查看次数

内存中.NET值类型的布局

我有以下.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)

.net c# jit marshalling value-type

13
推荐指数
2
解决办法
3064
查看次数

VS2010始终重新链接项目

我正在将复杂的混合C++/.NET解决方案从VS2008迁移到VS2010.

升级的解决方案适用于VS2010,但构建系统始终引用一个C++/CLI程序集.它不会重新编译任何内容,但链接器会触及该文件.导致构建中下游的连锁反应作为一大堆依赖然后得到重建.

有关如何找出它认为需要重新链接文件的原因的任何想法?我打开了详细的构建日志,但没有什么突出的.

visual-studio-2010

11
推荐指数
1
解决办法
8603
查看次数