计数总计 PL/SQL 没有注释的代码行
Count Total PL/SQL Code Lines without Comments
我的任务是修改一个包,在这样做的同时,我注释掉了要修改的行以保留版本控制,并用版本号对其进行了注释。
现在我已经完成了对包的修改,我想比较原始脚本和修改后脚本的代码行总数,没有行注释。
在 SQL Developer / Notepad ++ / PL/SQL Developer 或任何其他免费软件/在线工具中是否可以使用此功能?
提前致谢!
你有备份包和克隆吗package.then你可以使用"Beyond Compare" tool.it对比较文本文件很有用。您可以同时打开备份包和克隆包,然后轻松找到代码中的更改。
此致
我使用 Microsoft Visual Studio 源代码管理资源管理器来比较服务器或文件系统上的版本。我推荐它胜过许多其他比较工具。附件是示例图片。
基于我的一篇帖子 -
create or replace package dmarkovitz.old_code as
1
2 2
3
/* yada yada yada */
4
5 '-- not a comment '
6
-- bla bla bla
7
8 "/* also not a comment"
9
10 'and again, not a comment */'
end;
/
create or replace package dmarkovitz.new_code as
1
2 /* bla bla bla */ 2
-- 3
/* yada yada yada */
4
5 '-- not a comment '
/*6
-- bla bla bla
7
8 "/* also not a comment"
9 */
10 'and again, not a comment */'
end;
select owner
,object_name
,object_type
,ddl
,uncommented_ddl
,regexp_count (uncommented_ddl,chr(10)) as lines
from (select owner
,object_name
,object_type
,ddl
,regexp_replace (ddl,'(''.*?''|".*?")|/\s*\*.*?\*/\s*|\s*--.*?(?=$|\z)','',1,0,'mn') as uncommented_ddl
from (select owner
,object_name
,object_type
,dbms_metadata.get_ddl (object_type,object_name,owner) as ddl
from all_objects
where owner = 'DMARKOVITZ'
and object_name in ('OLD_CODE','NEW_CODE')
and object_type = 'PACKAGE'
)
)
;
OWNER OBJECT_NAME OBJECT_TYPE DDL UNCOMMENTED_DDL LINES
---------- ----------- ----------- ---- --------------- -----
DMARKOVITZ NEW_CODE PACKAGE CLOB CLOB 8
DMARKOVITZ OLD_CODE PACKAGE CLOB CLOB 13
OLD_CODE uncommented_ddl
CREATE OR REPLACE PACKAGE "DMARKOVITZ"."OLD_CODE" as
1
2 2
3
4
5 '-- not a comment '
6
7
8 "/* also not a comment"
9
10 'and again, not a comment */'
end;
NEW_CODE uncommented_ddl
CREATE OR REPLACE PACKAGE "DMARKOVITZ"."NEW_CODE" as
1
2 2
4
5 '-- not a comment '
10 'and again, not a comment */'
end;
我的任务是修改一个包,在这样做的同时,我注释掉了要修改的行以保留版本控制,并用版本号对其进行了注释。
现在我已经完成了对包的修改,我想比较原始脚本和修改后脚本的代码行总数,没有行注释。
在 SQL Developer / Notepad ++ / PL/SQL Developer 或任何其他免费软件/在线工具中是否可以使用此功能?
提前致谢!
你有备份包和克隆吗package.then你可以使用"Beyond Compare" tool.it对比较文本文件很有用。您可以同时打开备份包和克隆包,然后轻松找到代码中的更改。
此致
我使用 Microsoft Visual Studio 源代码管理资源管理器来比较服务器或文件系统上的版本。我推荐它胜过许多其他比较工具。附件是示例图片。
基于我的一篇帖子 -
create or replace package dmarkovitz.old_code as
1
2 2
3
/* yada yada yada */
4
5 '-- not a comment '
6
-- bla bla bla
7
8 "/* also not a comment"
9
10 'and again, not a comment */'
end;
/
create or replace package dmarkovitz.new_code as
1
2 /* bla bla bla */ 2
-- 3
/* yada yada yada */
4
5 '-- not a comment '
/*6
-- bla bla bla
7
8 "/* also not a comment"
9 */
10 'and again, not a comment */'
end;
select owner
,object_name
,object_type
,ddl
,uncommented_ddl
,regexp_count (uncommented_ddl,chr(10)) as lines
from (select owner
,object_name
,object_type
,ddl
,regexp_replace (ddl,'(''.*?''|".*?")|/\s*\*.*?\*/\s*|\s*--.*?(?=$|\z)','',1,0,'mn') as uncommented_ddl
from (select owner
,object_name
,object_type
,dbms_metadata.get_ddl (object_type,object_name,owner) as ddl
from all_objects
where owner = 'DMARKOVITZ'
and object_name in ('OLD_CODE','NEW_CODE')
and object_type = 'PACKAGE'
)
)
;
OWNER OBJECT_NAME OBJECT_TYPE DDL UNCOMMENTED_DDL LINES
---------- ----------- ----------- ---- --------------- -----
DMARKOVITZ NEW_CODE PACKAGE CLOB CLOB 8
DMARKOVITZ OLD_CODE PACKAGE CLOB CLOB 13
OLD_CODE uncommented_ddl
CREATE OR REPLACE PACKAGE "DMARKOVITZ"."OLD_CODE" as
1
2 2
3
4
5 '-- not a comment '
6
7
8 "/* also not a comment"
9
10 'and again, not a comment */'
end;
NEW_CODE uncommented_ddl
CREATE OR REPLACE PACKAGE "DMARKOVITZ"."NEW_CODE" as
1
2 2
4
5 '-- not a comment '
10 'and again, not a comment */'
end;