有些人可能在这个可爱的文章都有所涉猎- http://igoro.com/archive/quicksort-killer/ \
真正有趣的是他如何修复快速排序以在O(N log N)中对定义的对手执行.
快速排序可以选择中间元素作为每一步的枢轴,从而始终将输入序列的完美分割为两半.可以在O(N)运行时间确定性地找到中位数,因此总运行时间总是O(N log N).
我的问题是,线性时间中值查找算法最终不会使用相同的比较函数并以O(N ^ 2)而不是O(N)执行?
编辑:
确切地说:我质疑基于分区的中值选择算法的复杂性,该算法使用类似于快速排序的策略,它将使用与快速排序使用的相同的比较功能.如何在这个对手的O(N)中运作?
我在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?
是否有(首选免费)工具可以分析方法中可能有多少种不同的组合?我目前正在重构一个有很多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) 当存在需要的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)
但是,我觉得这太冗长了.
有哪些替代品?
我正在尝试将自定义FxCop(=代码分析)规则从Visual Studio 2010迁移到Visual Studio 2012.
到目前为止,它们工作正常,除了一件事:它们的名称在结果窗口中是空白的(View- > Other windows- > Code Analysis),只有CheckId和Resolution显示,而名称显示为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) Visual Studio 2013是否具有显示未使用功能的功能?
删除这些功能的最佳解决方案是什么?
通常我会使用SyntaxFactory但我无法弄清楚如何用它创建一个真或假节点.
我有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服务; 网络服务; 控制台应用.大小解决方案.
我想从rubocop中排除一个全局变量,但我无法找到规则名称.我尝试添加
GlobalVars:
Exclude:
- redis
Run Code Online (Sandbox Code Playgroud)
到.rubocop.yml,但没有运气.
错误说 Do not introduce global variables.
我正在尝试将代码分析引入我们的项目,因此我开始使用.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的一些奇怪的错误?谢谢