我刚试过FxCop.它确实检测未使用的私有方法,但不检测未使用的公共 是否有可以下载的自定义规则,插件将检测未在同一程序集中调用的公共方法?
我最近安装了Eclipse Metrics插件并导出了我们的一个项目的数据.
拥有这些漂亮的图表非常好,但我真的想深入了解它们的意思.指标的定义只是告诉你它的真正含义.
有没有人知道任何好的资源,书籍,网站等,可以帮助我更好地理解所有数据的含义,并在必要时了解如何改进代码?
我对Efferent Coupling和Cyclomatic Complexity等感兴趣,而不是每行方法的代码行数.
有没有人对汇编文件分析工具有任何建议?我试图在传递-S选项时分析LLVM(或GCC)生成的ARM/Thumb-2 ASM文件.我对基本块级别的指令统计特别感兴趣,例如内存操作计数等.我可能最终在Python中使用我自己的工具,但很想知道在我开始之前是否有任何现有工具.
更新:我已经做了一些搜索,发现拆卸工具/十六进制编辑器的/ etc一个很好的资源在这里,但不幸的是它主要集中在x86汇编,也没有包括任何实际的汇编文件分析器.
我知道代码行(LoC)是一个可疑的,如果不是错误的代码度量标准,并且有很多帖子可以达到这种效果.
但是......我仍然需要在报告中为网站提供LoC计数.
我正在使用Visual Studio 2010代码分析代码度量标准功能来获取LoC,当我想知道它是如何处理或如何计算HTML,CSS和Javascript?
VS帮助文本提供了该指标的描述 -
代码行 - 表示代码中的大致行数.计数基于IL代码,因此不是源代码文件中的确切行数.非常高的计数可能表明某种类型或方法试图做太多工作而应该分开.它也可能表明类型或方法可能难以维护.
所以我的多部分问题是...... HTML,CSS,Javascript是否被编译为IL,如果确实如此,那么我应该假设它包含在VS LoC指标中吗?如果它没有被编译到IL,那么在我的报告的LoC指标中计算或包含HTML,CSS和Javascript的最佳方法是什么?或者他们甚至应该被包括在LoC中?
javascript css code-analysis code-metrics visual-studio-2010
Entity Framework Code First中的一对多或多对关系如下所示: -
public class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这违反了代码分析规则2227"集合属性应该只读".
使setter受到保护并没有帮助,并将其设为私有: -
public class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
然后当然违反了CA1811"Foo.Bars.set(ICollection <Bar>)似乎没有上游公共或受保护的呼叫者".
我宁愿不全局关闭规则,因为它存在的预防情况相当重要,但每次我想声明关系时在本地抑制它似乎都没有了.有没有办法声明不违反CA2227的关系?
我们有一个巨大的,旧的,可怕的代码库,几乎不可能在需要时找到它.我们正在努力改进它,当然......但我经常发现自己正在做大量的递归greps来搜索文件的内容以找到使用的地方.
是否有一个工具可用于在目录中构建文本文件的全文索引,然后从命令行查询?
喜欢可以在用户空间中运行并且不需要守护进程的东西.我们的开发服务器上有很多用户,所以我想要一些可以搜索我的代码库实例的东西.
public abstract class MyBase
{
public abstract bool MyProperty
{
get;
protected set;
}
}
public class MyClass : MyBase
{
public MyClass()
{
this.MyProperty = true;
}
public override bool MyProperty
{
get;
protected set;
}
}
Run Code Online (Sandbox Code Playgroud)
构造函数MyClass()导致CA2214:
不要在构造函数中调用可覆盖的方法.
这通常仅显示是否调用与构造函数在同一类中定义的虚方法.例如访问MyPropertyinside MyBase的构造函数.在这里,我调用非虚拟重写的实现在派生类的构造函数中继承的抽象属性.
我正在尝试为我的CMake驱动项目启用代码分析.我生成Visual Studio 2013解决方案,并希望使用特定规则集启用代码分析.我知道我可以通过在我的CMake文件中指定add_definitions("/ analyze")来启用代码分析,但是如何控制使用哪个规则集?
据我所知,控制使用的规则集的唯一方法是通过项目文件中的xml元素CodeAnalysisRuleSet,但我无法从CMake访问它.
我试图在整个类中禁用代码分析规则,但不是整个项目,只是一个类.在下面的示例中,构建生成CA1822警告,因为它认为单元测试方法应该是静态的.
修复是将以下属性添加到每个单元测试方法:
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
然而,这很繁琐,并且混乱了许多单元测试.
我试过了:
#pragma warning disable CA1822
#pragma warning restore CA1822
这两种方法都没有奏效.
public class TestClass
{
public TestClass()
{
// some setup here
}
[Fact]
public void My_Unit_Test1()
{
// the 'this' parameter is never used, causes CA warning 1822
}
[Fact]
public void My_Unit_Test2()
{
// the 'this' parameter is never used, causes CA warning 1822
}
}
Run Code Online (Sandbox Code Playgroud)
使用VS2015 Update 2,.net 4.61和新的代码分析分析器.
构建我正在开发的应用程序需要花费很多时间.它是我工作过的最大的一个.我试图调整gradle设置,这有帮助,但仍然构建很慢.
由于应用程序是在没有模块的情况下构建的,它只是一大堆软件包,现在我想知道如何"提取"它们中的一些并将它们放入单独的模块中.AFAIK模块不应该依赖于app模块,所以我想知道是否有一种工具或技术可以让我分析代码并帮助我找到正确的包来提取,因为它是很多代码.
你会如何解决我的问题?
code-analysis ×10
.net ×3
c# ×2
.net-4.6 ×1
android ×1
assembly ×1
c++ ×1
cmake ×1
code-metrics ×1
command-line ×1
css ×1
fxcop ×1
gcc ×1
gradle ×1
inheritance ×1
javascript ×1
linux ×1
llvm ×1
metrics ×1
virtual ×1