2013-07-02 70 views
1

我想所推薦的this StackOverflow的答案來記錄我的命名空間:如何讓Stylecop在使用Sandcastle記錄命名空間時停止抱怨?

namespace Test 
{ 
    /// <summary> 
    /// The documentation for my namespace goes here. 
    /// </summary> 
    [System.Runtime.CompilerServices.CompilerGenerated] 
    internal class NamespaceDoc 
    { 
    } 

    // (other classes below...) 
} 

然而,增加這對我的文件引起了StyleCop發出幾個錯誤。具體來說,它抱怨文檔只能包含一個根級別的類(SA1402),並且所有內部類都必須位於公共類之後(SA1202)。

我能得到加入了StyleCop忽略第二個警告:

[System.Diagnostics.CodeAnalysis.SuppressMessage(
    "StyleCop.CSharp.OrderingRules", 
    "*", 
    Justification = "Hack for Sandcastle.")] 

不過,我是不是能夠得到它忽略第一個警告。我試圖將另一個屬性,但是這並沒有這樣的伎倆:

[System.Diagnostics.CodeAnalysis.SuppressMessage(
    "StyleCop.CSharp.Maintainability", 
    "*", 
    Justification = "Hack for Sandcastle.")] 

什麼是讓沙堡和了StyleCop發揮好最好的方法是什麼?

我知道我可以將Sandcastle幫助文件構建器中的設置更改爲文檔名稱空間,但我寧願不除非需要,因爲我希望所有文檔都可以在源代碼級別使用。我也不想完全禁用這些規則,因爲他們在大多數情況下都很有用。

回答

1

只是爲了參考,我雖然應該記錄我最終做了什麼。

基本上,我剛剛創建了一個新的.cs文件每個命名空間我有(例如,FooDoc.csFoo命名空間),並格式化我的代碼如下所示:

// <copyright file="FooDoc.cs" company="Bar Company"> 
//  Copyright (c) 2013 Bar Company. All rights reserved. 
// </copyright> 

namespace Foo 
{ 
    /// <summary> 
    /// Documentation here. 
    /// </summary> 
    [System.Runtime.CompilerServices.CompilerGenerated] 
    internal class FooDoc 
    { 
    } 
} 

這一點上的hackish側,因爲我基本上只是添加一個額外的文件來記錄我的命名空間,但它確實讓我在項目中保持100%的文檔和Sandcastle兼容,而不會擾亂我一直使用的Stylecop或其他代碼分析工具。

1

我不認爲有任何解決方案開箱即用。我認爲在保持清潔的同時你可以做的最好的事情就是實施你自己的StyleCop規則。您可以考慮觸發規則SA1402和SA1202 的規則,除非在「SandCastle上下文」下的。然後在您的StyleCop配置中,禁用規則SA1402和SA1202。

您可以看看如何爲StyleCop following this link創建規則。

相關問題