我有一个NDepend版本用于构建服务器,并自动生成NDepend报告.因此,每晚构建都会发挥作用,并生成NDepend报告/ XML.我现在想要做的是跟踪一些时间因素的指标.
因此,例如,在y轴上具有特定类型或命名空间(例如,传入耦合)的图形与x轴上的时间可能是很好的.我知道我可以比较两个NDepend构建并具有代码和度量差异,但我想要做的是比较相同的单个度量或N个构建的度量以查看正在进行的趋势.
我有点假设当前没有一个工具可以做到这一点,而且我必须自己动手,但如果有一个,我肯定喜欢在投入时间之前听到它.那么,NDepend本身是否支持这样的东西,或者是否存在某些我可以使用的实用工具?
除了NDepend之外,我也愿意接受其他可以实现这一目标的技术建议,尽管由于已经投入了NDepend并熟悉它的工作方式,我对NDepend有很强的偏好.
提前致谢.
如果我有这样的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属性的方法,但是我需要更低一步并检查代码块以查看它是否在对象初始化块中.
这可能吗?
我已经安装了NDepend(14天试用版)作为Visual Studio 2015扩展,它现在可以使用了.
我想在我的解决方案中获得一些类的一些指标:
我没有从官方网站上找到任何有用的指示,有人知道吗?
谢谢.
您是否尝试将每个组件的主序距离保持在低位?那些只包含Business Objects定义的程序集呢?是否有可能让他们远离疼痛区?这种组件中的类型通常由其他组件使用,而且非常具体.如何处理这种情况?
我刚刚通过NDepend运行我的一个项目,报告将我的组件放在痛苦区域的角落.我只是想知道这是否应该让我担心.
疼痛区真正意味着什么?这不是说有很多耦合,事情不容易改变.
我最近删除了很多接口并密封了很多类,因为我不希望用户扩展API(仅在某些地方).它是com对象的.NET包装器,因此用户不需要扩展任何东西.
有什么好办法让我走出痛苦的区域?
谢谢
我正试图用ndepend来分析一个网站(用asp.net构建).
如果看看关于"未使用的代码/死代码"的CQL查询,该工具几乎引用了我的所有方法(包括onload,onprerender,......),这显然是错误的.
有谁知道我能做些什么来获得更好的结果?提前致谢
我们使用TeamCity进行持续集成,我们的源代码控制是Git,我们有一个主要的存储库,包含多个.sln文件(大约10个).
总而言之,这个存储库大约有100到200个C#项目.
在推送到主存储库后,TeamCity会触发一个构建,该构建将编译存储库中的所有项目.
我希望能够告诉哪些项目实际上受到特定提交的影响,因此只将这些项目的输出发布为当前构建的工件.
为此,我设计了一个解决方案,将NDepend集成到我们的构建过程中,并在当前和最新构建输出之间生成差异报告.已更改/添加的输出将作为构建输出发布.
我对NDepend的经验不多; 从我所看到的,它所有的真正力量都来自于它的查询语言.
我想知道如何(如果可能的话)我可以实现以下目标:
这种情况可能吗?这有多容易/多难?