标签: code-analysis

软件测试时的清洁空间

我想检查我的代码在使用我没有代码的其他库时的操作方式.虽然我可以在线进行此操作(即使用来自SysInternals的FileMon,RegMon和TCPView),但我想知道是否有一个好的离线方法可以让我在虚拟机中运行我的代码,关闭虚拟机并使整个差异化虚拟机映像?

testing code-analysis stress-testing

3
推荐指数
2
解决办法
253
查看次数

具有许多条件返回语句的重构方法

我有一个验证方法,有许多条件语句.基本上就是这样

If Check1 = false 
  return false
If Check2 = false
  return false
etc
Run Code Online (Sandbox Code Playgroud)

FxCop抱怨说圈复杂度太高了.我知道在函数中间使用return语句不是最佳实践,但与此同时,我看到的唯一替代方法是一个丑陋的If-else语句列表.解决这个问题的最佳方法是什么?

提前致谢.

.net refactoring code-analysis fxcop

3
推荐指数
1
解决办法
1143
查看次数

代码分析警告CA2000:对对象'new ContainerControlledLifetimeManager()'调用Dispose

我在一些单元测试中收到代码分析警告:

WidgetManagerTests.cs(40):CA2000:Microsoft.Reliability:在方法'WidgetManagerTests.TestInitialize()'中,在对所有引用超出范围之前,在对象'new ContainerControlledLifetimeManager()'上调用System.IDisposable.Dispose.

我正在使用Unity和Moq,这是违规行:

var loggingServiceMock = new Mock<ILoggingService>();
            this.unityContainer.RegisterInstance<ILoggingService>(loggingServiceMock.Object, new ContainerControlledLifetimeManager());
Run Code Online (Sandbox Code Playgroud)

code-analysis fxcop unity-container

3
推荐指数
1
解决办法
2604
查看次数

如何在程序集中找到实例化类X对象的所有方法?

这里有趣的问题:在我目前的项目中,我们使用的是一个配置非常大的自定义性能监控套件(它使用Perfmon,因此我们必须手动注册每个性能计数器.我们监控的每个方法都有一个性能计数器,并且那里有很多).

我想知道是否有任何工具可以让我分析项目程序集,找到实例化类XClass实例的所有方法,然后将它们写入文件?这将允许我大幅削减我需要做的手动配置量.

谢谢,艾德

编辑

对不起,'把它们写到文件'的事情有点人为:我真的需要用一些额外的数据重新格式化它们并用特定于配置的XML格式编写它们.如果我可以对其进行编码以便将其设置为构建任务(因此我不必手动运行),这将是最好的,并且可以轻松地进行任何未来的更改并记录等.

c# configuration code-analysis

3
推荐指数
1
解决办法
577
查看次数

如何在解决方案中找到最长的方法/类?

对于代码分析目标,我想知道一些关于我的项目的有趣统计数据.即类,方法,最长的类,最长的方法等的数量等.是否有任何好的工具,或者Visual Studio的扩展?

我查看了codecity,但它只能分析我没有的MSE文件,并且具有我在过去5年中看到的最差接口,但功能几乎是我需要的.

.net c# code-analysis visual-studio

3
推荐指数
2
解决办法
2617
查看次数

Port Eclipse Problems查看到IDEA/Android studio的配置

我正在使用Intellij IDEA/Android Studio.

我被要求不做任何提交,除非我的代码在Eclipse IDE的Problems View中没有触发任何警告.

那么,有没有快速的方法将Eclipse的分析配置移植到IDEA?

谢谢.

eclipse code-analysis intellij-idea

3
推荐指数
1
解决办法
232
查看次数

求出递归T(n)= T(n/2)+ T(n/4)+ T(n/8)?

我正在努力解决复发问题T(n) = T(n/8) + T(n/2) + T(n/4).

我认为首先尝试使用递归树方法,然后将其用作我对替换方法的猜测是个好主意.

对于树,因为在非叶级别没有工作,我认为我们可以忽略它,所以我试图在叶子的#上面提出一个上限,因为这是唯一相关的东西.

我认为树的高度是最长的路径T(n/2),它产生的高度为log2(n).那么我想树完成后,与各级充满(即我们有3T(n/2)),所以我们必须3^i在每一个级别的节点,所以n^(log2(3))离开.T(n)然后将O(n^log2(3)).

不幸的是,我认为这是一个不合理的上限,我想我已经让它有点太高了......关于如何解决这个问题的任何建议?

math big-o recurrence code-analysis asymptotic-complexity

3
推荐指数
1
解决办法
6788
查看次数

我是否可以强制执行POCO中的字段只能在类型初始化器中设置?

如果我有这样的POCO:

[Poco]
public class MyPoco
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

......它的初始化如下:

new MyPoco { FirstName = "Joe", LastName="Bloggs", Address="123 Abc St." }
Run Code Online (Sandbox Code Playgroud)

我是否可以在NDepend中使用CQL,确保只使用上面的对象初始化程序设置属性,而不是单独设置.

我正试图抓住这样的代码:

myPoco.FirstName="John";
doSomething(myPoco);
Run Code Online (Sandbox Code Playgroud)

...我不希望人们在现有的POCO上设置属性.我理解我可以创建setter private,但我不喜欢传入构造函数中的所有属性,因为你最终会得到一个签名MyPoco(string, string, string)- 使得更容易错位参数(比使用对象初始化语法更容易)

所以,我想用NDepend来捕获它.这是我的CQL查询的开始:

from f in JustMyCode.Fields.Where(f=>
   f.ParentType.HasAttribute ("JetBrains.Annotations.PocoAttribute".AllowNoMatch())) 
       where f.MethodsAssigningMe [I'M STUMPED HERE]
Run Code Online (Sandbox Code Playgroud)

看起来我可以分析设置POCO属性的方法,但是我需要更低一步并检查代码块以查看它是否在对象初始化块中.

这可能吗?

c# code-analysis ndepend cql poco

3
推荐指数
1
解决办法
138
查看次数

Visual Studio 2012代码分析错误CA0058

我目前正在开发一个包含多个项目的解决方案,当我尝试从VS12运行代码分析工具时,我在尝试运行它时遇到以下错误:

CA0058运行代码分析错误CA0058:找不到引用的程序集"Microsoft.Practices.Unity,Version = 2.1.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35".此程序集是分析所必需的,并通过以下方式引用:C:\ MyProject\bin\Release\MyProject.exe,C:\ MyProject\packages\Prism.UnityExtensions.4.1.0.0\lib\NET40\Microsoft.Practices.Prism.UnityExtensions .dll文件.[错误和警告](全球)

我还有两个错误:

CA0052:未选择任何目标

和

CA0055运行代码分析时出错CA0055:C:\ MyProject\bin\Release\IntraEUA管理软件2.0.exe读取模块"Microsoft.Practices.Prism.UnityExtensions"时遇到以下错误:无法解析程序集引用:Microsoft.Practices. Unity,Version = 2.1.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35.[错误和警告](全球)

但奇怪的是,在我的解决方案中我没有使用ersion 2.1.505.0的UnityExtensions,我使用的是4.1.0.0.甚至更奇怪的是,在此解决方案中的所有其他项目中,使用完全相同的UnityExtensions版本,即使PublicKeyToken在所有其他项目中也是相同的.

我试图在整个解决方案中搜索字符串"2.1.505.0"并没有找到任何内容.所以VS在哪里获取此信息?

顺便说一下,我使用NuGet获得了UnityExtension.并尝试删除并重新安装UnityExtensions,但没有任何效果.我正在使用.NET 4.5.

任何想法摆脱这个,可能是错误的错误?或者至少有一种解决方法可以忽略它?

.net c# code-analysis visual-studio visual-studio-2012

3
推荐指数
1
解决办法
3143
查看次数

自定义词典不使用代码分析

我的源代码中有一个类:

public class TypeUserdef : SymbolType
Run Code Online (Sandbox Code Playgroud)

这是一个用于XML序列化的DTO,现在代码分析报告了一个警告:

MSBUILD : warning CA1704: Microsoft.Naming : Correct the spelling of 'Userdef' 
in type name 'TypeUserdef'.
Run Code Online (Sandbox Code Playgroud)

我将条目放入用户词典(我的项目中的客户词典设置为buildAction ="CodeAnalysisDictionary"):

<Dictionary>
  <Words>
    <Recognized>
      <word>userdef</word>
    </Recognized>
  </Words>
</Dictionary>
Run Code Online (Sandbox Code Playgroud)

现在有趣的是,这本词典在很多术语中表现得非常好.只是术语"userdef"和"vars"报告错误.(甚至可以忽略同一代码文件中的拼写错误).上述条款有什么特别之处?

naming code-analysis visual-studio-2013

3
推荐指数
1
解决办法
1422
查看次数