计数总计 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;