Atitit ide之道 开发工具之道 attilax著 v2 s22.docx Atitit ide开发工具之道 attilax总结

1. 代码编辑器功能 3

1.1. 关键词颜色   3

1.2. 代码提示 3

1.3. Outline文件结构查看器 3

1.4. 格式化工具 3

2. 调试器 单步 以及console 4

3. 工程管理 4

4. 4

5. 高级特性 4

5.1. 源码管理集成  4

5.2. 增量编译 4

5.3. 同一函数选择高亮 同名函数高亮显示 4

5.4. 配置文件等的编辑器功能 4

5.5. Javadoc提示框显示 5

5.6. 重构 5

5.7. 代码分析工具 5

5.8. 微软在做了众多改进后却删减了一个相当重要的特性——宏 5

5.9. 函数功能列表 outline 结构 5

5.10. Quickfix 提示 5

5.11. 主题,黑暗主题 5

5.12. 通知中心 5

5.13. 搜索定位功能(类,方法,属性选择) 5

5.14. Call Hierarchy调用参数信息提示 6

5.15. 可视菜单设计器 6

5.16. 自动的国际化、可视本地化 6

6. 代码度量 7

6.1. 类数量度量,方法数量度量 7

6.2. 代码行数统计 7

6.3. 类与方法命名 单词 统计 度量 7

7. 质量控制 7

7.1. 类似于Findbugs 可扩展检查工具 7

7.2. Java代码质量检测评估工具 - 轻轻草原 - ITeye技术网站.htm 7

8. 部署 打包 7

9. Uml设计工具 8

10. 数据库工具 8

10.1. Uml 8

10.2. Web service 8

10.3. 数据可视化 8

10.4. Report 8

10.5. Db支持op 8

10.6. 查询构建器 8

10.7. Remote debug 8

10.8. debugging api包一个gui就够了 8

10.9. expression evaluation 8

10.10. 如Java Compiler API 9

10.11. Ide每部分代码数统计 10

11. 参考 12

11.1. Visual C++ 2010新特性:IDE五大改进-IT168 技术开发专区.html 12

11.2. 12

11.3. paip.vs2010新特性.txt - attilax的专栏 - 博客频道 - CSDN.NET.html 12

11.4. 图文详解:深度剖析Visual Studio2012的九大新特性_vs2012吧_百度贴吧.html 12

11.5. VS 2013 IDE 编辑器的一些新功能 - gzwxn的个人空间 - 开源中国社区.html 12

11.6. 微软官方:Visual Studio 2015 RTM 的 IDE 新功能概览 – 美Win网.html 12

11.7. 盘点VS2015 预览版的5个新特性-CSDN.NET.html 12

11.8. 12

11.9. 12

11.10. 12

11.11. NetBeans IDE 6.0 中的 UI 设计.html 12

11.12. NetBeans 6.7 M3值得关注的新特性 - 51CTO.COM.html 13

11.13. NetBeans 6.9新特性 - chszs的专栏 - 博客频道 - CSDN.NET.html 13

11.14. NetBeans IDE 7.1 有什么新特性_Linux伊甸园开源社区-24小时滚动更新开源资讯,全年无休!.html 13

11.15. NetBeans7.4 正式版发布 - 开源中国社区.html 13

11.16. NetBeans IDE 8.0 新特性一览 13

11.17. 13

11.18. Oracle JDeveloper 和 ADF 11g 技术预览版新特性.html 13

11.19. 13

11.20. 13

1. 代码编辑器功能

1.1. 关键词颜色

集成开发环境,调试器,验证器和其他工具。我认为这是平局,但是这里有一些工具给 Node.js 些许优势:NPM-包管理器。 NPM 允许你安装和管理依赖,设置配置变量,定义脚本和其他。

1.2. 代码提示

1.3. Outline文件结构查看器

1.4. 格式化工具

2. 调试器 单步 以及console

3. 工程管理

4.  

5. 高级特性

5.1. 源码管理集成

5.2. 增量编译

5.3. 同一函数选择高亮 同名函数高亮显示

同名函数高亮显示功能,选中一个函数名,在同页中所有这个函数名出现的地方会高亮显示

5.4. 配置文件等的编辑器功能

编辑器,以便更好地支持JDK8中的配置文件、Lambdas

5.5. Javadoc提示框显示

5.6. 重构

5.7. 代码分析工具

5.8. 微软在做了众多改进后却删减了一个相当重要的特性——宏

!根据微软的报告,因为只有很少的的用户使用过宏,所以Visual Studio 2012 中并不会默认引入宏,但Visual Studio 2012将可以通过扩展包引入自定义功能。

5.9. 函数功能列表 outline 结构

5.10. Quickfix 提示

使用灯炮提示快速寻找并修正问题,并且改良了错误列表

5.11. 主题,黑暗主题

5.12. 通知中心

5.13. 搜索定位功能(类,方法,属性选择)

  新的“定位到”功能。选择菜单“编辑”中的“定位到”,该功能可以帮助您更有效的搜索文件或符号。根据您输入的字符串实时搜索到相应的结果,将您的输入字符串与项目中的符号和文件对照匹配。此功能还适用于 C# 和 Visual Basic 文件,并且可进行扩展。

5.14. Call Hierarchy调用参数信息提示

Call Hierarchy选项,如下图:

点击后会打开一个试图,该试图可以方便看出该方法在那些地方被用到,传入的是什么参数,并且可以很快定位在引用的地方,对于一个代码行数比较多的文件,可以提高开发效

对于某些函数体较大的函数来说,想轻松地确认参数在函数内部的使用情况是件比较麻烦的事情。这时可以将光标置于参数名上,再按组合键“Ctrl+Shif+空格”,参数被使用的地方会被高亮显示。

5.15. 可视菜单设计器

5.16. 自动的国际化、可视本地化

6. 代码度量

6.1. 类数量度量,方法数量度量

6.2. 代码行数统计

6.3. 类与方法命名 单词 统计 度量

7. 质量控制

7.1. 类似于Findbugs 可扩展检查工具

7.2. Java代码质量检测评估工具 - 轻轻草原 - ITeye技术网站.htm

8. 部署 打包

Patch打包工具

Class搜索在dir中的jar文件。。

核心class生成检查工具(制定核心package目录)。。非核心的可以不生成,有err

扫描源码,列出需要的jar包 ,缺失的jar包

项目每日备份工具(包括代码,数据库)

开发工具启动器

9. Uml设计工具

10. 数据库工具

10.1. Uml

10.2. Web service

10.3. 数据可视化

10.4. Report

10.5. Db支持op

10.6. 查询构建器

查询构建器可以在联机或脱机模式下以图表方式构建简单的 SQL 查询。

10.7. Remote debug

,attach上去调

10.8. debugging api包一个gui就够了

10.9. expression evaluation

这种黑魔法一样的东西(仅针对编译型语言这么说,解释型应该会容易很多),当初应该花了大量的精力开发;

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

10.10. 如Java Compiler API

我主要关注的是编译器,所以下面就编译器与IDE多聊几句。

当然,现实中开发一个IDE还真的有可能得去实现源语言的编译器。

上面提到的SharpDevelop/MonoDevelop,目前新的版本已经改为基于微软的Roslyn编译器来提供C#支持,语法高亮、错误提示、智能提示等都做得很好了。但其早期版本其实非常弱,只有所谓“语法高亮”,可以参考这个文档。后来为了实现智能提示等功能总算决定实现个真正的C# parser。不过它并没有基于任何现成的编译器来支持IDE功能,而是自己写了一个,上面的书中第12章就是介绍这个parser的,不过写得有点乱嗯。

以Eclipse的Java开发环境(JDT)为例,它要实现准确的语法高亮和语法错误提示,就得按照Java语法实现一个完整的parser;它要实现实时的语义错误提示,就得按照Java语义实现一个完整的语义分析器,而且为了良好的用户体验,它可能要内建更多的对错误模式的检查和提示。做到这里,离一个完整的Java源码编译器也就只剩一个很简单直观的代码生成器(code generator)了。于是Eclipse做了ECJ——Eclipse Compiler for Java,整合在Eclipse JDT中。
在此基础上,Eclipse JDT还有项目模型,将项目里的各种资源都用一个统一的模型管理起来,从workspace到project、package、file然后里面的class/interface这样一直下去。在class/interface层面上这个模型用的就是ECJ的AST。

其实如果有一个现成的对IDE支持良好的编译器的话,实现一个IDE就不必费那么多事自己去写编译器。但是Eclipse诞生时,主流的Java源码编译器javac并不开源,而IBM当时主流的Java源码编译器Jikes是用C++写的,要整合在用Java写的Eclipse里不太方便,所以才要自己写。
有了这个编译器之后,Eclipse倒是可以做许多“非常规”的事情。例如说它可以为有错误的源码文件生成Class文件,而且这个Class文件可以一直执行到源码里有错的地方然后抛出异常——这种事情javac就不太可能会去做。

后来javac开源了,而且开放出许多便于IDE实现自身功能的API出来(例如Java Compiler API),后来的Netbeans就干脆直接用javac来实现语法高亮、报错等各种功能了。背后的故事可以参考这篇博文:NetBeans IDE 6.0

而一个反例就是微软的Visual Studio里的C++支持。Visual C++自身是个优秀的优化编译器,但它的前端部分(词法/语法/语义分析+中间代码生成)的历史非常非常“久远”,原始设计并未考虑支持IDE的功能,所以Visual Studio IDE里的C++支持其实用的是另一套完全不同的C++ parser(购买自EDG),既增加了复杂度又无法保证两套parser之间完全的兼容性。
当然微软也早就意识到了这个问题。近来,随着对C++14的支持,微软大幅更新了其Visual C++编译器的前端(参考Rejuvenating the Microsoft C/C++ Compiler),按照这个路子走下去的话,在IDE里替换掉EDG的C++ parser改为直接用Visual C++自己的,兴许也是可能的未来。

10.11. Ide每部分代码数统计

分类

包含内容

源码行数

Code Analysis

代码模型、分析和生成相关

123957

IDE

IDE程序和界面相关

62940

Visual Editor

可视化编辑器

30760

Text Editor

文本编辑器

20264

Tools

版本控制和帮助等辅助工具

11556

Language

语言绑定,包括C#,VB等

9292

Debugger

调试器

9238

Framework

Asp.Net Mvc等框架支持

8513

Misc

杂项

2289

Builder

构建和MsBuild相关

1774

Data

数据库支持

1396

对应的图表:

项目分析

可见整个IDE最复杂的部分在于代码模型的处理,代码数量几乎是第二名(IDE)的两倍之多,占整个项目代码的比例也接近 50% 了。我没有进一步分析,不过大概可以想象,代码编辑时的文本着色、语法提示、代码生成、辅助分析、重构等功能应该都与此相关。如果真的想自己写一个IDE的话,这一部分肯定是个难啃的硬骨头。

参考资料

IDE的现实分析 - 对“开发一个IDE难度有多大”问题的回答 _ Shuhari的博客.html

开发一个IDE难度多大_ - 编程 - 知乎.html

11. 参考

11.1. Visual C++ 2010新特性:IDE五大改进-IT168 技术开发专区.html

11.2.  

11.3. paip.vs2010新特性.txt - attilax的专栏 - 博客频道 - CSDN.NET.html

11.4. 图文详解:深度剖析Visual Studio2012的九大新特性_vs2012吧_百度贴吧.html

11.5. VS 2013 IDE 编辑器的一些新功能 - gzwxn的个人空间 - 开源中国社区.html

11.6. 微软官方:Visual Studio 2015 RTM 的 IDE 新功能概览 – 美Win网.html

11.7. 盘点VS2015 预览版的5个新特性-CSDN.NET.html

11.8.  

11.9.  

11.10.  

11.11. NetBeans IDE 6.0 中的 UI 设计.html

11.12. NetBeans 6.7 M3值得关注的新特性 - 51CTO.COM.html

11.13. NetBeans 6.9新特性 - chszs的专栏 - 博客频道 - CSDN.NET.html

11.14. NetBeans IDE 7.1 有什么新特性_Linux伊甸园开源社区-24小时滚动更新开源资讯,全年无休!.html

11.15. NetBeans7.4 正式版发布 - 开源中国社区.html

11.16. NetBeans IDE 8.0 新特性一览

11.17.  

11.18. Oracle JDeveloper 和 ADF 11g 技术预览版新特性.html

11.19.  

11.20.  

Atitit ide之道 开发工具之道 attilax著 v2 s22.docx Atitit ide开发工具之道 attilax总结 1. 代码编辑器功能 3 1.1. 关键词颜色 3 1.2.相关推荐

  1. Atiitt 可视化 报表 图表之道 attilax著 Atiitt 可视化的艺术 attilax著 v2 s51.docx Atitit.可视化与报表原理与概论 1. 、什么是可视化(这一

    Atiitt  可视化 报表 图表之道 attilax著 Atiitt  可视化的艺术 attilax著 v2 s51.docx Atitit.可视化与报表原理与概论 1. .什么是可视化(这一节有点 ...

  2. Atitit 手机号码选号 规范 流程 attilax总结 v2 r99.docx

    Atitit  手机号码选号 规范 流程  attilax总结 v2 r99.docx 1. Keyword关键词 1 2. 靓号的定义 1 3. 靓号的重要意义 与解决问题 为什么我们需要靓号指南, ...

  3. Atitit 手机号码选号 规范 流程 attilax总结 v4 s81.docx 1. Keyword关键词 2 2. 靓号的定义 2 3. 靓号的重要意义 与解决问题 为什么我们需要靓号

    Atitit  手机号码选号 规范 流程  attilax总结 v4 s81.docx 1. Keyword关键词 2 2. 靓号的定义 2 3. 靓号的重要意义 与解决问题 为什么我们需要靓号指南, ...

  4. python开发工具排名-7款公认比较出色的Python IDE,你值得拥有!

    Python作为一款比较"简洁"的编程语言,它拥有很多性价比高的性能,造就了它现在比较火热的局面,很多人都来学习Python.Python 的学习过程少不了 IDE 或者代码编辑器 ...

  5. 【华为云技术分享】敏捷开发落地不实际?原因可能在于你的 IDE 工具

    对于企业来说,效率就是一切.开发效率的工程化建设已经开始被各大企业提到技术管理日程中.而且现阶段,无论是框架也好.模板也好,目的都是在为提升代码开发效率而努力.随着云计算的深入,端 + 云的开发模式以 ...

  6. 用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器 很多Python初学者,安装完Python后,已经包含了IDLE代码开发和调试系统.都会再安装各种Python开发 ...

  7. 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器 HP_tk.py模块是小白量化第二代量化系统中的开发模块.其中HP_tk.py模块是小白量化系统GU ...

  8. 用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器

    用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器 前面我们介绍了在Tkinter中使用exec()函数运行用户程序的方法.exec()采用多线程 ...

  9. 微信小程序开发开篇词 自顶向下,云端赋能:小程序的高效开发之道

    你好,我是周俊鹏,做前端开发已经 6 年多了,目前我就职于腾讯云 TCB 团队,负责腾讯云开发 CloudBase 前端相关的研发和生态建设工作.我可以说是第一批次的微信小程序开发者,2016 年 9 ...

  10. 代码整洁之道------它山之玉可以重构:身份证号码解析、验证工具(第一天)

    首先感谢原作者的代码: < 面向对象的15位.18位中国大陆身份证号码解析.验证工具>. 如果有版权问题,敬请告知. 原代码给了我很好的起点,是的,这些代码都是玉,我在这只是再琢磨琢磨. ...

最新文章

  1. LeetCode简单题之二叉搜索树的最小绝对差/最小距离
  2. JavaEE 银联支付之手机控件支付-消费类交易
  3. 设置Exchange 2010附件大小限制原则
  4. 不小心删除了某个包的一部分,重新安装方法
  5. C语言中的指针有什么作用
  6. LeetCode 535. Encode and Decode TinyURL
  7. 本地与服务器连接,更改连接使用的用户名,再次登录;如何操作.
  8. 大型网站的 HTTPS 实践(三):基于协议和配置的优化
  9. 神经网络图像预处理,神经网络修复图片
  10. STM32F407+Cubemx学习应用[5]——DMA收发ModbusRS232数据——威纶通触摸屏
  11. 实验8.1 时间换算
  12. 数学建模学习(41):单因素方差分析
  13. android 工程模式mtk,Android L版本上user版本工程模式中gsensor校准失败
  14. 【SIGGRAPH】用【有说服力的照片真实】技术实现最终幻想15的视觉特效
  15. random.seed()的用法
  16. WITNESS基础教程
  17. Java8 LocalDateTime 获取当前日周月年的起止时间
  18. 【一本通】1064:奥运奖牌计数
  19. “AI+教育”想做好有多难?网易有道CEO、学霸君CEO等4位大佬“掏心窝”...
  20. 25款最好的数据恢复软件测评分析与对比

热门文章

  1. python read_csv dtype_Pandas read_csv low_memory和dtype选项
  2. qt电容触摸屏实现长按_电阻屏和电容屏有什么区别?究竟谁更胜一筹?
  3. Process Monitor
  4. 十分钟理解Redux中间件
  5. SSM excel文件的导入导出基于apache poi
  6. 大规模均衡分割与层次聚类
  7. java:linux上找出最耗资源的线程方法
  8. Cloudera官方课程管理员(CCAH)、开发者(CCA175)、数据分析
  9. 转iOS逆向工程:Reveal查看任意app的高级技巧!
  10. 我的double array trie