Sonar + ReSharper包含链接文件的项目

时间:2014-11-23 17:17:24

标签: c# resharper sonarqube

我有一个包含多个项目的Visual Studio / C#解决方案。有些项目链接到其他目录中的源代码(在多个项目中使用的共享代码)。

当运行Sonar时,它似乎运行良好(虽然我不确定它是否真的有效!),并且当在Sonar外部运行ReSharper时它也运行良好。但是,当从Sonar运行ReSharper时,我最终得到了很多 17:44:37.607 INFO - 在第6259行删除ReSharper问题,其文件为" C:\ GitRepos \ myProject \ Code \ Shared.All \ Core \ StorageSqlCe.cs"不在SonarQube中。 (这是我分析C:\ GitRepos \ myProject \ Code \ Server \ project的时候)

它不是一个真正的多模块项目(因为我不想分析所有的Shared.All目录 - 只有从我的项目链接的文件(本例中为Server))。

有谁知道如何处理这个问题?如果我忽略每个项目中的内容并对Shared.All文件夹进行分析,那么我将使用ReSharper失败,因为那里没有VS项目文件......

我无法更改代码的项目结构。在特殊文件夹中共享代码的设计可能不是最好的,但这是很久以前我们不得不忍受的设计。那么,我如何与Sonar合作呢?

1 个答案:

答案 0 :(得分:1)

如果我正确理解您,您有一个共享文件夹,位于与您的项目相同级别的文件系统上:

  • Solution.sln
  • PROJECT1 \
    • ...
  • Project2的\
    • ...
  • 共享\
    • ...

如果您使用的是Visual Studio Bootstrapper插件,则始终在分析多模块项目:每个Visual Studio项目都成为SonarQube模块。为解决方案本身创建了一个主项目(没有源代码)。

SonarQube存在一个限制:模块的所有源都必须位于模块的文件夹中,例如,计算相对路径(等)才能正常工作。

您案例中的“共享”文件夹不属于任何项目,因此无法在SonarQube中导入。

您有几种选择:

  1. 接受SonarQube中未分析共享代码
  2. 不再依赖Visual Studio Bootstrapper插件,并将整个解决方案分析为单个SonarQube项目。但是,您将遇到其他限制(例如https://jira.codehaus.org/browse/SONARFXCOP-36
  3. 我建议短期使用选项1,同时在Visual Studio Bootstrapper上等待此票证不再创建要实现的SonarQube模块:https://jira.codehaus.org/browse/SONARVS-59