我正在尝试使用doxygen来记录我的itcl代码(版本1.8.2)。但是,它似乎错过了保护级别(公共/受保护/私人)。此外,它将常见变量与实例变量混为一谈,将所有变量标记为静态(只有常见变量应为静态变量)。第三,它不喜欢具有初始化状态的构造函数。通过在下面的代码上运行doxygen,所有这些行为都很明显。从doxygen手册本身的tcl代码示例中也可以看出前两个行为。这些已知的tcl扫描仪在doxygen中有局限性吗?感谢。
##\file
## MyClass
itcl::class MyClass {
private common a ;#< private common a
protected common b ;#< protected common b
public common c ;#< public common c
private variable x ;#< private variable x
protected variable y ;#< protected variable y
public variable z ;#< public variable z
## private proc aa
private proc aa args {}
## protected proc bb
protected proc bb args {}
## public proc cc
public proc cc args {}
## private method xx
private method xx args {}
## protected method yy
protected method yy args {}
## public method zz
public method zz args {}
## constructor
constructor args {} {
eval configure $args
}
}
答案 0 :(得分:1)
有一种(实用的)方法可以让doxygen了解类方法和实例以及公共变量的范围。但是,生成的doc仍会将所有ivars报告为“静态”。
用于确定方法/ ivar范围的doxygen命令是:
## \private
## \protected
## \public
我从doxygen doc example推断出这一点,尽管关键字也存在doxygen命令。
doxygen和Tcl存在许多我无法克服的问题。
doxygen的bugzilla中没有关于此事的报道错误...
我重写了你的例子,并添加了更多有效和无效的例子。
##\file
## MyClass
itcl::class MyClass {
## \private common a
private common a
## \protected common b
protected common b
## common c
public common c
private variable t ;#< variable x \private
protected variable u ;#< variable u \protected
public variable v ;#< variable v \public
private variable x ;#< \private variable x
protected variable y ;#< \protected variable y
public variable z ;#< \public variable z
## \private proc aa
private proc aa args {}
## \protected proc bb
protected proc bb args {}
private method xx args {} ;#< \private method xx
protected method yy args {} ;#< \protected method yy
public method zz args {} ;#< \public method zz
## \private variable k
variable k
## \protected variable l
variable l
## \public variable m
variable m
## constructor
constructor args {} {
eval configure $args
}
## proc proc comment
proc cc { args } {}
}
## proc proc comment outside
proc dd { args } {}
namespace eval ::MyClass {
## proc proc comment outside
proc ee { args } {}
}