1

我遇到了 StyleCop 的问题,这很可能是一件愚蠢的小事,但我无法纠正它,它让我发疯,因为它让我失去了很多时间。我希望你能帮助我。

问题如下:我正在与一些同事一起从事一个大型项目,因此代码由 Subversion 控制,并以树状文件夹层次结构排列。我们在这个项目中使用 StyleCop,我们希望对所有源代码文件应用相同的设置和相同的字典。

为了做到这一点,我将设置文件放在根目录中,以便编译器在编译项目的任何源代码文件时可以访问它,正如此处指定的那样。

但我的麻烦在于字典。我希望字典文件与设置文件放在同一目录中,因此它也受版本控制。问题是,理论上,根据这个,我可以指定一个相对于设置文件位置的路径,并且将在那里搜索字典。

所以,我只想告诉 StyleCop 在设置文件本身所在的同一文件夹中搜索字典!但我似乎无法写出表示“当前文件夹”的相对路径。我已经尝试了很多东西:., ".", $., $(.), ./, .\, %.%... 在设置文件中,实际上是一个 XML 文件,它看起来像这个:

<StyleCopSettings Version="105">
  <GlobalSettings>
    <CollectionProperty Name="DictionaryFolders">
      <Value>%.%</Value> <!-- Relative paths here-->
      <Value>.</Value>
      <Value>./</Value>
      <Value>.\</Value>
      <!-- etc -->
    </CollectionProperty>
  </GlobalSettings>
...

但是这些语法都不起作用。事实上,它们中的许多使编译器报告它无法解析 XML 设置文件的警告。

我错过了什么?正确的语法是什么样的?还是我做错了什么?

我希望我已经清楚地表达了我的观点,我非常感谢一些帮助。

问候,艾丽西亚。

编辑:

我终于设法从不同的角度解决了这个问题。我没有使用与设置文件放在同一文件夹中的字典,而是在设置文件本身中添加了我需要的单词,如下所示:

<StyleCopSettings Version="105">
  <GlobalSettings>
    <CollectionProperty Name="RecognizedWords">
      <Value>aa</Value>
      <Value>aspx</Value>
      <Value>clk</Value>
      <Value>dll</Value>
      <!-- etc -->
    </CollectionProperty>
  </GlobalSettings>
...
4

1 回答 1

0

以下对我有用:

<GlobalSettings>
<CollectionProperty Name="DictionaryFolders">
  <Value><![CDATA[\]]></Value>
</CollectionProperty>
</GlobalSettings>

提示:我得出这个结论是因为当我在 DictionaryFolders 属性中添加“..”时,我在 StyleCop.Utils.MakeAbsolutePath 类中得到了 NullReferenceException。所以看起来 StyleCop 开发人员只是没有以防御方式开发他们的 MakeAbsolutePath 方法,他们期望一个前导“\”。

于 2014-01-13T12:59:48.717 回答