2013-07-02 9 views
1

나는 this StackOverflow의 답변에서 권장하는 내 네임 스페이스를 문서화하기 위해 노력하고있어 :Sandcastle을 사용하여 네임 스페이스를 문서화 할 때 Stylecop이 불평을 멈추게하려면 어떻게해야합니까?

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

단지 참조 용으로, 나는 내가 끝내었던 것을 문서화해야하지만.

기본적으로, 난 그냥 (예를 들어, Foo 네임 스페이스에 대한 FooDoc.cs) 한 각 네임 스페이스에 대한 새로운 .cs 파일을 만든, 그래서처럼 내 코드를 포맷 :

// <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 측면에 약간의 기본적으로 내 네임 스페이스를 문서화하기 위해 추가 파일을 추가하고 있기 때문에 프로젝트 및 Sandcastle 호환 문서에서 100 % 내 문서를 보관할 수있게되었습니다. 사용하고있는 Stylecop 또는 다른 코드 분석 도구를 뒤집어 놓지 않고 그대로 두었습니다.

1

상자 밖의 해결책은 없다고 생각합니다. 당신이 할 수있는 최선의 일은 여전히 ​​자신의 StyleCop 규칙을 구현하는 것입니다. "SandCastle context"에서이 아닌 한 규칙 SA1402 및 SA1202 을 트리거하는 규칙을 고려할 수 있습니다. 그런 다음 StyleCop 구성에서 SA1402 및 SA1202 규칙을 비활성화합니다.

StyleCop following this link에 대한 규칙을 만드는 방법을 살펴볼 수 있습니다.