我正在尝试按照this StackOverflow的建议来记录我的命名空间:
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.")]
让Sandcastle和StyleCop发挥出色的最好方法是什么?
我知道我可以更改Sandcastle帮助文件构建器中的设置以记录命名空间,但除非我需要,否则我宁愿不要因为我希望所有文档都在源代码级别可用。我也不想完全禁用这些规则,因为在大多数情况下它们 非常有用。
答案 0 :(得分:1)
我认为没有开箱即用的解决方案。我认为在保持清洁的同时你能做的最好的事情就是实现你自己的StyleCop规则。您可以考虑在“SandCastle上下文”下触发规则SA1402和SA1202 的规则,除非。然后在StyleCop配置中禁用规则SA1402和SA1202。
您可以查看如何为StyleCop following this link创建规则。
答案 1 :(得分:1)
仅仅为了参考,我虽然应该记录我最终做的事情。
基本上,我刚刚为我拥有的每个命名空间创建了一个新的.cs
文件(例如,FooDoc.cs
命名空间的Foo
,并将我的代码格式化为:
// <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
{
}
}
这有点像黑客一面,因为我基本上只是添加一个额外的文件来记录我的命名空间,但它确实让我在项目中保持100%的文档和Sandcastle兼容,而不会破坏Stylecop或其他代码我一直在使用的分析工具。