c语言的重构、清理与代码分析图形化浏览工具: CScout

网址:  

https://www.spinellis.gr/cscout/

https://www2.dmst.aueb.gr/dds/cscout/index.html

https://github.com/dspinellis/cscout

 

 

还有一个工具叫Xrefactory,它可以分析c++程序。 cscout只能分析c程序。具体如下:

A tool adopting an approach similar to ours is Vittek's Xrefactory [59]. Its functionality is integrated with the Emacs editor [51]. Compared to CScout, Xrefactory supports C++, and thus also offers a number of additional refactorings: field and method moving, pushing down and pulling up fields and methods, and the encapsulation of fields. However, Xrefactory is unable to handle identifiers generated during the preprocessing stage; its author writes that deciding how to handle the renaming of an identifier that is constructed from parts of other identifiers is, in general, an unsolvable problem. The case refers to the renaming of the identifier sysctl_var_sdelay we showed in Section 2.1 into, say, foo. Vittek, correctly writes that there is no way to perform this renaming in a natural way. We sidestep this restriction by only allowing the renaming of an identifier's constituent parts. Thus, in this case, a CScout's user can rename individually the identifier's sysctl_var part and the sdelay part, with each renaming affecting the other corresponding parts in the program.

 

 

 

 

CScout is a source code analyzer and refactoring browser for collections of C programs. It can process workspaces of multiple projects (we define a project as a collection of C source files that are linked together) mapping the complexity introduced by the C preprocessor back into the original C source code files. CScout takes advantage of modern hardware advances (fast processors and large memory capacities) to analyze C source code beyond the level of detail and accuracy provided by current compilers, linkers, and other source code analyzers. The analysis CScout performs takes into account the identifier scopes introduced by the C preprocessor and the C language proper scopes and namespaces.

cscout是一个c语言代码的分析、重构和浏览工具。

CScout as a source code analyzer can:

  • annotate source code with hyperlinks to each identifier                               在显示源代码的同时对每个标识符进行超链接标注
  • list files that would be affected by changing a specific identifier                   显示修改某个标识符时会影响到的文件
  • determine whether a given identifier belongs to the application or to an external library based on the accessibility and location of the header files that declare or define it
  • 基于在头文件中的访问、定义和申明信息,判断某标识符在应用内定义或属于外部库
  • locate unused identifiers taking into account inter-project dependencies                            基于项目的依赖定位未使用的标识符
  • create static call graphs that include the use of function-like macros                                  创建类似函数的宏的静态调用图
  • perform queries for identifiers based on their namespace, scope, reachability, and regular expressions of their name and the filename(s) they are found in,    基于namespace,scope,能否被访问,名字的正则表达式及文件名等,对标识符进行分类索引
  • perform queries for files, based on their metrics, or properties of the identifiers they contain                            对文件中的标识符,基于他们的原型或属性进行索引
  • perform queries for functions and function like-macros, based on their metrics, their type and scope, the names of callers and callees, and the files they are declared in        对文件中的函数或类似函数的宏标识符,基于他们的原型、类型或作用范围、调用者或被调用者,以及申明他们的文件进行索引
  • monitor and report superfluously included header files                                             对多层included头文件进行监视或创建报告
  • visually identify parts of files that were skipped during preprocessing                        对文件中被预处理中略过的部分进行可视化浏览
  • provide accurate metrics on functions, identifiers, and files                                      提供函数、标识符和文件准确的原型

More importantly, CScout helps you in refactoring code by identifying dead objects to remove, and automatically performing accurate global rename identifier refactorings, and various function argument refactorings. CScout will automatically rename identifiers

  • taking into account the namespace of each identifier: a renaming of a structure tag, member, or a statement label will not affect variables with the same name
  • respecting the scope of the renamed identifier: a rename can affect multiple files, or variables within a single block, exactly matching the semantics the C compiler would enforce
  • across multiple projects when the same identifier is defined in common shared include files
  • occuring in macro bodies and parts of other identifiers, when these are created through the C preprocessor's token concatenation feature

Furthermore, CScout allows you to refactor the arguments of functions and macros, introducing new arguments, deleting existing ones, or changing their order.

转载于:https://www.cnblogs.com/welhzh/p/7461909.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
特别说明 -------- 新版本请访问网站www.bluefishes.net. 考虑到稳定性,新版本不支持Visual Studio.NET 2002. 产品名称 -------- SharpRefactor(C#代码重构工具) 产品简述 -------- 本工具用于代码重构代码自动生成。现阶段主要用于C#代码重构。 所谓重构也就是“保持软件的外在功能不变,重新调整其内部结构”。 关于每种重构模式的含义,请参见http://www.refactoring.com/ 具体功能参见具体版本的特性列表。 对重构很感兴趣或是很关注使用效率的用户,希望[使用指南]一节对你有所助益。 版本 ---- 1.0.0(BETA). 发布日期 -------- 2003/6/13 作者 ---- C# Refactor Team. 制作 ---- Blue Workshop. 环境要求 -------- Visual Studio.Net 2003 Windows 2000 + SP2 + SMTP Service 特别提示 -------------- 本插件使用了异常处理和报告机制。 一般而言,环境、代码以及其他原因都会导致程序出错。因此,在您使用本插件的过程中,可能会弹出错误报告。一部分错误不会影响使用,另一部分会影响使用。 C# Refactor Team愿意随时提供技术支持,及时为你解除问题。 版本1.0.0特性 ------------- Rename Parameter Rename Local Variable Rename Field Rename Property Rename Class Rename NameSpace Safe Delete Parameter Safe Delete Local Variable Safe Delete Field Safe Delete Property Safe Delete Method Safe Delete Class Safe Delete NameSpace Extract Interface Undo/Redo Preview usage before refactor(重构前预览) Auto build after refactor(重构后自动生成) Options(工具选项) User feedback(用户反馈) 使用指南 -------- 所有功能暂不支持静态成员。 尽量使用鼠标右键菜单。 尽量使用快捷方式,比如:单击鼠标右键,弹出菜单后再连续按‘R’键和‘C’键就可以调用[Rename]菜单下的[Rename Class]命令。 在使用Rename系列命令时,需要先转到定义代码元素的地方。此时,可以先使用右键菜单中的[转到定义]命令。 在Option中可以设置首选项。 由于Visual Studio在生成较大的解决方案时有时会不成功,所以Auto build after refactor通常用于较小的解决方案。 Rename NameSpace与Move Class不同。Move Class的焦点在Class,即改变类所在的NameSpace。而Rename NameSpace的焦点在NameSpace,即改变指定NameSpace的名字,并更新该NameSpace的所有引用(Usages)。 错误报告以及建议功能需要网络连接和Windows自带的SMTP服务。因为发送速度很快,所以不会占用您宝贵的时间。 可以使用User feedback功能提出您睿智的建议、批评、任何意见。 技术支持 -------- Tiger.BlueWorkshop@163.net 下载 ---- www.csdn.net 版本 发布日期 ----------------------------- 1.0.0(Beta) 2003/6/13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值