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

 

说明

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 表  

 

【python】python语言介绍,python的安装,python代码注释方式 Python是解释型语言,便于移植,执行效率没有编译型语言高。 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言, 所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。 编译型语言:使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码, 并包装成该平台所能识别的可执行性程序的格式。 阅读详情

相关推荐

Windows 高精度计时器:QueryPerformanceCounter 原理、陷阱与最佳实践

本文深入解析Windows高精度计时器QueryPerformanceCounter(QPC)的工作原理、常见陷阱及最佳实践。QPC通过读取硬件计时器(如TSC)实现微秒级精度,适用于游戏开发、音视频处理等高性能场景。文章详细探讨了多核同步、动态频率调整等挑战,并提供了优化代码示例和性能对比数据。

weixin_33391446的博客 268

如何同步表注释mysql_如何从mysql表访问表注释?

如何从mysql表中获取表注释?我试过以下,但是由于各种原因他们没有工作.我想知道如何获取字符串’我的评论'(理想情况下是通过perl =)任何帮助?-- Abbreviated output for convenience.SHOW TABLE STATUS WHERE Name="foo"+------+--------+---------+------------+------+------...

weixin_39630441的博客 218

svn 分支(branch)和标签(tag)管理

svn的分支管理

caohongxing的博客 3万+

代码注释

前言 本来只准备写一个关于MySQL的注释问题,到想写的时候就想把我目前所用过的所有代码注释写上,就当做个笔记。有错误的地方或者不足的之处烦请之处,以便修改,谢谢。 MySQL注释 java注释 对于java注释有三种: 1.单行注释: //System.out.println("单行注释"); 如果是使用myeclipse或者eclipse的IDE,可以直接选中所想注释的,然

wenruo95的专栏 858

远红外热传感器阵列 (32x24 RES) MLX90640ESF-BAA/BAB

Melexis MLX90640是一款小体积、低成本的完全校准的32x24像素红外阵列,采用行业标准,带数字接口。3.其工作温度范围为 -40°C 至 85°C,可测量的物体温度范围为 -40°C 至 300°C。该红外传感器在整个测量范围内保持高精度水平,可提供 ±1°C 的典型目标物体温度精度。2.这款 32x24 像素的器件适用于安全和便利应用,包括防火系统、智能楼宇、智能照明、IP/监控摄像机、HVAC 设备和车辆座椅占用检测。1.工作温度范围为 -40 至 85°C,可在严苛的工业环境中部署。

Summit__的博客 1999

Innovus时钟树综合CTS实战:从原理到signoff的完整指南

时钟树综合(CTS)是数字后端实现中保障同步电路时序收敛的核心环节,其本质是在物理层面构建低偏斜、可控延迟的全局时钟分发网络。它基于静态时序分析(STA)原理,通过平衡clock skew、insertion delay、transition time与功耗面积等多维约束,对抗工艺电压温度(PVT)变异带来的时序不确定性。技术价值在于支撑GHz级高频芯片的setup/hold签核,广泛应用于CPU、GPU、AI加速器等复杂SoC的Innovus后端流程。本文聚焦CTS在Innovus工具链中的工程落地,覆盖

weixin_28523493的博客 223

【转】Ruby入门教程(一)

1. Ruby环境搭建   在Windows下,搭建Ruby环境,比较简单的方法是在“RubyInstaller”上下载一个合适的版本(D瓜哥使用的是最新版),直接安装就可以了。   另外,吐槽两句,网上有人说Windows不适合搞Ruby开发,刚开始D瓜哥不信,昨天因为搭建Ruby on Rails的环境,Mysql数据库的驱动死活安装不成功!太折腾人了。所以,如果真的想玩Ruby,还是使用...

weixin_34072637的博客 100

从INCA到Excel:手把手教你移植汽车标定数据的查表插值算法(附源码)

本文详细介绍了如何将汽车标定数据从INCA平台移植到Excel,实现查表插值算法的完整迁移。通过解析INCA MAP数据结构,设计Excel环境下的双线性插值算法,并提供VBA和C#两种实现方案,帮助工程师高效处理标定数据。文章包含实用代码示例和性能优化技巧,适用于ECU开发与标定场景。

weixin_29313239的博客 409

流行编程语言及其注释方式一览表

1.各种编程语言的注释符号比较 编程语言分类 按平台 .NET框架平台语言 C++/CLIC#F#IronPythonIronRubyJ#Visual C#VB.NETSmall Basic Java虚拟机上的语言 JavaJythonJRubyJSchemeGroovyKawaScala...

Marlon1993的博客 389

Coverity本地增量C/C++代码检查(Linux)操作简介

Coverity 是一款精确的综合静态分析与应用安全测试 (SAST) 平台,它可以在编写代码时发现关键的缺陷和安全缺陷,防止它们变成安全漏洞、故障或维护缺陷。

1482

Oracle EBS Interface/API(42) -AP发票客制化付款申请

背景 在OA系统上,选择Oracle EBS的某张AP发票做付款申请,需要类似于锁定该发票以便付款,其他用户或者下次用户不能再次选择该发票做付款申请。 快速参考 参考点 内容 功能导航 N: AP->Invoices->Entry>Invoices 并发请求 None 基表 AP.AP_INV_SELECTION_CRITERIA_ALLAP.AP_SELECTED_INVOICES_ALL API 参考下面介绍 错误信息表 None 接口Form

陈显平的专栏-Oracle EBS 1200

各语言基础功能汇总——简单功能(注释等)

基础功能汇总 注释 C语言系: C / C++ / C# JAVA / JavaScript PHP /CSS(仅有块注释) verilog HDL //行注释 /*块注释*/ 解释器系: python shell perl ruby R ...

qq_41566511的博客 131

【点云鸟瞰图BEV】点云鸟瞰图BEV原理与可视化

本节将介绍激光雷达等点云的鸟瞰图生成原理、代码及效果图。 1 BEV视图原理 点云BEV(Bird's Eye View)视图是指点云在垂直于高度方向的平面上的投影。通常,在获得bev视图前,会将空间分割成体素,利用体素对点云进行下采样,然后将每个体素作为一个点进行投影。体素是指将三维空间按照固定尺寸长方体进行划分时的长方体(Δl*Δw*Δh)。 体素投影时可以得到BEV视图的像素点坐标。每个像素点的特征取值则可以通过多种方式得到。 ...

叶子的博客 2万+

关于Ruby的语言特点

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33859504的博客 219

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Leasot解析器深度解析:如何为49+编程语言提取注释信息

Leasot是一款强大的注释解析工具,能够从49+种编程语言的代码注释中自动提取TODO和FIXME等标记信息,帮助开发者高效管理项目中的待办任务。无论是小型应用还是大型项目,Leasot都能轻松整合到开发流程中,让代码注释中的重要信息不再被忽视。 ## 🚀 Leasot核心解析能力揭秘 Leasot的核心优势在于其灵活的解析器架构,通过`src/lib/parsers.ts`文件定义的扩展

gitblog_00463的博客 949

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

MDA框架生成代码流程和图例(UML 正向工程,支持Java, C#, Ansi C++, Delphi, Perl, Php5, Python, Database,Ruby, Hibern)...

Trufun产品提供基于通用MDA代码生成框架的生成语言实现:目前已经支持Java, C#, Ansi C++, Delphi, Perl, Php5, Python, Database,Ruby,Hibernate, JDO等语言的正向生成。如果你觉得不够,你完全可以自行扩展,或者由Trufun为你定制! 如果希望自己进行扩展的,可以联系楚凡客服,咨询自行扩展接口和规则! 语...

gaofen100 165

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大功率逆变器Class B辐射超标整改实战:PV端口共模干扰是核心

电磁兼容(EMC)设计是电力电子设备从样机走向量产的关键关卡,其中辐射发射测试往往成为产品认证的瓶颈。在CISPR 11标准中,Class B限值比Class A严格数倍,对大功率逆变器构成严峻挑战。开关管高频动作产生的dv/dt通过寄生电容耦合形成共模电流,这些电流沿长距离光伏线缆传导并辐射,是超标频段的主要来源。理解干扰路径后,工程上通常采用共模扼流圈、Y电容与高频旁路电容组合滤波,并优化机箱接地与线缆布局,以此抑制共模辐射。该整改方法论广泛应用于光伏逆变器、储能变流器等大功率产品的认证阶段,能显著缩短

weixin_34037515的博客 365

MDA框架生成代码流程和图例(UML 正向工程,支持Java, C#, Ansi C++, Delphi, Perl, Php5, Python, Database,Ruby, Hibern)

Trufun产品提供基于通用MDA代码生成框架的生成语言实现:目前已经支持Java, C#, Ansi C++, Delphi, Perl, Php5, Python, Database,Ruby,Hibernate, JDO等语言的正向生成。如果你觉得不够,你完全可以自行扩展,

企业级UML2建模工具、MDA工具、数据库建模工具、需求管理工具、集成开发平台 1924

C++ 之父:Rust等内存安全语言的安全性并不优于C++

击上方关注 “终端研发部”设为“星标”,和你一起掌握更多数据库知识2022年年底,美国国家安全局(NSA)在其所发布的《Software Memory Safety》报告中指出:C语言和C++语言是不安全的,建议各个企业组织放弃使用C/C++,并鼓励各组织将编程语言从C和C++等转向更加安全的替代语言——如C#、Rust、Go、Java或Ruby中去。在建议提出后,C++ 之父 Bjarne St...

这个时代,作为程序员可能要学习小程序 756

JAVA的第一篇文章(Java,干嘛啊,哎呦~)—— JAVA概述和一部分基础语法

项目人体子系统(仓储、物流、商品、认证……)子系统(呼吸、免疫、消化、血液循环……)模块(商品搜索、商品发布、商品展示……)器官(胃、小肠、大肠、胰腺、肝脏、胆囊……)包(组件类包、实体类包、工具类包……)组织(结缔组织、肌肉组织、脂肪组织、……)类(Servlet组件类、Service组件类、Dao组件类……)细胞(肌肉细胞、脂肪细胞、血小板、白血球、红血球……代码(变量、常量、方法、流程控制、异常处理、IO、反射、枚举、泛型……)细胞组成部分(细胞壁、细胞质、细胞液……)

ANNE_fly的博客 320

freehire 中的 YC 公司数据补全:yc-oss 目录映射、import-yc 幂等导入与 yc_* 精选 facet

本文以 freehire 仓库中 `yc-company-enrichment` 的能力规格为主线,讲解如何把 yc-oss 公开目录(`yc-oss.github.io/api/companies/all.json`)中的公司档案,确定性地映射进 freehire 的 `companies` 表:包括纯函数式字段映射、可重复执行的 run-once 导入 worker、按归一化 slug 匹配与

gitblog_01160的博客 550

12.14_学习Java的day01【Java基础语法】

JavaSE_day01【Java基础语法】 今日内容 Java语言的发展历史 安装JDK 配置环境变化 编写HelloWorld程序 Java注释 Java关键字 标识符 常量 变量 Java基本数据类型 学习目标 能够使用常见的DOS命令 理解Java语言的跨平台实现原理 理解JDK/JRE/JVM的组成和作用 能够配置环境变量JAVA_HOME(会参照笔记配置) 能够编写He...

weixin_45506970的博客 447
上一篇: 分享自己写的文档工具(Ruby - Sinatra)
下一篇: Ubuntu&Mac下使用alias简化日常操作
lvjian700
博客等级 码龄15年 14粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值