2

我在TFS 2010上获得了自己的一份力,而且我开始尝试设置持续集成构建。为此,我使用的默认构建模板(DefaultTemplate.xml)配置为Code Analysis,设置为Always在TFS2010上设置代码分析时隐藏编译错误

一切工作正常......除非没有。当在构建(或测试失败)的错误,在TFS报告唯一可用的误差只有当没有代码分析报告以下

Unable to read Code Analysis output report. Make sure that the directory is writable (default is the project output directory).

原来的错误。没有错误时,代码分析报告将被正确输出。

任何想法?

回答

1

我想到的是以下几点:

  • 代码分析过,没有错误:体形是罚款
  • 代码分析关,建立自己的错误:工作流不指望一个代码分析文件产生,原错误显示,确定。
  • 代码分析,无错误:分析输出生成,一切正常。
  • 代码分析,构建错误:由于构建错误,不执行代码分析,不生成输出文件。然而,工作流期望找到一个输出文件,它找不到它,这成为构建异常中记录的主要错误,隐藏了原来的错误。

所以请检查您的构建模板中项目的顺序,看看是否适用,并更改它以确保在发生构建错误时不要求代码分析输出。

+0

实际上代码分析已无意中被修改,并报告在每种情况下的错误:-(但鉴于所述问题,你的答案似乎是正确的:-) – Mac

5

关于“无法读取代码分析输出报告”错误:

  • 如果在Visual Studio编译时发生,这可能是因为所产生的日志文件路径太长(Ref)
  • 如果在TFS编译中编译时发生这种情况,这是因为该项目包含不需要的元素<CodeAnalysisLogFile><CodeAnalysisInputAssembly>(Ref)

在我们的解决方案中,每个项目都导入一个Common.Targets文件 - 我打算覆盖这些文件,从而避免所有未来项目的问题。

+0

在我的如果CodeAnalysisLogFile指向bin/Debug,而项目输出指向bin/x86/Debug,但在构建期间,只创建bin/x86/Debug,而不是代码分析日志文件所需的bin/Debug。 – Christian

0

我已经在我们的CI服务器上并行构建了一个与msbuild并行(/ m开关)的解决方案,并且发生了相同的错误(其他文件锁定特定的错误也是如此:进程无法访问文件xyz,因为它正在被另一个过程)。结论:删除/ m,因为它是不安全的:-(