我必须分析一些现有的Erlang代码.
有没有人知道一个能够以可视/图形方式跟踪模块调用的工具?
行为应该是:给出一个包含源代码的目录,并获取调用的gui/picture /文件(module1-> module2-> module3 ....).
像UML逆向工程,但是ala Erlang?
谢谢.
我有一个遗留的C代码集合,我正在重构,以便从GUI中分离出C计算代码.由于重度递归的数学核心代码是K&R样式声明,这很复杂.由于嵌套使用了函数参数,我已经放弃了将这些转换为ANSI声明的尝试(只是无法获得最后4个编译器错误).
我需要将一些文件移动到一个纯DLL中,并确定要公开的最小接口,这需要编写包装函数来发布一个类型化的接口.
我已经使用Doxygen @callergraph标记标记了关键源文件,因此为各个函数生成了信息图.除此之外我想做的是合并这些图,这样我就可以确定暴露于外部世界的最窄函数边界.
原始头文件没有用 - 它们将所有内容公开为非类型化C函数.
有数百个函数如此简单地检查生成的调用程序图是很痛苦的.
我正在考虑编写某种DOT合并工具 - 设置DOT_CLEANUP = NO使Doxygen离开中间的DOT文件而不是保留他们生成的png文件.
我并不痴迷于这是一个图形解决方案 - 如果有人能够建议使用Doxygen的XML输出来实现相同目标的替代分析工具(免费或相对便宜)或技术,我会很高兴.
在文件级别合并的调用图确实对客户端文档有一定的吸引力,而不是简单的列表:-)
我通常m_在private田野和s_前面的static成员面前添加一个.
用像这样的代码
protected static readonly Random s_Random = new Random ();
Run Code Online (Sandbox Code Playgroud)
我通过VS2008的代码分析得到以下警告:
CA1709:Microsoft.Naming:通过将其更改为"S"来更正成员名称"Bar.s_Random"中's'的大小写.CA1707:Microsoft.Naming:从成员名称"Bar.s_Random"中删除下划线.如何解决这个问题?我应该简单地删除s_?或者为此警告添加全局抑制?
编辑:我的公司缺乏编码标准,所以我可以为我的代码定义它们.(是的我懂...)
如果你认为s_一般应该删除,我很高兴你能提供官方消息来源.
c# code-analysis fxcop naming-conventions visual-studio-2008
我们有一个包含15个项目的解决方案,所有项目都启用了代码分析.
该解决方案很容易建立60秒,这是一个很长的时间坐等.
如果我禁用代码分析,它会构建10个sesonds.
我希望能够在临时基础上禁用代码分析.但是我仍然希望在签入之前构建时进行代码分析,并且我希望我们的构建服务器(Cruise Control)能够在启用代码分析的情况下继续运行.
我更喜欢如果代码分析是从Visual Studio中运行的,所以如果我收到错误/警告,我可以直接跳转到源代码.
我不是要求StyleCop或Fxcop提供的静态代码分析.两者都有不同的目的,它很好.我在问是否有办法找到用户控件或子模块的代码覆盖率?例如,您有一个在单独的程序集中使用帮助程序类的应用程序.为了确保单元测试代码覆盖率,我们需要运行应用程序并确保使用NCover或类似工具.
我的要求是,如果没有运行它,是否有可能找到辅助类或类似程序集的代码覆盖?
我正在重构一个庞大的代码库中的讨厌,需要找到一个特定的方法,接受一个相当通用的接口的实例,用该接口的特定实现调用.
例如,在NastyStatic是的DoBadThings(IBusinessObject)方法.我有大约50个IBusinessObject在我的业务库中实现的类,包括DontHurtMe : IBusinessObject.
我怎样才能找到每一个电话NastyStatic.DoBadThings(foo),但只能找到foo一个实例DontHurtMe?
编辑:我正在使用某种静态分析工具.在DoBadThings(或类似)中设置动态监视并运行应用程序并不是一个真正的选择.由于我所做的更改,它已经抛出一个异常DontHurtMe,并且有太多的代码路径可以找到所有这些用法(至少在它上线并且我的用户开始抱怨之前).
在消除了一些特定的无意义模式之后,我需要识别并可能删除在某个界面中声明的字段,如下所示:
public interface X
{
String A = "xxx";
String B = "zzz";
}
Run Code Online (Sandbox Code Playgroud)
当然,我可以使用Eclipse的"查找所有引用"作为一个接一个的标识符,但面对成千上万的标记,让它在未来几天看起来像一个非常枯燥的全职工作.
我尝试了Google CodePro和Java编译器可以按需吐出的警告,但是只找到了类中非公共字段的选项,而不是接口中的公共字段.
我的下一个尝试是:将它们全部注释掉,然后浏览错误列表.错误列表中没有的所有字段都可以安全地(在我的情况下!)被删除.这将是一个平淡的日子,也因为不是所有的字段列表,也具有积极的参考我要寻找那些所有的字段列表没有任何地方提及.
那么我怎样才能有效地找到所有那些现在没有参考的领域呢?
我的意思是:我认为查看给定项目的那些引用是危险的,因为我的Eclipse工作区不知道的另一个项目可能有引用.这可能是我不在Eclipse或CodePro中提供警告/分析选项的基本原理.
但事实并非如此.如果它不是我的项目中的引用,我想消除它.
我正在使用WinPcap库并设置了所有本机方法调用.在构建时,我获得CA2101:为P/Invoke字符串参数指定编组代码分析警告.我的extern函数定义如下:
[DllImport("wpcap", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
internal static extern int pcap_compile(IntPtr /* pcap_t* */ adaptHandle,
IntPtr /*bpf_program **/fp,
string /*char * */str,
int optimize,
uint netmask);
Run Code Online (Sandbox Code Playgroud)
如果我更改CharSet为CharSet.Unicode,我解决了代码分析警告,但我的功能不再有效.如何解决警告并保持代码正常工作?
我正在使用Eclipse Juno(Service Release 1)并从http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/安装了最新版本的PMD插件 我可以配置插件并选择应该执行哪些规则但不幸的是,没有检查规则.如果我单击PMD子菜单中的"检查代码",会弹出一个对话框,说"使用xxx规则检查0"
必须配置什么以及在何处启用该功能?在控制台上PMD运行正常.
我是代码分析的新手,在这里我不知道vs2012中的代码分析工具和Fxcop工具之间的区别和用法.
请提供一些细节.
code-analysis ×10
c# ×4
.net ×2
fxcop ×2
refactoring ×2
c++ ×1
call-graph ×1
codepro ×1
doxygen ×1
eclipse ×1
erlang ×1
graphviz ×1
java ×1
ncover ×1
pmd ×1