没头没尾--项目开发笔记:如何开发代码更新工具?!(上)

原创 2003年01月03日 13:49:00

 

   1231号:2002年的最后一天,天气不错!!希望明年天天都是好天气,也希望所有的IT从业人员新年好,天天快乐!

 

好长时间没有更新项目笔记了,并不是因为我们的项目没有什么进展。而是我要期末考试!郁闷。昨天好不容易考完了我最怕怕的English. 总算可以重新开写项目笔记罗。

上篇的项目笔记有朋友问我们代码如果始用自动生成之后,如何进行更新?如何保留生成地代码变化部分?这篇文章主要是讲讲这方面的内容。如果对代码生成工具不了解,可以参考以前的项目笔记。

http://www.csdn.net/develop/author/netauthor/ViktorYu/

 

以下所写的部分还是实现“异常处理与日志记录代码自动生成”文章中所说的功能,实际上要在一堆的Web Service代码文件中加入或更新代码的过程为例,说明代码生成工具与代码更新工具的开发与使用。

l         代码生成时对应生成的代码特殊规则

一段使用代码生成工具植入的代码是否可以进行整个文件修改之后的重新更新,最为关键的一点是你的代码更新工具是不是可以定位此段的代码,以及生成的代码是不是已经被破坏。所谓破坏是指明生成的代码已经被各个开发人员进行了个性化的修改,无法使用统一的规则进行更新处理。换句话说,你在设计要植入的代码时就需要对代码进行比较细的拆分,使得植入的代码保证原子性。这就要求在生成代码时,必须要对代码加入一些对应的规则。这一篇主要讨论比较简单的代码更新,可能还用不要这些特殊的规则,以后将会讨论比较复杂的代码更新,将会对生成的代码的规则做出更加细致的字义。这种情况下更新的数据可以只更新预先定义好的部分,并可以保留目标代码文件中其它的部分。

 

l         代码更新的原则与方案

下面分别从代码更新所需要的输入原则,代码更新的替换原则,以及有代码更新的最后所要输出的原则讨论代码更新的原则与方案。

代码更新工具的过程简单来说是两个步骤:第一步是找出被更新文件中是否要更新的那部分代码;第二步是将新的代码替换那部分要更新的代码。这里我使用了一个XML格式的模板文件来记录文件基本信息,被更新的代码,以及新的要植入的代码。

Ø         代码更新的输入

代码更新的输入包括两个部分:

²        原始文件(目录)

原始文件存放的地方,可以通过原始文件目录的搜索找出所有要进行代码更新的文件。比如我所参与的项目中,我将所有的Web Service文件放在c:/inetpub/wwwroot/projects之中,我要修改的是所有的以后缀名为.asmx.csWeb Service在我们的项目中采用的C#进行开发的,其它的具体情况可以参见以前的文档)的文件。那么原始文件输入为c:/inetpub/wwwroot/projects,我将通过遍历目录结构的方式,将所有的Web Service的文件找出,并执行代码更新的工作。

²        模板文件

模板文件为代码更新提供了被更新的代码的版本,新植入的代码的版本,以及使用这个模板文件的标识。下面是我的模板文件的一个例子:

TryandCatch.XML文件:

<?xml version="1.0" encoding="gb2312" ?>

<CodeTemplate>

<TemplateTag>

//**?? 已经使用TryandCatch.xml模板文档  ??**//

</TemplateTag>

<CodeSession value="Try">

        <oldsource>

            //**严禁修改以下代码**//

            //insert trytry

            //**严禁修改以上代码**//

        </oldsource>

        <newsource>

    //**严禁修改以下代码**//

    //insert try

        try{

    //**严禁修改以上代码**//

        </newsource>

 

</CodeSession>

<CodeSession value="Catch">

        <oldsource>

            //**严禁修改以下代码**//

            //insert catchcatch

            //**严禁修改以上代码**//

        </oldsource>

        <newsource>

    //**严禁修改以下代码**//

    //insert catchcatch

        }

        catch(CommonException e){

            return e.ErrorObject;

        }

        catch(Exception e){

            try{

                throw new ExceptionHandler.CommonException(e);

            }

            catch(CommonException ee){

                return ee.ErrorObject;

            }

        }

        finally{

        }

    //**严禁修改以上代码**//

        </newsource>

</CodeSession>

</CodeTemplate>   

上面的XML模板文件中,一共有两种节:

1.<TemplateTag>

<TemplateTag>节中间的内容代表是不是本模板的内容已经被植入了目标代码文件中,如果目标代码文件中没有找到<TemplateTag>节中的内容,则可以判断出目标还没有植入本模板的代码,那么直接使用<newsource>中的内容植入;如果目标代码文件中没有找到<TemplateTag>节中的内容,则可以判断出目标已经植入本模板的代码,那么使用<newsource>中的内容替换<oldsource>中的内容。

2.<CodeSession>

每一个CodeSession中的内容存放了以前植入的代码,本次需要植入的代码。以前值入的代码放在<oldsource>中,本次需要植入的代码放在<newsource>中。当需要对代码进行替换时,可以只需要修改模板文件(将原来的<newsource>节中的内容拷贝到<oldsource>节中,然后将需要新植入的代码放入<newsource>节中),再重新执行一次代码更新工具就可以了。

(待续下篇http://www.csdn.net/develop/article/16/16309.shtm)

微信小程序开发工具 下载,安装,创建新项目和如何导入项目整个过程教程

微信开发工具下载:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html?t=1474644083132 微信开发API说明...
  • wang_kill
  • wang_kill
  • 2017年01月06日 17:25
  • 3993

微信web开发者工具中更改页面文件夹名称的正确姿势

从9月份微信小程序横空出世到现在的将近三个月,虽然尚未全面开放,却已红透大半边天,网友们贡献的各种资源教程也喷涌而出。 最近刚刚学完JavaScript的基本知识,忍不住也开始尝试一下微信小程序开发...
  • weixin_36185028
  • weixin_36185028
  • 2016年12月07日 19:22
  • 4105

C# Window编程随记——新建一个window项目

C# Window编程随记——新建一个window项目本文档为本人学习C#开发的一些笔记,如有出错的地方,烦请在评论中指出 C#语言简述 开发环境 如何创建第一个win工程 创建一个简单的带按钮和输入...
  • linshuhe1
  • linshuhe1
  • 2015年10月15日 10:51
  • 2099

项目管理、设计开发、代码管理、bug管理工具介绍

asdfad asdfasBUGZILLA 求管理:目前还没有使用工具 设计过程:使用Borland Together Architecture 2006 源代码管理:使用CVS,如果是使用微软...
  • ajian005
  • ajian005
  • 2012年11月29日 18:56
  • 1131

如何利用NB代码生成工具和NBear框架,快速开发WEB项目

如何利用NB代码生成工具和NBear框架,快速开发WEB项目 NBear是一个.Net 2.0下的快速开发框架。它提供了包括可视化实体设计、代码生成、持久化、SOA、MVP等一系列组件。   ...
  • kunyin
  • kunyin
  • 2011年11月29日 19:35
  • 587

开发C#项目的代码量统计工具

  • 2011年03月09日 03:57
  • 14KB
  • 下载

Java项目开发环境构建工具 Gradle 使用笔记(简单、基本)

1. Gradle安装:      从官方网站www.gradle.org下载最新版本,解压后,将GRADLE_HOME/bin目录加到系统环境变量PATH上。测试是否配置成功在命令行运行:gradl...
  • shanghai2420
  • shanghai2420
  • 2016年02月03日 17:59
  • 753

Java项目开发环境构建工具 Gradle 使用笔记(简单、基本)

1. Gradle安装:      从官方网站www.gradle.org下载最新版本,解压后,将GRADLE_HOME/bin目录加到系统环境变量PATH上。测试是否配置成功在命令行运行:grad...
  • libing13810124573
  • libing13810124573
  • 2015年08月30日 11:46
  • 317

Java项目开发环境构建工具 Gradle 使用笔记(简单、基本)

1. Gradle安装:      从官方网站www.gradle.org下载最新版本,解压后,将GRADLE_HOME/bin目录加到系统环境变量PATH上。测试是否配置成功在命令行运行:grad...
  • leiyong0326
  • leiyong0326
  • 2015年06月04日 18:43
  • 428

Java项目开发环境构建工具 Gradle 使用笔记(简单、基本)

Java项目开发环境构建工具 Gradle 使用笔记(简单、基本)
  • swebin
  • swebin
  • 2016年05月18日 14:45
  • 583
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:没头没尾--项目开发笔记:如何开发代码更新工具?!(上)
举报原因:
原因补充:

(最多只允许输入30个字)