标签: fxcop

链接到Microsoft编码标准/最佳实践文档?

任何人都可以发布Microsoft开发最佳实践和指南的链接?

我为此搜索了高低,似乎无法找到我正在寻找的资源.特别是我期待微软发布的开发指南,以概述.net开发中的最佳实践...它包含关闭连接,命名约定,异常处理......

我记得当我在前一段时间定义公司SDLC并做FxCop工作和设置时,我从微软那里得到了一个很强大的.net开发,FxCop检查并执行.

有人可以帮我再次找到这个吗?!?!?

.net asp.net fxcop

5
推荐指数
1
解决办法
2665
查看次数

FxCop:CA1033 - 微软对ReadOnlyCollection的实现违反了这一点?

如果查看只读集合的​​代码,它没有"添加"方法,而是定义ICollection<T>.Add(T Value)方法(显式接口实现).

当我用我的ReadOnlyDictionary类做了类似的事情时,FxCop 10抱怨我打破了CA1033.

public class ReadOnlyDictionary<TKey, TValue> : IDictionary<TKey, TValue>
{
    //CA1033 ERROR
    void IDictionary<TKey, TValue>.Add(TKey, TValue) { //Throw Exception }
}

public class ReadOnlyDictionary<TKey, TValue> : IDictionary<TKey, TValue>
{
    //NO CA1033 ERROR
    Add(TKey, TValue) { //Throw Exception }
}
Run Code Online (Sandbox Code Playgroud)

ReadOnlyCollectionClass:

public class ReadOnlyCollection<T> : ICollection<T>
{
    void ICollection<T>.Add(T item) { //Throw Exception }
}
Run Code Online (Sandbox Code Playgroud)

那么,这是误报吗?微软的基本代码是坏的吗?是什么赋予了?

c# fxcop explicit-interface readonly-collection

5
推荐指数
1
解决办法
1480
查看次数

FxCop Phoenix分析引擎出错

所以我试图运行一系列在RuleSet中定义的规则.RuleSet文件实际上是使用Sonarqube生成的 - 我已经选择了绝对的所有规则,包括FxCop,ReSharper和StyleCop规则.我正在开这样的FxCop:

C:/FxCop/FxCopCmd.exe /file:C:\TestProject\bin\TestProject.dll /ruleset:=C:\TestProject\testproject.ruleset /out:C:\TestProject\fxcop-report.xml /outxsl:none /forceoutput /searchgac /aspnet
Run Code Online (Sandbox Code Playgroud)

它正确启动,但我收到以下消息:

初始化Introspection引擎...
分析...
初始化Phoenix引擎......
分析...
分析完成.
*1总分析引擎异常.

XML输出包含以下内容:

<Exception Keyword="CA0001" Kind="Engine">
    <Type>Phx.FatalError</Type>
    <ExceptionMessage>Exception of type 'Phx.FatalError' was thrown.</ExceptionMessage>
    <StackTrace>   at Phx.FatalError.Dispatch()
        at Phx.Logging.Diagnostics.DiagnosticMessage.LogMessage(Severity severity, DiagnosticInfo diagnosticInfo, SourceContext sourceContext, String descriptionString)
        at Phx.PE.PEUtilities.UserError(String infoMessage)
        at Phx.Pdb.ReaderImplementation.Open(Boolean loadTypeOnly)
        at Phx.PEModuleUnit.LoadPdb()
        at Phx.PE.ReaderPhase.CheckSymbolicInformation()
        at Phx.PEModuleUnit.LoadGlobalSymbols()
        at Phx.PEModuleUnit.LoadEncodedIRUnitList()
        at Phx.PEModuleUnit.GetEnumerableContributionUnit(ContributionUnitEnumerationKind contributionUnitEnumerationKind)
        at Phx.PEModuleUnit.GetEnumerableContributionUnit()
        at Microsoft.FxCop.Engines.Phoenix.PreScanPass.GetFunctionUnits(PEModuleUnit peModuleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PreScanPass.Execute(ModuleUnit moduleUnit)
        at Phx.Passes.Pass.DoPass(ModuleUnit moduleUnit)
        at Phx.Passes.PassList.DoPassList(ModuleUnit moduleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.Host.ExecutePasses(PEModuleUnit peModuleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.AnalyzeInternal()
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.Analyze()
        at …
Run Code Online (Sandbox Code Playgroud)

code-analysis fxcop static-code-analysis

5
推荐指数
2
解决办法
1595
查看次数

在FxCop中创建自定义规则

我想在FXCop中创建额外的规则.自定义规则,以帮助确保特定的最佳实践,如检查内联sql.

我真的在寻找好的资源和例子.谢谢!

.net code-analysis fxcop static-analysis

4
推荐指数
1
解决办法
3414
查看次数

4
推荐指数
1
解决办法
3175
查看次数

FxCop在VB.NET上和在C#上一样有价值

我一直在使用FxCop查看我们的一些VB.NET dll,并且所有错误都与DLL设置(即强名称,文化信息)和变量方法的情况有关.

看一下FxCop检查C#Dll的几个例子,它似乎提供了更多的潜在错误.

这是否意味着FxCop对于VB.NET或我刚刚选择的不良示例的C#开发更有价值.

我认为FxCop是在处理IL而不是特定语言的情况下,所以我只是缺少VB.NET的规则文件,还是有更多可用于C#的文件?

vb.net fxcop

4
推荐指数
1
解决办法
996
查看次数

4
推荐指数
1
解决办法
1328
查看次数

FxCop不尊重我的排除

我正在尝试将FxCop直接合并到我的构建中.我正在使用MSBuild社区任务.我有一个像这样的目标文件:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
        <FxCopToolPath Condition="'$(FxCopToolPath)' == ''">$(MetaSharpLibPath)\FxCop</FxCopToolPath>
        <FxCopCustomDictionary Condition="'$(FxCopCustomDictionary)' == ''">$(FxCopTooLPath)\CustomDictionary.xml</FxCopCustomDictionary>

        <MSBuildCommunityTasksLib>..\MSBuild.Community.Tasks\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib>
    </PropertyGroup>

    <UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FxCop" />

    <Target Name="AfterBuild" >

        <ItemGroup>
            <FxCopRuleAssemblies Include="DesignRules.dll" />
            <FxCopRuleAssemblies Include="GlobalizationRules.dll" />
            <FxCopRuleAssemblies Include="InteroperabilityRules.dll" />
            <FxCopRuleAssemblies Include="MobilityRules.dll" />
            <FxCopRuleAssemblies Include="NamingRules.dll" />
            <FxCopRuleAssemblies Include="PerformanceRules.dll" />
            <FxCopRuleAssemblies Include="PortabilityRules.dll" />
            <FxCopRuleAssemblies Include="SecurityRules.dll" />
            <FxCopRuleAssemblies Include="SecurityTransparencyRules.dll" />
            <FxCopRuleAssemblies Include="UsageRules.dll" />

            <FxCopTargetAssembly Include="@(MainAssembly)" />
        </ItemGroup>

        <FxCop
            ToolPath="$(FxCopToolPath)"
            CustomDictionary="$(FxCopCustomDictionary)"
            RuleLibraries="@(FxCopRuleAssemblies)"
            TargetAssemblies="@(FxCopTargetAssembly)"
            DependencyDirectories="@(ReferencePath)"
            FailOnError="True"
            ConsoleXslFileName="$(FxCopToolPath)\Xml\VSConsoleOutput.xsl"
            DirectOutputToConsole="true" />

    </Target>

</Project>
Run Code Online (Sandbox Code Playgroud)

它工作得很好,除了我添加[SuppressMessage]警告时它们仍然显示在我的输出中.我创建了一个.fxcop项目文件并包含输出程序集并尝试以这种方式运行它,但同样的事情发生了.似乎FxCop不尊重我的压抑,任何想法?

这是一个无效的抑制示例(GlobalSuppressions.cs):

[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = …
Run Code Online (Sandbox Code Playgroud)

c# msbuild fxcop msbuildcommunitytasks

4
推荐指数
1
解决办法
1316
查看次数

C#中重载的构造函数类似于Delphi(具有多个名称)

我试图将一些代码从Delphi移植到C#,我发现了一个无法以合理的方式实现的构造,同时遵守.NET Framework设计指南(我在问题的最后解决).

显然,C#,Java,C++(以及许多其他语言)提供了方法/构造函数重载的含义,但Delphi构造函数还可以有多个名称.这样就可以编写直接代表意图的代码:

var
  Data, ParI, ParD, Locl: TDataElement;
begin
  Data := TDataElement.Create('Element');
  ParI := TDataElement.CreateParam('IntElement', 22);
  ParD := TDataElement.CreateParam('DblElement', 3.14);
  Locl := TDataElement.CreateLocal('LocalElement');
  // ... use the above objects ...
end;
Run Code Online (Sandbox Code Playgroud)

简化代码如下:

unit DataManager;

interface

TDataElement = class
  FName: string;
  FPersistent: Boolean;
public
  constructor Create(AName: string);
  constructor CreateParam(AName: string; DefaultInt: Integer); overload;
  constructor CreateParam(AName: string; DefaultDouble: Double); overload;
  constructor CreateLocal(AName: string);
  property Name: string read FName;;
  property Persistent: Boolean read FPersistent;
end;

implementation

constructor TDataElement.Create(AName: string);
begin
  FName := …
Run Code Online (Sandbox Code Playgroud)

c# delphi constructor fxcop overloading

4
推荐指数
1
解决办法
617
查看次数

为什么FxCop坚持使用IDisposable作为结构

我的一个项目中的代码类似于以下代码:

internal enum ArtworkType
{
    Undefined = 0,
    Bmp = 1,
    Gif = 2,
    Jpeg = 3,
    Png = 4
}

[StructLayout(LayoutKind.Sequential)]
internal struct TagArtwork
{
    internal IntPtr data;
    internal int size;
    internal ArtworkType type;
}
Run Code Online (Sandbox Code Playgroud)

当我在这段代码上运行FxCop时,我会遇到警告CA1049.此结构用于与本机代码库的互操作性,因此它几乎必须具有此布局.为什么FxCop让我对这个结构感到悲伤?我在同一个源文件中有其他结构,也有IntPtr成员,但FxCop不抱怨这些.

例如,下面的代码并没有引发同样的警告:

internal enum ItemType
{
    Implicit = 0,
    Utf8 = 1,
    Utf16 = 2,
    Sjis = 3,
    Html = 6,
    Xml = 7,
    Uuid = 8,
    Isrc = 9,
    Mi3p = 10,
    Gif = 12, …
Run Code Online (Sandbox Code Playgroud)

c# fxcop

4
推荐指数
1
解决办法
408
查看次数