标签: code-analysis

关于快速排序杀手

有些人可能在这个可爱的文章都有所涉猎- http://igoro.com/archive/quicksort-killer/ \

真正有趣的是他如何修复快速排序以在O(N log N)中对定义的对手执行.

快速排序可以选择中间元素作为每一步的枢轴,从而始终将输入序列的完美分割为两半.可以在O(N)运行时间确定性地找到中位数,因此总运行时间总是O(N log N).

我的问题是,线性时间中值查找算法最终不会使用相同的比较函数并以O(N ^ 2)而不是O(N)执行?

编辑:

确切地说:我质疑基于分区的中值选择算法的复杂性,该算法使用类似于快速排序的策略,它将使用与快速排序使用的相同的比较功能.如何在这个对手的O(N)中运作?

algorithm code-analysis quicksort

6
推荐指数
1
解决办法
1928
查看次数

代码分析 - CA1704:纠正'Ps'的拼写

我在VS2010的代码分析中收到以下警告

CA1704:Microsoft.Naming:在成员名称"MyClass.PsCalculatedAmount"中更正"Ps"的拼写,或者如果它表示任何类型的匈牙利表示法,则将其完全删除.

现在我的代码库'Ps'意味着'每股'并且被大量使用,所以我想允许它作为可接受的单词/首字母缩略词.

我尝试将其添加到我的CustomDictionary.xml下

<Words>
    <Recognized>
        <Word>ps</Word>
...
    <Recognized>
<Words>
Run Code Online (Sandbox Code Playgroud)

并尝试过

<Acronyms>
    <CasingExceptions>
        <Acronym>Ps</Acronym>
    ...
    <CasingExceptions>
<Acronyms>
Run Code Online (Sandbox Code Playgroud)

但我仍然得到警告.

有什么我应该采取不同的做法吗?

我注意到FXCop中有一个关于此问题的错误现已修复; http://social.msdn.microsoft.com/Forums/en/vstscode/thread/54e8793c-e821-49b2-80db-ea1420acf1e6

在我正在使用的Visual Studio版本中是否仍然存在此错误:V10.0.30319?

code-analysis suppress-warnings visual-studio

6
推荐指数
1
解决办法
7121
查看次数

.net - 如何分析方法中有多少不同的代码路径

是否有(首选免费)工具可以分析方法中可能有多少种不同的组合?我目前正在重构一个有很多if/switch语句的方法,我很好奇这个方法有多少可能的不同执行方式.

假设我有一个简单的方法:

public void DoSomething(bool flag1, int value)
{

    if (flag1)
    {
        if (value > 0)
        {
            Console.WriteLine("Flag1 & value > 0");
            return;
        }
        else
        {
            Console.WriteLine("Flag1 & value <= 0");
            return;
        }
    }
    elseif (value > 0 and value < 10)
    {
        Console.WriteLine("Flag1 is false and value between 0 & 10");
        return;
    }

    if (value < 0)
    {
        Console.WriteLine("Flag1 = false & value <= 0");
        return;
    }
    elseif(value = 0)
    {
        Console.WriteLine("Flag1 = false & value >= 10");
        return; …
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis code-coverage

6
推荐指数
1
解决办法
1404
查看次数

CA1305:指定文化时的详细程度

当存在需要的IFormatProvider过载但在代码中未使用此过载时,CA1305会引发.

例如,以下代码引发此警告:

string.Format("{0} - {1}", id, name);
Run Code Online (Sandbox Code Playgroud)

摆脱此警告的明显方法是指定要使用的文化:

string.Format(CultureInfo.InvariantCulture, "{0} - {1}", id, name);
Run Code Online (Sandbox Code Playgroud)

但是,我觉得这太冗长了.

有哪些替代品?

.net c# code-analysis localization

6
推荐指数
1
解决办法
1395
查看次数

FxCop自定义规则在VS2012中没有名称(但"官方"规则有名称)

我正在尝试将自定义FxCop(=代码分析)规则从Visual Studio 2010迁移到Visual Studio 2012.

到目前为止,它们工作正常,除了一件事:它们的名称在结果窗口中是空白的(View- > Other windows- > Code Analysis),只有CheckId和Resolution显示,而名称显示为Microsoft的规则:

该名称在自定义规则的CheckId右侧不可见,但在Microsoft规则中可见.

令人感到奇怪的是,这个名字是在规则集编辑器中可见:

该名称在规则集编辑器中的两个规则上都可见

我的规则出了什么问题?

细节

以下是两个规则在MSBuild输出中的显示方式(那里有一些可疑的东西,但我不明白为什么我有不同的消息):

6>c:\Users\Me\MySolution\MyProject\Program.cs(15): warning : CA1804 : Microsoft.Performance : 'Foo<T>.SomeMethod()' declares a variable, 'z', of type 'int', which is never used or is only assigned to. Use this variable or remove it.
6>MSBUILD : warning : CF1001 : CustomRules.ThreadSafety : The public Public Field "Tests.Program.Foo" must be preceded of readonly
Run Code Online (Sandbox Code Playgroud)

以下是我的规则的XML文件中的规则声明:

<?xml version="1.0" encoding="utf-8" ?>
<Rules …
Run Code Online (Sandbox Code Playgroud)

code-analysis fxcop visual-studio-2012

6
推荐指数
1
解决办法
1005
查看次数

如何在Visual Studio 2013中删除未使用的函数

Visual Studio 2013是否具有显示未使用功能的功能?

删除这些功能的最佳解决方案是什么?

.net code-analysis visual-studio visual-studio-2013

6
推荐指数
2
解决办法
6116
查看次数

在Roslyn(Microsoft CodeAnalysis)中,如何创建布尔文字?

通常我会使用SyntaxFactory但我无法弄清楚如何用它创建一个真或假节点.

c# code-analysis roslyn

6
推荐指数
1
解决办法
223
查看次数

使用所有cpu的VS 2015 Update 3 vbcscompiler.exe

我有Visual Studio 2015 版本14.0.25431.01更新3.当我使用我的解决方案时,它会随机开始使用所有CPU.有时,当我不在VS窗口,或只是键入代码.

如果我打开任务管理器,我看到vbcscompiler.exe正在使用90-100%的CPU.我有英特尔酷睿i7 2.7GHz,8核,我认为它应该能够毫无问题地处理它.

这冻结了我的电脑,我不能做任何事情10-20秒,这是非常令人沮丧的.

有谁知道可能是什么问题?

-------------- 4/12/2017更新--------------

vbcscompiler.exe的单个实例正在运行.适用于Windows服务; 网络服务; 控制台应用.大小解决方案.

见下面的任务管理器截图. 在此输入图像描述

c# code-analysis visual-studio-2015

6
推荐指数
1
解决办法
3050
查看次数

如何从rubocop中排除全局变量?

我想从rubocop中排除一个全局变量,但我无法找到规则名称.我尝试添加

GlobalVars:
  Exclude:
    - redis
Run Code Online (Sandbox Code Playgroud)

到.rubocop.yml,但没有运气.

错误说 Do not introduce global variables.

ruby code-analysis global-variables rubocop

6
推荐指数
2
解决办法
1962
查看次数

在解决方案级别管理Microsoft和StyleCop代码分析规则

我正在尝试将代码分析引入我们的项目,因此我开始使用.NET Framework和.NET Standard项目的解决方案.

我按照本教程进行了总结,这就是我所做的:

  • SolutionName.ruleset在解决方案级别添加了一个文件
  • stylecop.json在解决方案级别添加了一个文件,并将该文件作为每个项目中的链接引用
  • StyleCop.Analyzers 1.1.0-beta009在每个项目上安装Nuget包
  • 安装Microsoft.NetCore.Analyzers在.NET Standard项目和Microsoft.NetFramework.Analyzers.NET Framework项目中

首先,Visual Studio看起来很麻烦,但这可能是由于我不明白的一些黑魔法.

如果我单击解决方案资源管理器中的规则集文件,我会点击并勾选每个规则组的几个复选框,然后重新构建以查看错误列表窗口中的更改,但在很短的时间后它就不会再工作了.我甚至试图取消选择一切,重新建立,我的所有警告仍在这里.使它们消失的唯一方法是关闭Visual Studio.

如屏幕截图所示,我花费了.NET标准库项目调用ConfigLibrary,看它有几个相关的分析器.

在此输入图像描述

问题是所有这些规则似乎来自Nuget包的DLL C:\Users\user\.nuget\packages\stylecop.analyzers\1.1.0-beta009\analyzers\dotnet\cs\StyleCop.Analyzers.dll.

如果我取消选择StyleCop.Analyzers规则集文件中的规则,它什么都不做,如果我使用搜索文本框搜索这些规则代码,则表明它们未被选中.但最终这些规则仍然适用......

当我尝试StyleCop.Analyzers为所有项目卸载Nuget包时,即使在我的规则集文件中选择了规则,我也不会得到所有这些警告.

另外我的规则集文件经常被自动重写,我不知道是什么过程.即使重新启动Visual Studio,规则也不再有效

在此输入图像描述

那么在.NET Framework和.NET Core项目的解决方案级别处理一些代码分析规则的正确方法是什么?

如何避免分析器的DLL覆盖我的规则集文件中定义的规则?是否有一种解决方法可以使Visual Studio正确刷新应用的规则?Build,Rebuild并且Run code analysis on solution都是错误的,只重新启动Visual Studio工作,但它是一种繁重的解决方法,尤其是所有这些规则......

是我不理解基础概念还是面对.NET Core的一些奇怪的错误?谢谢

.net code-analysis stylecop visual-studio .net-core

6
推荐指数
1
解决办法
442
查看次数