标签: code-analysis

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

如何分析二进制文件?

我有一个二进制文件.我不知道它是如何格式化的,我只知道它来自delphi代码.

是否存在分析二进制文件的任何方式?

是否存在任何"模式"来分析和反序列化具有未知格式的文件的二进制内容?

binary serialization code-analysis reverse-engineering

26
推荐指数
6
解决办法
6万
查看次数

什么是"天真"算法,什么是"封闭式"解决方案?

关于描述算法时使用的术语的语义,我有几个问题.

首先,'天真'算法是什么意思?这与给定问题的其他解决方案有何不同?解决方案可采取哪些其他形式?

其次,我听到很多关于采用"封闭式"解决方案的建议.我不知道这意味着什么 - 但通常在尝试解决复发关系时出现...

谢谢你的时间

algorithm code-analysis

26
推荐指数
2
解决办法
2万
查看次数

Spaghetti代码可视化软件?

一堆意大利面条刚落在我的桌子上,我的任务是理解它(所以我可以重构/重新实现它).

代码是C,以及一堆全局变量,结构类型和函数调用.

我想用信息绘制代码
图:- 调用图
- 哪些结构类型用于哪些函数
- 哪个全局变量用于什么函数

希望这样可以更容易地识别连接的组件,并将它们提取到单独的模块中.

为了类似的目的,我尝试了以下软件:
- ncc
- ctags
- codeviz/gengraph
- doxygen
- egypt
- cflow
EDIT2:
- frama -c
- snavigator
- 了解

这些的缺点要么是
a)要求我能够编译代码.我的代码无法编译,因为缺少部分源代码.
b)预处理器宏的问题(如cflow,谁想要执行#if语句的两个分支).通过cpp运行会弄乱行号.
c)我出于某种原因无法让软件做我想做的事情(比如doxygen;调用图生成的文档不容易找到,因为它似乎无法绘制变量/数据类型,可能不值得花更多时间学习doxygen的配置选项).编辑:我确实遵循了这些Doxygen instrcutions,但它只绘制了头文件依赖项.

我在Linux上,所以如果该软件适用于Linux和免费软件,那将是一个巨大的优势.不确定我的老板是否明白需要购买可视化器:-(

例如:一个命令行工具列出了在哪些函数中引用符号(=函数,变量,类型)将会有很大的帮助(如addr2line,但对于类型/变量名称/函数和源代码).

//Ť

c linux visualization code-analysis

26
推荐指数
2
解决办法
3268
查看次数

您使用哪些工具和技术来查找死代码?

您使用哪些工具和技术在.NET中查找死代码?

在过去,我使用Obsolete属性修饰方法(传递true,因此编译器将发出错误,如MSDN中所述).

我有兴趣看到其他人的建议(除了像FxCop或ReSharper这样的工具).我想确保我不会错过其他有用的工具.

.net c# refactoring code-analysis

25
推荐指数
2
解决办法
2万
查看次数

如何在Visual Studio 2010 Professional中启用代码分析?

我可以看到我们可以在Visual Studio Team Systems中启用代码分析.但我使用的是Visual Studio 2010 Professional.

我们是否有任何选项可以在此版本中启用代码分析,或者我们是否可以将任何工具(如FxCop和StyleCop)与此版本集成以验证代码.

我期待我的代码应该在我构建解决方案的那一刻进行分析.

如果有人意识到这一点,请与我分享一些解决方案.

code-analysis fxcop visual-studio

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

嵌套使用语句和Microsoft代码分析

最近我开启了额外的代码分析规则.令我惊讶的是,我在一个我一直在考虑作为最佳实践的地方看到了违规行为.如果我有两个嵌套的一次性用品,我会使用两个这样的语句:

    using (StringReader strReader = new StringReader(xmlString))
    using (XmlReader xmlReader = XmlReader.Create(strReader))
    {
        result.ReadXml(xmlReader);
    }
Run Code Online (Sandbox Code Playgroud)

这也对应于C#中高评级的Q&A 嵌套使用语句

我得到的违规声明如下:

Warning 18  CA2202 : Microsoft.Usage : Object 'strReader' can be disposed more
than once in method '????'. To avoid generating a System.ObjectDisposedException
you should not call Dispose more than one time on an object.: Lines: ??
Run Code Online (Sandbox Code Playgroud)

我所做的是一个直观的尝试和错误,认为外部流的关闭也可能会处理内部的我快速修复我的代码,如下所示:

    using (XmlReader xmlReader = XmlReader.Create(new StringReader(xmlString)))
    {
        result.ReadXml(xmlReader);
    }
Run Code Online (Sandbox Code Playgroud)

胡拉!警告消失了.但是,田田!新的一个发生:

Warning 18  CA2000 : Microsoft.Reliability : In method '????????', object 
'new StringReader(xmlString)' is …
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis fxcop

25
推荐指数
1
解决办法
4559
查看次数

如何检测代码更改频率?

我正在研究由几个技术水平差异很大的人编写的程序.那里的文件从未改变过(可能永远不会,因为我们害怕触摸它们)和其他不断变化的文件.

我想知道,是否有任何工具可以查看整个仓库历史(git)并对给定文件的更改频率进行分析?还是打包?还是项目?

值得认识的是(例如)我们花了25%的时间在一组软件包上工作,与"正常工作"的代码相比,这将是指示性或代码的脆弱性.

code-analysis

25
推荐指数
4
解决办法
3898
查看次数

源代码注释工具

我正在寻找一个可以用来注释源代码的工具.

我有一些我需要了解的第三方源代码(JavaScript),我不想更改它(添加内联注释)以便

  • 行号可以保持不变(与他人沟通),
  • 我可以避免意外改变某些东西
  • 与作者的评论相比,我的注释更加突出.

通常情况下,我会在上面写一个涂鸦的全部内容,但代码太长了,我需要按电子邮件分享.如果能够做到这一点,我会很高兴,包括能够在代码中的这些位置之间创建"链接",甚至可能在视觉上用线条或箭头.

javascript code-analysis annotations

24
推荐指数
1
解决办法
3981
查看次数

识别R函数和脚本的依赖关系

我正在筛选使用该包的包和脚本,并希望识别外部依赖项.目标是修改脚本以指定library(pkgName)和修改要使用的包中的函数require(pkgName),以便稍后这些依赖性将更加明显.

我正在修改代码以考虑每个外部相关的包.作为一个例子,虽然它绝不是决定性的,但我现在发现很难识别依赖的代码data.table.我可以取代data.tableMatrix,ggplot2,bigmemory,plyr,或许多其他包,所以随时与基于其他包的例子来回答.

这种搜索并不是特别容易.我到目前为止尝试过的方法包括:

  • 搜索代码libraryrequire语句
  • 搜索data.table(例如library(data.table))的提及
  • 尝试运行codetools::checkUsage以确定可能存在某些问题的位置.对于脚本,我的程序将脚本插入本地函数并应用于checkUsage该函数.否则,我checkUsagePackage用于包.
  • 寻找有些独特的陈述data.table,例如:=.
  • 查找可通过匈牙利表示法识别对象类的位置,例如 DT

我搜索的本质是找到:

  • 装载data.table,
  • 名称表明它们是data.table对象的对象,
  • 似乎是data.table特定的方法

唯一容易的部分似乎是找到包装的位置.不幸的是,并非所有函数都可以显式加载或需要外部包 - 这些可能假设它已经被加载.这是一个不好的做法,我正在努力解决它.但是,搜索对象和方法似乎具有挑战性.

这(data.table)只是一个包,一个似乎是有限的和一些独特的用法.假设我想寻找ggplot函数的用法,其中选项更广泛,并且语法的文本不是特殊的(即频繁使用+不是特殊的,而:=似乎是).

我不认为静态分析会给出一个完美的答案,例如,可以将参数传递给函数,该函数指定要加载的包.尽管如此:是否有任何核心工具或软件包可以通过静态或动态分析改进这种强力方法?

对于它的价值,tools::pkgDepends只能解决包级别的依赖关系,而不是函数或脚本级别,这是我正在处理的级别.


更新1:应该工作的动态分析工具的一个示例是报告在代码执行期间加载哪些包的工具.我不知道R中是否存在这样的功能 - 这就像Rprof报告输出search()而不是代码堆栈一样.

dependencies code-analysis r

24
推荐指数
1
解决办法
3757
查看次数