2011-06-20 65 views
6

没有太多容易找到有关的Visual Studio 2010中的自定义代码分析规则,虽然这是我的问候,我的问题已经找到信息引用自定义代码分析规则库...使用规则集文件

sample library on CodePlex示出了如何部署自定义代码分析规则库,它使用一个安装项目倾倒图书馆的DLL到Program Files文件夹 - >微软的Visual Studio 10.0 - >团队工具 - >静态分析工具 - >的FxCop - >规则

而且,一个非常有用的how-to blog post by Duke Kamstra还建议图书馆的DLL复制到%程序Files%\微软的Visual Studio 10.0 \团队工具\静态分析工具\ FxCop的\规则

我的选择是避免在这样的全球定位坚持的DLL。我想有相对于我的Visual Studio解决方案的DLL,这样,当我更新了一些自定义代码分析规则的变化DLL,然后我不需要采取额外的步骤,以保持DLL了最新的依赖性。我

一个完美的解决办法是有我的自定义* .ruleset文件知道该DLL的相对路径的,但我一直在这样做不成功。

有什么建议吗?

回答

4

在您的.ruleset文件中,您应该能够将相对路径添加到自定义规则DLL。例如:

<?xml version="1.0" encoding="utf-8"?> 
<RuleSet Name="Sample" Description="Sample ruleset" ToolsVersion="10.0"> 
    <RuleHintPaths> 
    <Path>..\Tools\FxCop\SomeRules.dll</Path> 
    <Path>..\Tools\FxCop\SomeOtherRules.dll</Path> 
    </RuleHintPaths> 
    ... 
</RuleSet> 
+0

你碰巧知道路径是相对的吗?它是否与.ruleset文件的位置相关? – RobSiklos

+0

路径与项目有关。 – Raithlin

3

我发现即使是正确的项目相对相对路径(如Nicole's answer提供)到我的自定义规则汇编并没有引起我的规则出现在规则集编辑器,而在同一组件上的绝对路径做使规则显示出来。当我启用规则,然后将路径更改回相对路径时,规则仍保留在编辑器中,并在源分析过程中运行。如果我用指定的相对路径取消选中规则,则规则消失 - 这看起来像是规则编辑器中的一个错误。因此,如果您的规则在指定相对路径时似乎不出现,请尝试使用绝对规则,启用规则,然后切换回相对路径(相对于@Raithlin的项目位置)。

0

这个问题似乎也影响VS 2013年我发现,手动输入的相对路径规则装配从装配的规则将导致在这些规则中出现,当我使用Visual Studio的规则集打开规则集设计师UI。规则也将被运行。

所以操作CustomRules.ruleset看起来是这样的,其中SR1000SomeRules.dll规则和SOR1000SomeOtherRules.dll。请注意,这些工具的版本是12.0为Visual Studio 2013年

<?xml version="1.0" encoding="utf-8"?> 
<RuleSet Name="Sample" Description="Sample ruleset" ToolsVersion="12.0"> 
    <RuleHintPaths> 
    <Path>..\Tools\FxCop\SomeRules.dll</Path> 
    <Path>..\Tools\FxCop\SomeOtherRules.dll</Path> 
    </RuleHintPaths> 
    <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed"> 
    <Rule Id="SR1000" Action="Error" /> 
    <Rule Id="SOR1000" Action="Warning" /> 
    <!-- etc. --> 
    </Rules> 
</RuleSet> 

请注意,您可以轻松地通过添加包括标准的Microsoft规则包括像这样RuleSet

<Include Path="minimumrecommendedrules.ruleset" Action="Default" /> 
0

我使用Visual Studio C#2015与更新2。我的自定义规则不显示在Visual Studio 2015的规则集编辑器中。但是,当我运行CodeAnalysis时,如果有任何违规,则会出现违规。我RuleHintPath看起来是这样的,是相对于规则集文件的位置:

<RuleHintPaths> 
    <Path>..\Rules</Path> 
</RuleHintPaths> 

如此,因为违规被发现,它是规则DLL是由给定的相对路径找到了一个事实。为什么规则不在规则集编辑器中显示是一个问题。这就是为什么我假设编辑错误。