用ruby+java, 同步C++和数据库中的注释._Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > 用ruby+java, 同步C++和数据库中的注释.

用ruby+java, 同步C++和数据库中的注释.

 2012/10/15 10:38:48  witcheryne  程序员俱乐部  我要评论(0)
  • 摘要:说明SqlCommetTools是前一段时间为公司C/S研发做的,SqlServer注释同步工具.将C++头文件中的注释同步到SQLServer表中.代码可以从github中获取:https://github.com/lvjian700/SqlCommetTools使用到的技术:ruby:用来分析C++文件的语法java:用来进行数据库操作Ant:用来执行ruby和java代码程序结构说明headers/*.h为待处理的C++头文件,该文件中映射了数据库表结构
  • 标签:c++ Ruby Java 数据库 数据 注释 同步

?

说明

SqlCommetTools是前一段时间为公司C/S研发做的, SqlServer注释同步工具. 将C++头文件中的注释同步到SQL Server表中.

?

代码可以从github中获取:

https://github.com/lvjian700/SqlCommetTools

?

使用到的技术:

?

  • ruby: 用来分析C++文件的语法
  • java: 用来进行数据库操作
  • Ant: 用来执行ruby和java代码

程序结构说明

headers/*.h 为待处理的C++头文件, 该文件中映射了数据库表结构. 并且每个属性后面都有单行注释

?

ruby/analyze.rb 程序为C++头文件分析程序, 分析C++中的语法, 提取Struts名称, 字段名称-注释. 并且生成相应的json文件.

?

src/ 目录下是Java程序, 用来分析ruby生成的json数据, 将注释更新到数据库中.

?

环境说明

?

?

  • ruby-1.9.2
  • JDK 1.6
  • Ant 1.8
  • Sql Server 2005 (其他Sql Server 版本未测试)

?

使用说明

?

1.clone项目

?

git://github.com/lvjian700/SqlCommetTools.git
?

2.安装ruby依赖

?

cd SqlCommetTools/ruby
bundle install
?

3.运行Ant脚本

?

cd SqlCommetTools
ant

核心代码说明

使用ruby分析C++程序语法

1.原理

?

?

  • 逐行读取C++源码文件
  • 使用正则表达式匹配Struct, 属性, 注释

2.ruby中逐行读取文件

?

?

File.open(File.dirname(__FILE__) + "/../headers/dyulctaskdefine.h").each_line do |line |
    # do something....
end

?

3.使用正则表达式匹配Struct,属性,注释

?

?

File.open(File.dirname(__FILE__) + "/../headers/dyulctaskdefine.h").each_line do |line |
    #match Struct
    structMatch = /^struct\s+(\w+)/.match(line)
    structName  = structMatch[1]

    #match 属性, 注释
    propMatch = /(\w*);\s*\/{2}([^x00-xff]*)\n/.match(line)
    propName = propMatch[1]
    propComment = propMatch[2]
end

如何使用sql语句修改数据库注释

?

--表及字段描述信息处理示例

--创建表
create table 表(a1 varchar(10),a2 char(2))

--为表添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '人员信息表', N'user', N'dbo', N'table', N'表', NULL, NULL

--为字段a1添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'

--为字段a2添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'table', N'表', N'column', N'a2'

--更新表中列a1的描述属性:
EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','表','column',a1

--显示表的描述属性
SELECT   *
FROM   ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表', 'column', NULL)

--删除表中列a1的描述属性:
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',a1

--删除测试
drop table 表  

?

发表评论
用户名: 匿名