这几天一直在用Enterprise Architecture来抽象项目中要用到的一些数据结构和类,然后都做得差不多了之后发现,生成代码的时候.h文件中类成员函数部分没有注释,但是.cpp文件中的函数定义块却有注释,我觉得重点应该是要在头文件的成员函数声明的地方有注释效果更好,但是找了半天也没发现在哪里修改设置。
然后找到了一个“代码工程模板”,里面有每个语言代码生成的时候用的模板,我不知道里面用的是什么脚本语言什么的,反正看着不是特别懂。
%synchNewClassNotesSpace="\n"% %synchNewOperationNotesSpace="\n"% %synchNewOperationBodySpace="\n"% %synchNewAttributeNotesSpace="\n"%/// // %fileName% // Implementation of the %elemType% %className% // Created on: %eaDateTime% %if classAuthor != ""% // Original author: %classAuthor% %endIf% ///\n$COMMENT="WARNING: DO NOT MODIFY THIS TEMPLATE BELOW THIS POINT" $guid = "EA_" + %TRIM(eaGUID,"{}")% $guid = %REPLACE($guid,"-","_")% $guid += "__INCLUDED_" #if !defined($guid) #define $guid\n %ImportSection% %list="Namespace" @separator="\n\n"% #endif // !defined($guid)\n
里面的C++代码生成部分模板代码如上。
然后我就开始花了1个小时去分析他生成C++头文件中类的时候的操作,然后试图仿照他的样子去在模板中在成员函数声明前面加入这个函数的注释,结果实验了几个地方都没有效果,最后我注意到有一个变量。
看下面两个模板:
1.Operation Notes
%if genOptGenComments != "T" or genOptCPPGenMethodNotesInHeader != "T"% %endTemplate%%PI=""% $wrapLen = %genOptWrapComment% $style = %genOptCPPCommentStyle%%if $style == "XML.NET"% %XML_COMMENT($wrapLen)% %elseIf $style == "JavaDoc"% %JAVADOC_COMMENT($wrapLen)% %else% %CSTYLE_COMMENT($wrapLen)% %endIf%
2.Operation Notes Impl
%if genOptGenComments != "T" or genOptCPPGenMethodNotesInBody != "T"% %endTemplate%%PI=""% $wrapLen = %genOptWrapComment% $style = %genOptCPPCommentStyle%%if $style == "XML.NET"% %XML_COMMENT($wrapLen)% %elseIf $style == "JavaDoc"% %JAVADOC_COMMENT($wrapLen)% %else% %CSTYLE_COMMENT($wrapLen)% %endIf%
看到上面两个关键字没,然后我就google了genOptCPPGenMethodNotesInHeader这个词,发现一个网址,里面说了要让头文件中也有注释只需要修改一个软件的设置,结果就是因为Enterprise Architecture这个软件的设置不止在设置菜单中有,在工具——选项中也有部分设置,导致我绕了一个大圈子才发现解决方法。
下面是传送门:
http://www.sparxsystems.com/enterprise_architect_user_guide/9.2/standard_uml_models/generation_option_field_substi.html