我已经提交了一个针对该项目的错误,您可以在此处找到有关我的环境的一些其他信息(包括位于此处的完整命令行:http://pastebin.com/JxWf9hRB).
https://github.com/jessevdk/cldoc/issues/73
原始问题:
我正在调查使用cldocs进行自动化文档编制.但是,它在我的代码库上崩溃,出现以下错误:
Traceback (most recent call last): file "/usr/local/bin/cldoc",line 9,in <module> load_entry_point('cldoc==1.6','console_scripts','cldoc')() file "/usr/local/lib/python2.7/site-packages/cldoc/__init__.py",line 57,in run run_generate(rest) file "/usr/local/lib/python2.7/site-packages/cldoc/__init__.py",line 27,in run_generate cmdgenerate.run(args) file "/usr/local/lib/python2.7/site-packages/cldoc/cmdgenerate.py",line 151,in run run_generate(t,opts) file "/usr/local/lib/python2.7/site-packages/cldoc/cmdgenerate.py",line 33,in run_generate generator.generate(xmlout) file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 55,in generate Generator.generate(self,outdir) file "/usr/local/lib/python2.7/site-packages/cldoc/generators/generator.py",line 22,in generate self.generate_node(node) file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 543,in generate_node self.generate_page(node) file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 510,in generate_page elem = self.node_to_xml(node) file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 496,in node_to_xml chelem = self.node_to_xml(child) file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 485,in node_to_xml self.call_type_specific(node,elem,'to_xml') file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 465,in call_type_specific getattr(self,nm)(node,elem) file "/usr/local/lib/python2.7/site-packages/cldoc/generators/xml.py",line 273,in method_to_xml if len(node.overrIDe) > 0: file "/usr/local/lib/python2.7/site-packages/cldoc/nodes/method.py",line 43,in overrIDe bases = List(self.parent.bases)AttributeError: 'namespace' object has no attribute 'bases'
编辑:
很长一段时间后,我已经把它削减到了一个极小的例子.
template<typename T>struct Foo { int baz(T const& t) const { }};template<typename T,int N>class bar { };template<typename T,int N>struct Foo<bar<T,N>> { int baz(bar<T,N> const& a) const;};template<typename T,int N>int Foo<bar<T,N>>::baz(bar<T,N> const& a) const { }
虽然这有效:
template<typename T>struct Foo { int baz(T const& t) const { }};template<typename T,N> const& a) const { }};解决方法 首先,cldoc在解析源时依赖于clang,它需要适当的C/C++标志(例如-std = c 11)才能正常运行.
然后,即使使用适当的标志,它也会在某些看起来有效的结构上爆炸.特别是它试图用看似错误的上下文来处理模板类方法定义.特别是Foo< bar< T< T>> :: baz()定义的问题在于,在处理过程中,它的self.parent等于Root或namespace对象(显然没有“bases”属性,并且应该’ t),而不是类或类似对象,其基数用于跟踪特定方法的覆盖列表.
我已经为这个问题准备了一个解决方法,它只是在爆炸时使用self.parent属性“放松” *** 作,并将其作为对问题的评论发布.但肯定不是解决方案.也许正确的解决方案应首先确定是否必须以这种方式处理这种类外的方法定义,可能正确的方法是仅在方法声明中处理覆盖列表.
这是补丁:
diff --git a/cldoc/nodes/method.py b/cldoc/nodes/method.pyindex f910241..3e1208f 100644--- a/cldoc/nodes/method.py+++ b/cldoc/nodes/method.py@@ -40,7 +40,7 @@ class Method(Function): return self._overrIDe # Lookup in bases,recursively- bases = List(self.parent.bases)+ bases = List(getattr(self.parent,"bases",[])) mname = self.name self._overrIDe = []总结
以上是内存溢出为你收集整理的c – cldoc在模板部分特化上崩溃全部内容,希望文章能够帮你解决c – cldoc在模板部分特化上崩溃所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)