copperspice / doxypress Goto Github PK
View Code? Open in Web Editor NEWDocumentation generator using annotated sources for multiple computer languages
Home Page: https://www.copperspice.com/
License: GNU General Public License v2.0
Documentation generator using annotated sources for multiple computer languages
Home Page: https://www.copperspice.com/
License: GNU General Public License v2.0
I'm playing around with DoxyPress and so far it seems very interesting. Nice work! I immediately have an issue I wanted to talk about. The clang parsing functionality is very interesting and I believe this is The Future™, so I'd like to use this.
Currently I need to pass compilation flags manually, and it seems this gets applied to all input files. Also, I get errors like an "undefined std::uint64_t", which seems to suggest it cannot find the standard library headers.
This might not be the best way to handle flags. There's already functionality to handle things like this with clang::tooling::CompilationDatabase.
Also, how exactly do you parse headers? The GUI seems to be attempting to parse implementation files, not header files. I'm guessing you're extracting the declarations from the translation unit resulting from parsing a .cpp
file?
Followed the build instructions on: https://www.copperspice.com/docs/doxypress/build-doxypress.html
I have a native version of libClang 10.0.1 installed also tried width the prebuilt clang binaries
OS: Ubuntu 20.04.5 LTS
cmake version 3.16.3
Ninja not used
kill@cyclops:/opt/work/doxypress$ mkdir build
kill@cyclops:/opt/work/doxypress$ cd build
kill@cyclops:/opt/work/doxypress/build$ cmake ..
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for fork
-- Looking for fork - found
-- Looking for getpid
-- Looking for getpid - found
-- Looking for windows.h
-- Looking for windows.h - not found
DoxyPress configured to run on: Linux 64 bit, Mode
DoxyPress will be built in: /opt/work/doxypress/build
DoxyPress will be installed in: /usr/local
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/work/doxypress/build
kill@cyclops:/opt/work/doxypress/build$ make
[ 1%] Generating qrc_doxypress.cpp
Scanning dependencies of target DoxyPress
[ 2%] Building CXX object src/CMakeFiles/DoxyPress.dir/doxy_work.cpp.o
In file included from /opt/work/doxypress/src/doxy_work.cpp:53:
/opt/work/doxypress/src/parse_clang.h:24:10: fatal error: clang-c/Index.h: No such file or directory
24 | #include <clang-c/Index.h>
| ^~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [src/CMakeFiles/DoxyPress.dir/build.make:235: src/CMakeFiles/DoxyPress.dir/doxy_work.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:94: src/CMakeFiles/DoxyPress.dir/all] Error 2
make: *** [Makefile:152: all] Error 2
Had a quick look at the CMakeLists.txt and it seems to hard code the CLANG_PATH and CLANG_INC variables to ../clang_lib tried to change that to the actual directory for clang on ubuntu: /usr/lib/llvm-10/ but to no avail
I guess cmake should ideally use llvm-config to find the lib and include dirs..
Using
git clone https://github.com/planetmarshall/doxypress_test
cd doxypress_test
mkdir build
cmake -B build
doxypress doxypress.json
Generates the following html in doc/html/namespacelib.html
<p>Create an empty array. </p>
<p>Create an empty array and return it </p>
The following HTML is generated, with a duplicated brief description
<p>Create an empty array. </p>
<p>Create an empty array</p>
<p>Create an empty array and return it </p>
Set "clang-parsing": false
in doxypress.json
Header-only libraries often put implementation details into a special namespace (Boost libraries often use detail
).
Implementation details should not be displayed in documentation. When a function returns a type that is an implementation detail, it should be displayed as unspecified.
Examples:
http://www.boost.org/doc/libs/release/doc/html/boost/algorithm/is_alnum.html
http://www.boost.org/doc/libs/release/libs/core/doc/html/core/lightweight_test.html
Hi all!
I've attahced a zip, inside two folders and two Doxy JSONS. If you put the two folders to the C:\ root directory and run the doxy_sample7.json then everything will be everything fine.
But if you run doxy_sample8.jsoon you will get the following error message:
Error: Unable to run 'C:/Program Files (x86)/Graphviz2.38/bin/dot.exe', exit code = 2
Arguments = '"./inline_dotgraph_1.dot" -Tsvg -o "C:/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx12345678/doc/dot_inline_dotgraph_1.svg"'
The two JSONs and the two directories differs only in directory name (...8 is 1 character longer).
If you run the dot.exe with the full path it will generate the files correctly, so I think the bug is in the doxypress.
doxy_sample.zip
The XML schema defines the element doxygenindex
here: https://github.com/copperspice/doxypress/blob/master/resources/xml/index.xsd#L3
The XML generator actually writes doxypressindex
: https://github.com/copperspice/doxypress/blob/master/src/xmlgen.cpp#L2112
Either change the schema to reflect the code change, or fix the code and keep the schema as is.
The latter option is preferred, as it keeps compatibility existing tools that consume doxygen generated XML.
I am updating a web post that I wrote on integrating DoxyPress with Visual Studio. Since I originally wrote that post, I have reinstalled Windows 10. All Windows updates that are available as of this morning are installed.
I downloaded the DoxyPress Windows x64 installer and ran it. DoxyPress installed properly. In order to capture screenshots of the installation process, I uninstalled DoxyPress, then ran the installer again. Now when the installer starts, it displays two message boxes. The first contains:
...\AppData\Local\Temp\genteert.dll is either not designed to run on Windows or it contains an error. Try installing the program again using the original installation media or contact your system administrator or the software vendor for support. Error status 0xc0000020
and the second contains:
Cannot load ...\AppData\Local\Temp\genteert.dll
I have downloaded the installer again and run it. Same result. I tried the 32-bit installer. Again, same result.
Searching the error status from the first message box, I am led to a Microsoft page on fixing Windows Update errors. Following the instructions on that page does not solve the problem. I guess that would be logical since genteert.dll is user specific and not a Windows DLL.
It appears that the DoxyPress uninstaller uninstalls genteert.dll.
Does doxypress support c++20 concepts?
When using the server-side help feature for the HTML output in Doxypress, the PHP code created uses the <script language="php"> ... </script> escape syntax. Support for this syntax has been removed in PHP 7 (as per http://php.net/manual/en/language.basic-syntax.phpmode.php). Please change the PHP templates / generators to use the escape syntax for the PHP code.
I have specified Shift-JIS
for the input file language in the project file. (just like doxygen).
"input-encoding": "Shift-JIS",
When I run doxypress, I get corrupted documents and the following error
Error: Unsupported character encoding: 'Shift-JIS'
I've noticed Doxypress can use Clang
so I was wondering would it be possible to add support for reading rust source?
Hi, I try to use some images in my documentation, however doxypress reports problems when copying them to destination folder.
Project's archive: doxtest.zip
The project's structure looks like this:
doxtest/
docs/
intro.dox
images/
image1.png
image2.png
image3.png
image4.png
image5.png
doxypress.json
docs/intro.dox file contents:
/** @mainpage Introduction
@image html image1.png
@image html image2.png
@image html image3.png
@image html image4.png
@image html image5.png
*/
When doxypress parses the intro.dox file it prints following errors:
Generating main page
QFSFileEngine::open() No file name specified
QFSFileEngine::open() No file name specified
QFSFileEngine::open() No file name specified
QFSFileEngine::open() No file name specified
/home/projects/doxtest/docs/intro.dox:5: Warning: Unable to open image file for writing html/image3.png, error: 14
QFSFileEngine::open() No file name specified
QFSFileEngine::open() No file name specified
/home/projects/doxtest/docs/intro.dox:6: Warning: Unable to open image file for writing html/image4.png, error: 14
QFSFileEngine::open() No file name specified
And this is the project file:
{
"clang": {
"clang-compilation-path": "",
"clang-dialect": "-std=c++14",
"clang-flags": [
""
],
"clang-parsing": false,
"clang-use-headers": true
},
"configuration": {
"allow-sub-grouping": true,
"allow-unicode-names": false,
"always-detailed-sec": false,
"auto-link": true,
"brief-member-desc": true,
"built-in-stl-support": false,
"case-sensitive-fname": true,
"cpp-cli-support": false,
"create-subdirs": false,
"duplicate-docs": false,
"enabled-sections": [
""
],
"extract-all": false,
"extract-anon-namespaces": false,
"extract-local-classes": true,
"extract-local-methods": false,
"extract-package": false,
"extract-private": false,
"extract-static": false,
"file-version-filter": "",
"force-local-includes": false,
"full-path-names": true,
"generate-bug-list": true,
"generate-deprecate-list": true,
"generate-test-list": true,
"generate-todo-list": true,
"group-nested-compounds": false,
"hide-compound-ref": false,
"hide-friend-compounds": false,
"hide-in-body-docs": false,
"hide-navtree-members": false,
"hide-scope-names": false,
"hide-undoc-classes": false,
"hide-undoc-members": false,
"idl-support": true,
"inherit-docs": true,
"inline-grouped-classes": false,
"inline-info": true,
"inline-inherited-member": false,
"inline-simple-struct": false,
"internal-docs": false,
"javadoc-auto-brief": false,
"language-mapping": [
""
],
"layout-file": "",
"main-page-name": "",
"main-page-omit": false,
"markdown": true,
"max-init-lines": 30,
"multiline-cpp-brief": false,
"ns-alias": [
""
],
"qt-auto-brief": false,
"repeat-brief": true,
"separate-member-pages": false,
"short-names": false,
"show-file-page": true,
"show-grouped-members-inc": false,
"show-include-files": true,
"show-namespace-page": true,
"show-used-files": true,
"sip-support": false,
"sort-brief-docs": false,
"sort-by-scope-name": false,
"sort-class-case-sensitive": false,
"sort-constructors-first": false,
"sort-group-names": false,
"sort-member-docs": true,
"strict-sig-matching": false,
"tcl-subst": [
""
],
"toc-include-headers": 0,
"use-typedef-name": false
},
"dot": {
"class-diagrams": true,
"dia-file-dirs": [
""
],
"dia-path": "",
"directory-graph": true,
"dot-call": false,
"dot-called-by": false,
"dot-class-graph": true,
"dot-cleanup": true,
"dot-collaboration": true,
"dot-file-dirs": [
""
],
"dot-font-name": "Helvetica",
"dot-font-path": "",
"dot-font-size": 10,
"dot-graph-max-depth": 0,
"dot-graph-max-nodes": 50,
"dot-hierarchy": true,
"dot-image-format": "png",
"dot-include": true,
"dot-included-by": true,
"dot-multiple-targets": false,
"dot-num-threads": 0,
"dot-path": "",
"dot-transparent": false,
"generate-legend": true,
"group-graphs": true,
"have-dot": false,
"hide-undoc-relations": true,
"interactive-svg": false,
"msc-file-dirs": [
""
],
"mscgen-path": "",
"plantuml-cfg-file": "",
"plantuml-inc-path": [
""
],
"plantuml-jar-path": "",
"template-relations": false,
"uml-limit-num-fields": 10,
"uml-look": false
},
"doxypress-format": 1,
"doxypress-updated": "2018-Jun-30",
"external": {
"all-externals": false,
"external-groups": true,
"external-pages": true,
"generate-tagfile": "",
"perl-path": "/usr/bin/perl",
"tag-files": [
""
]
},
"general": {
"abbreviate-brief": [
"The $name class",
"The $name widget",
"The $name file",
"is",
"provides",
"specifies",
"contains",
"represents",
"a",
"an",
"the"
],
"aliases": [
""
],
"lookup-cache-size": 0,
"optimize-c": false,
"optimize-cplus": true,
"optimize-fortran": false,
"optimize-java": false,
"optimize-python": false,
"output-dir": "",
"output-language": "English",
"strip-from-inc-path": [
""
],
"strip-from-path": [
""
],
"tab-size": 4
},
"index": {
"alpha-index": true,
"cols-in-index": 5,
"ignore-prefix": [
""
]
},
"input": {
"example-patterns": [
"*"
],
"example-recursive": false,
"example-source": [
""
],
"exclude-files": [
""
],
"exclude-patterns": [
""
],
"exclude-symbols": [
""
],
"exclude-symlinks": false,
"filter-patterns": [
""
],
"filter-program": "",
"filter-source-files": false,
"filter-source-patterns": [
""
],
"image-path": [
"images/"
],
"input-encoding": "UTF-8",
"input-patterns": [
"*.as",
"*.c",
"*.cc",
"*.cpp",
"*.cxx",
"*.c++",
"*.cs",
"*.d",
"*.ddl",
"*.dox",
"*.for",
"*.f",
"*.f90",
"*.h",
"*.hh",
"*.hxx",
"*.hpp",
"*.h++",
"*.idl",
"*.ii",
"*.ixx",
"*.ipp",
"*.i++",
"*.inc",
"*.inl",
"*.java",
"*.js",
"*.m",
"*.md",
"*.mm",
"*.markdown",
"*.odl",
"*.php",
"*.php3",
"*.php4",
"*.php5",
"*.phtml",
"*.py",
"*.pyw",
"*.qsf",
"*.tcl",
"*.ucf"
],
"input-recursive": false,
"input-source": [
"docs/"
],
"mdfile-mainpage": ""
},
"messages": {
"quiet": false,
"warn-doc-error": true,
"warn-format": "$file:$line: $text",
"warn-logfile": "",
"warn-undoc": true,
"warn-undoc-param": false,
"warnings": true
},
"output-chm": {
"binary-toc": false,
"chm-file": "",
"chm-index-encoding": "",
"generate-chi": false,
"generate-chm": false,
"hhc-location": "",
"toc-expanded": false
},
"output-docbook": {
"docbook-output": "docbook",
"docbook-program-listing": false,
"generate-docbook": false
},
"output-docset": {
"docset-bundle-id": "org.doxypress.Project",
"docset-feedname": "DoxyPress generated docs",
"docset-publisher-id": "org.doxypress.Publisher",
"docset-publisher-name": "Publisher",
"generate-docset": false
},
"output-eclipse": {
"eclipse-doc-id": "org.doxypress.Project",
"generate-eclipse": false
},
"output-html": {
"disable-index": false,
"enum-values-per-line": 4,
"external-links-in-window": false,
"formula-fontsize": 10,
"formula-transparent": true,
"generate-html": true,
"generate-treeview": false,
"ghostscript": "",
"html-colorstyle-gamma": 80,
"html-colorstyle-hue": 220,
"html-colorstyle-sat": 100,
"html-dynamic-sections": false,
"html-extra-files": [
""
],
"html-file-extension": ".html",
"html-footer": "",
"html-header": "",
"html-index-num-entries": 100,
"html-output": "html",
"html-search": false,
"html-stylesheets": [
""
],
"html-timestamp": true,
"mathjax-codefile": "",
"mathjax-extensions": [
""
],
"mathjax-format": "HTML-CSS",
"mathjax-relpath": "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/",
"search-data-file": "searchdata.xml",
"search-external": false,
"search-external-id": "",
"search-external-url": "",
"search-mappings": [
""
],
"search-server-based": false,
"treeview-width": 250,
"use-mathjax": false
},
"output-latex": {
"cite-bib-files": [
""
],
"generate-latex": false,
"latex-batch-mode": false,
"latex-bib-style": "plain",
"latex-cmd-name": "latex",
"latex-compact": false,
"latex-extra-files": [
""
],
"latex-extra-packages": [
""
],
"latex-footer": "",
"latex-header": "",
"latex-hide-indices": false,
"latex-hyper-pdf": true,
"latex-output": "latex",
"latex-paper-type": "a4",
"latex-pdf": true,
"latex-ps": true,
"latex-source-code": false,
"latex-stylesheets": [
""
],
"latex-timestamp": false,
"make-index-cmd-name": "makeindex"
},
"output-man": {
"generate-man": false,
"man-extension": ".3",
"man-links": false,
"man-output": "man",
"man-subdir": ""
},
"output-perl": {
"generate-perl": false,
"perl-latex": false,
"perl-prefix": "",
"perl-pretty": true
},
"output-qhelp": {
"generate-qthelp": false,
"qch-file": "",
"qhp-cust-attrib": [
""
],
"qhp-cust-filter-name": "",
"qhp-namespace": "org.doxypress.Project",
"qhp-sect-attrib": [
""
],
"qhp-virtual-folder": "doc",
"qthelp-gen-path": ""
},
"output-rtf": {
"generate-rtf": false,
"rtf-compact": false,
"rtf-extension": "",
"rtf-hyperlinks": false,
"rtf-output": "rtf",
"rtf-paper-type": "a4",
"rtf-source-code": false,
"rtf-stylesheet": ""
},
"output-xml": {
"generate-xml": false,
"xml-output": "xml",
"xml-program-listing": true
},
"preprocessor": {
"enable-preprocessing": true,
"expand-as-defined": [
""
],
"expand-only-predefined": false,
"include-path": [
""
],
"include-patterns": [
""
],
"macro-expansion": false,
"predefined-macros": [
""
],
"search-includes": true,
"skip-function-macros": true
},
"project": {
"project-brief": "",
"project-logo": "",
"project-name": "My Project",
"project-version": ""
},
"source": {
"inline-source": false,
"ref-by-relation": false,
"ref-link-source": true,
"ref-relation": false,
"source-code": false,
"source-tooltips": true,
"strip-code-comments": true,
"suffix-exclude-navtree": [
"doc",
"dox",
"md",
"markdown",
"txt"
],
"suffix-header-navtree": [
"h",
"hh",
"hxx",
"hpp",
"h++",
"idl",
"ddl",
"pidl"
],
"suffix-source-navtree": [
"c",
"cc",
"cxx",
"cpp",
"c++",
"ii",
"ixx",
"ipp",
"i++",
"inl",
"java",
"m",
"mm",
"xml"
],
"use-htags": false,
"verbatim-headers": true
}
}
There are no tags in the git repository.
(also no GitHub's releases)
On the forum, there are already announcements of multiple released versions.
At least one is already available in both source and binary forms (did not find older versions).
The lack of tags makes it look like there are no releases yet!
(and no releases results in GitHub's "Watch releases" functionality not notifiying about new versions)
Is it possible to tag the latest version (and all the future ones) ?
Please format the code with clang-format and put the .clang-format file into the root of the repository.
This will simplify contributions.
How is the XML support on doxypress? I've had a migraine lasting 2+ years from Doxygen's XML output.
When a DoxyPress project has a Markdown main page with verbatim text (e.g. a source code listing), backslash-escaped text is incorrectly interpreted in the resulting HTML view.
For example, the markdown
~~~
cout << "A thing" << "\n";
~~~
Produces the HTML code listing
cout << "A thing" << "n";
Ergo the backslash is removed. This should not happen as this is verbatim text and should be transcribed verbatim.
Note that LaTeX output is not affected by this, and the backslash remains in the generated LaTeX.
I will update this issue with more information when I have time to test it more thoroughly.
... but is available on https://download.copperspice.com/doxypress/binary/
I assume that is a mistake?
I think I looked everywhere, but I can't find anything telling what exactly the difference between DoxyPress and Doxygen.
Improved this and that
is not an answer.
I think it should be in the first line of README.
Thanks
Doxygen has aproblem with generating nested chapter/subchapter structure for the PDF output, making the @InGroup functionality have a very limited use for PDF output (HTML is OK).
This is a long standing issue of Doxygen: https://stackoverflow.com/questions/21037598/latex-output-generated-using-doxygen-does-not-support-nested-groups-defgroup-wi/59955116
Does DoxyPress fix this issue?
(Note: I tried generating the same document in DoxyPress as I am with Doxygen to no avail; I am still to create a minimal example test case without IP issues.)
This issue is with doxypress version 1.3.7 on linux (KDE neon which is like ubuntu). While investigating the SEGV that occurs with doxypress when it is processing the wt source code, I made it so it would only process the header files (.h and .hpp only). doxypress gave SIGABRT .This is due to an assertion failure. The stack trace is shown below:
doxypress: src/docparser.cpp:6516: int DocPara::handleCommand(const QString &): Assertion `0' failed.
Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) where
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff1e9a801 in __GI_abort () at abort.c:79
#2 0x00007ffff1e8a39a in __assert_fail_base (fmt=0x7ffff20117d8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x208527c "0", file=file@entry=0x19d97d1 "src/docparser.cpp", line=line@entry=6516,
function=function@entry=0x19daffb "int DocPara::handleCommand(const QString &)") at assert.c:92
#3 0x00007ffff1e8a412 in __GI___assert_fail (assertion=0x208527c "0", file=0x19d97d1 "src/docparser.cpp", line=6516, function=0x19daffb "int DocPara::handleCommand(const QString &)") at assert.c:101
#4 0x0000000000625d56 in DocPara::handleCommand(QString8 const&) ()
#5 0x000000000060addf in DocPara::parse(bool, int) ()
#6 0x000000000062f094 in DocRoot::parse() ()
#7 0x00000000006305e8 in validatingParseDoc(QString8 const&, int, QSharedPointer, QSharedPointer, QString8 const&, bool, bool, QString8 const&, bool, bool) ()
#8 0x000000000085c9d6 in OutputList::generateDoc(QString8 const&, int, QSharedPointer, QSharedPointer, QString8 const&, bool, bool, QString8 const&, bool, bool) ()
#9 0x0000000000820b04 in MemberDef::writeDocumentation(QSharedPointer, OutputList&, QString8 const&, QSharedPointer, bool, bool, bool) ()
#10 0x0000000000842b80 in MemberList::writeDocumentation(OutputList&, QString8 const&, QSharedPointer, QString8 const&, bool, bool) ()
#11 0x0000000000564c3a in ClassDef::writeMemberDocumentation(OutputList&, MemberListType, QString8 const&, bool) ()
#12 0x0000000000566706 in ClassDef::writeDocumentationContents(OutputList&, QString8 const&) ()
#13 0x0000000000566ffd in ClassDef::writeDocumentation(OutputList&) ()
#14 0x0000000000488405 in Doxy_Work::generateNamespaceDocs() ()
#15 0x0000000000481bb0 in generateOutput() ()
#16 0x00000000007e508f in main ()
(gdb)
When attempting to run the installer, it tells me that it cannot install to C:\Program Files\DoxyPress without telling my why it can't install there. I know enough about installers to guess that this is an elevation problem, so I run the installer as administrator and it works properly. This shouldn't be required. I don't know where your installer source is located but for Windows you should consider using WiX to get things done properly and avoid non-standard experience like this.
I don't see osx listed as a download option here:
https://download.copperspice.com/doxypress/binary/
The official documentation page for doxypress seems offline.
I ran doxypress version 1.3.7 on wt-4.3.0 on KDE Neon (which is ubuntu-like). After some processing it exited silently and mysteriously. I then ran it under gdb where it showed it was getting a SEGV. I was able to get a stack trace:
Program received signal SIGSEGV, Segmentation fault.
0x00000000004e5598 in CsString::CsBasicString<CsString::utf8, std::__1::allocator >::CsBasicStringQString8::const_iterator(QString8::const_iterator, QString8::const_iterator, std::__1::allocator const&) ()
(gdb) where
#0 0x00000000004e5598 in CsString::CsBasicString<CsString::utf8, std::__1::allocator >::CsBasicStringQString8::const_iterator(QString8::const_iterator, QString8::const_iterator, std::__1::allocator const&) ()
#1 0x000000000081dd9b in MemberDef::writeDocumentation(QSharedPointer, OutputList&, QString8 const&, QSharedPointer, bool, bool, bool) ()
#2 0x0000000000842b80 in MemberList::writeDocumentation(OutputList&, QString8 const&, QSharedPointer, QString8 const&, bool, bool) ()
#3 0x00000000006e59b1 in FileDef::writeMemberDocumentation(OutputList&, MemberListType, QString8 const&) ()
#4 0x00000000006e4d7f in FileDef::writeDocumentation(OutputList&) ()
#5 0x0000000000487aec in Doxy_Work::generateFileDocs() ()
#6 0x0000000000481920 in generateOutput() ()
#7 0x00000000007e508f in main ()
(gdb)
I'm interested enough in Doxypress to try it out if I can install it as a standard Ubuntu package but not enough to build it myself. I suspect there are many others like me so I think you'll get much better adoption if you can to get Doxypress in standard Linux distro packages and then publicise that fact.
Thanks.
at least for html export most modern browser are capable of handling svg image files and they are dynamically saleable.
not sure about the other output formats though
Edit: fixed, and pull request added
The installation process of the GUI should make a symlink in /usr/local/bin
to the command-line executable. e.g. something like this
$ ln -s /Applications/DoxyPressApp.app/Contents/MacOS/doxypress /usr/local/bin/doxypress
adding either width or height to a \diapage tag does noting
image is rendered but it very tiny so not really usefull
Doxypress 1.51
Hi
I'm creating documentation in czech and my HTML output is sometimes wrong.
It's fine here:
But if follow a link, encoding is obviously wrong.
When creating sections or subsections (either with commands or Markdown), adding span-formatting into the section contents (such as <code>...</code> or Markdown backticks), the generated formatting tags are HTML-escaped (contain < and > entities).
This is a regression issue, it is not being reproduced in an old version. As far as I had time to debug it, the parser seems to generate "Sym_Less" tokens within the sections. I did not find why yet.
Comments in C++ files with backticks (see below) hang the parser.
*.hpp
or *.cpp
(other file extensions not tested) file/// `text`
doxypress.json
filedoxypress.json
{ "clang": { "clang-compilation-path": "", "clang-dialect": "-std=c++14", "clang-flags": [ "" ], "clang-parsing": false, "clang-use-headers": true }, "configuration": { "allow-sub-grouping": true, "allow-unicode-names": false, "always-detailed-sec": false, "auto-link": true, "brief-member-desc": true, "built-in-stl-support": false, "case-sensitive-fname": true, "cpp-cli-support": false, "create-subdirs": false, "duplicate-docs": false, "enabled-sections": [ "" ], "extract-all": false, "extract-anon-namespaces": false, "extract-local-classes": true, "extract-local-methods": false, "extract-package": false, "extract-private": false, "extract-static": false, "file-version-filter": "", "force-local-includes": false, "full-path-names": true, "generate-bug-list": true, "generate-deprecate-list": true, "generate-test-list": true, "generate-todo-list": true, "group-nested-compounds": false, "hide-compound-ref": false, "hide-friend-compounds": false, "hide-in-body-docs": false, "hide-navtree-members": false, "hide-scope-names": false, "hide-undoc-classes": false, "hide-undoc-members": false, "idl-support": true, "inherit-docs": true, "inline-grouped-classes": false, "inline-info": true, "inline-inherited-member": false, "inline-simple-struct": false, "internal-docs": false, "javadoc-auto-brief": false, "language-mapping": [ "" ], "layout-file": "", "main-page-name": "", "main-page-omit": false, "markdown": true, "max-init-lines": 30, "multiline-cpp-brief": false, "ns-alias": [ "" ], "qt-auto-brief": false, "repeat-brief": true, "separate-member-pages": false, "short-names": false, "show-file-page": true, "show-grouped-members-inc": false, "show-include-files": true, "show-namespace-page": true, "show-used-files": true, "sip-support": false, "sort-brief-docs": false, "sort-by-scope-name": false, "sort-class-case-sensitive": false, "sort-constructors-first": false, "sort-group-names": false, "sort-member-docs": true, "strict-sig-matching": false, "tcl-subst": [ "" ], "toc-include-headers": 0, "use-typedef-name": false }, "dot": { "class-diagrams": true, "dia-file-dirs": [ "" ], "dia-path": "", "directory-graph": true, "dot-call": false, "dot-called-by": false, "dot-class-graph": true, "dot-cleanup": true, "dot-collaboration": true, "dot-file-dirs": [ "" ], "dot-font-name": "Helvetica", "dot-font-path": "", "dot-font-size": 10, "dot-graph-max-depth": 0, "dot-graph-max-nodes": 50, "dot-hierarchy": true, "dot-image-format": "png", "dot-include": true, "dot-included-by": true, "dot-multiple-targets": false, "dot-num-threads": 0, "dot-path": "", "dot-transparent": false, "generate-legend": true, "group-graphs": true, "have-dot": false, "hide-undoc-relations": true, "interactive-svg": false, "msc-file-dirs": [ "" ], "mscgen-path": "", "plantuml-cfg-file": "", "plantuml-inc-path": [ "" ], "plantuml-jar-path": "", "template-relations": false, "uml-limit-num-fields": 10, "uml-look": false }, "doxypress-format": 1, "doxypress-updated": "2018-Jun-30", "external": { "all-externals": false, "external-groups": true, "external-pages": true, "generate-tagfile": "", "perl-path": "/usr/bin/perl", "tag-files": [ "" ] }, "general": { "abbreviate-brief": [ "The $name class", "The $name widget", "The $name file", "is", "provides", "specifies", "contains", "represents", "a", "an", "the" ], "aliases": [ "" ], "lookup-cache-size": 0, "optimize-c": false, "optimize-cplus": true, "optimize-fortran": false, "optimize-java": false, "optimize-python": false, "output-dir": "", "output-language": "English", "strip-from-inc-path": [ "" ], "strip-from-path": [ "" ], "tab-size": 4 }, "index": { "alpha-index": true, "cols-in-index": 5, "ignore-prefix": [ "" ] }, "input": { "example-patterns": [ "*" ], "example-recursive": false, "example-source": [ "" ], "exclude-files": [ "" ], "exclude-patterns": [ "" ], "exclude-symbols": [ "" ], "exclude-symlinks": false, "filter-patterns": [ "" ], "filter-program": "", "filter-source-files": false, "filter-source-patterns": [ "" ], "image-path": [ "" ], "input-encoding": "UTF-8", "input-patterns": [ "*.as", "*.c", "*.cc", "*.cpp", "*.cxx", "*.c++", "*.cs", "*.d", "*.ddl", "*.dox", "*.for", "*.f", "*.f90", "*.h", "*.hh", "*.hxx", "*.hpp", "*.h++", "*.idl", "*.ii", "*.ixx", "*.ipp", "*.i++", "*.inc", "*.inl", "*.java", "*.js", "*.m", "*.md", "*.mm", "*.markdown", "*.odl", "*.php", "*.php3", "*.php4", "*.php5", "*.phtml", "*.py", "*.pyw", "*.qsf", "*.tcl", "*.ucf" ], "input-recursive": false, "input-source": [ "" ], "mdfile-mainpage": "" }, "messages": { "quiet": false, "warn-doc-error": true, "warn-format": "$file:$line: $text", "warn-logfile": "", "warn-undoc": true, "warn-undoc-param": false, "warnings": true }, "output-chm": { "binary-toc": false, "chm-file": "", "chm-index-encoding": "", "generate-chi": false, "generate-chm": false, "hhc-location": "", "toc-expanded": false }, "output-docbook": { "docbook-output": "docbook", "docbook-program-listing": false, "generate-docbook": false }, "output-docset": { "docset-bundle-id": "org.doxypress.Project", "docset-feedname": "DoxyPress generated docs", "docset-publisher-id": "org.doxypress.Publisher", "docset-publisher-name": "Publisher", "generate-docset": false }, "output-eclipse": { "eclipse-doc-id": "org.doxypress.Project", "generate-eclipse": false }, "output-html": { "disable-index": false, "enum-values-per-line": 4, "external-links-in-window": false, "formula-fontsize": 10, "formula-transparent": true, "generate-html": true, "generate-treeview": false, "ghostscript": "", "html-colorstyle-gamma": 80, "html-colorstyle-hue": 220, "html-colorstyle-sat": 100, "html-dynamic-sections": false, "html-extra-files": [ "" ], "html-file-extension": ".html", "html-footer": "", "html-header": "", "html-index-num-entries": 100, "html-output": "html", "html-search": false, "html-stylesheets": [ "" ], "html-timestamp": true, "mathjax-codefile": "", "mathjax-extensions": [ "" ], "mathjax-format": "HTML-CSS", "mathjax-relpath": "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/", "search-data-file": "searchdata.xml", "search-external": false, "search-external-id": "", "search-external-url": "", "search-mappings": [ "" ], "search-server-based": false, "treeview-width": 250, "use-mathjax": false }, "output-latex": { "cite-bib-files": [ "" ], "generate-latex": false, "latex-batch-mode": false, "latex-bib-style": "plain", "latex-cmd-name": "latex", "latex-compact": false, "latex-extra-files": [ "" ], "latex-extra-packages": [ "" ], "latex-footer": "", "latex-header": "", "latex-hide-indices": false, "latex-hyper-pdf": true, "latex-output": "latex", "latex-paper-type": "a4", "latex-pdf": true, "latex-ps": true, "latex-source-code": false, "latex-stylesheets": [ "" ], "latex-timestamp": false, "make-index-cmd-name": "makeindex" }, "output-man": { "generate-man": false, "man-extension": ".3", "man-links": false, "man-output": "man", "man-subdir": "" }, "output-perl": { "generate-perl": false, "perl-latex": false, "perl-prefix": "", "perl-pretty": true }, "output-qhelp": { "generate-qthelp": false, "qch-file": "", "qhp-cust-attrib": [ "" ], "qhp-cust-filter-name": "", "qhp-namespace": "org.doxypress.Project", "qhp-sect-attrib": [ "" ], "qhp-virtual-folder": "doc", "qthelp-gen-path": "" }, "output-rtf": { "generate-rtf": false, "rtf-compact": false, "rtf-extension": "", "rtf-hyperlinks": false, "rtf-output": "rtf", "rtf-paper-type": "a4", "rtf-source-code": false, "rtf-stylesheet": "" }, "output-xml": { "generate-xml": false, "xml-output": "xml", "xml-program-listing": true }, "preprocessor": { "enable-preprocessing": true, "expand-as-defined": [ "" ], "expand-only-predefined": false, "include-path": [ "" ], "include-patterns": [ "" ], "macro-expansion": false, "predefined-macros": [ "" ], "search-includes": true, "skip-function-macros": true }, "project": { "project-brief": "", "project-logo": "", "project-name": "My Project", "project-version": "" }, "source": { "inline-source": false, "ref-by-relation": false, "ref-link-source": true, "ref-relation": false, "source-code": false, "source-tooltips": true, "strip-code-comments": true, "suffix-exclude-navtree": [ "doc", "dox", "md", "markdown", "txt" ], "suffix-header-navtree": [ "h", "hh", "hxx", "hpp", "h++", "idl", "ddl", "pidl" ], "suffix-source-navtree": [ "c", "cc", "cxx", "cpp", "c++", "ii", "ixx", "ipp", "i++", "inl", "java", "m", "mm", "xml" ], "use-htags": false, "verbatim-headers": true } }
$ # optional with debug all flags
$ doxypress -d classes -d commentcnv -d commentscan -d extcmd -d filteroutput -d findmembers -d functions -d lex -d markdown -d preprocessor -d printtree -d validate -d variables
DoxyPress Version: 1.3.6
** Read Project Configuration
** Verify Project Configuration
Initialization
Parse input files
Searching for include files
Searching for example files
Searching for images
Searching for dot files
Searching for msc files
Searching for dia files
Searching for files to exclude
Searching for files to process
Searching for files in directory /xyz
Parse tag files
** Parsing
Processing /xyz/a.cpp
Entering lexical analyzer: src/generated/pre.cpp (for: /xyz/a.cpp)
Finished lexical analyzer: src/generated/pre.cpp (for: /xyz/a.cpp)
Entering lexical analyzer: src/generated/commentcnv.cpp (for: /xyz/a.cpp)
Entering lexical analyzer: src/generated/parse_cstyle.cpp (for: /xyz/a.cpp)
# hangs forever
^C
Cleaning up
DoxyPress aborted
$
$ doxypress --version
DoxyPress Version: 1.3.6
email: [email protected]
Downloaded from https://download.copperspice.com/
System: Linux, Fedora 31
This is an issue that's been in Doxygen for a while, and since so much work is being done on the codebase, I'd like to help finally fix it. Unfortunately with the rewrite to scanner.l (to commentscan.l, I believe) the previously identified line numbers are no longer valid and some quick searching for variables has failed. If someone with more experience in the codebase could direct me to where C# properties are parsed, I would be happy to try and fix this.
I cannot get current master (e9a4dbe) to compile.
Using autoreconf, ./configure, make, the binaries lrelease
, rcc
and alike cannot be found because they are expected in ${CS_HOME}/bin
(which is my $HOME/bin
) instead of /usr/bin
... After fixing that, I have the same problem with the Qt include paths, i.e. it cannot find the QString
header file.
Using CMake, a lot of Windows paths (starting with drives z: and c:) are hard-coded.
It appears that having a C# verbatim string (string literal prefixed with @
) in a method before the documentation of a property leads to the text in the string being included in the name of the property in the docs.
Example code:
public class Test
{
/// <summary>Test method</summary>
/// <returns>a string</returns>
public static string Bar()
{
return new string(@"Ratione dolores qui voluptatem. Sunt facere dignissimos quod est odit. Omnis ipsum quos possimus quis aut. Voluptatem dolorem ut minima magnam aut modi.");
}
/// <summary>A property</summary>
/// <value>a number</value>
public static int Foo
{
get {return 3;}
}
}
First noticed in DoxyPress 1.2.5
Some options would be best overriden from the command line take precedence over the configuration file, without having a complex build step that updates the configuration file.
Specifically in my case changing the project-version, where I want different output for each branch which I can easily detect on the command line.
It would be good if we could override any setting.
The seealso tag is not completely supported in Doxygen, and it seems it is not fixed in Doxypress. Consider the following:
<seealso href="https://docs.microsoft.com/en-us/windows/win32/api/windef/ns-windef-size">SIZE</seealso>
The attribute href is a well-known extension used in .NET for explicit URL, but this does not work.
<seealso cref="https://docs.microsoft.com/en-us/windows/win32/api/windef/ns-windef-size">SIZE</seealso>
For this, there is See also
section generated with the hyperlink text, but it is not hyperlinked and the SIZE
is displayed somewhere below.
I want use Markdown, can you make enhancement to produce Markdown Files? I found Moxygen but it is not enough, i need separate .MD files with images like HTML output.
If the XML doc comment summary tag for a C# class is all on one line, like below, DoxyPress will fail to pick it up.
Example code:
/// <summary>A test class</summary>
public class Test
{
/// <summary>A test method</summary>
public void foo(){}
}
In the example above, foo()
documents fine, but Test
does not. Workaround: pad out the doc comment like so:
/// <summary>
/// A test class
/// </summary>
When adding a markdown heading with the header ID extension, the following issues are exhibited:
This is a regression issue, version 1.2.10 worked fine, master (1.3.5) shows this issue.
Pre-conditions:
Issue:
Expected:
Analysis:
Edit the doxy_test_clang.json
file so that the clang-compilation-path
field refers to a file. Eg:
"clang": {
"clang-compilation-path": "doxy_test_clang.json",
...
Run Doxypress with
doxypress test_build/doxy_test_clang.json
Doxypress should exit cleanly with a suitable error message.
Doxypress crashes with a segmentation fault
This is caused by the following lines in parse_clang.cpp
:
if (db_json == nullptr) {
errAll("Using compilation path '%s' failed.\nClang error: %s\n", csPrintable(clangCompilationPath), error.c_str());
}
db_commands = db_json->getAllCompileCommands();
If db_json
is null, the pointer deference will fail.
I was using doxygen and failed to get function properly displayed ( doxygen/doxygen#8921 ), thus I search and find doxypress.
Sadly, doxypress 1.4.1 also failed to parse the same functions, only get one hello()
displayed in the html page:
#pragma once
void hello(const char* name);
template<typename T>
void hello(const char* name);
The json file I am using is in what.tar.gz .
When generating HTML output for CHM files, the HHP file has incorrect referencing for internal images such as class hierarchy diagrams; the HHP file lists them as html\file.png
. This is incorrect, as the images are not in an html
subdirectory. All HTML output files are placed in the same directory as the HHP.
The simple solution is simply to remove html\
prefix from the offending lines.
I've found a few issues with the LaTeX output produced by Doxypress. The main file refman.tex
has a fairly perplexing line remove-value
, under the comment "NLS Support Packages". I don't know the purpose of it, as Doxygen's output does not have this line. Commenting it out has no ill effects, and in fact removes extraneous (almost) blank pages from the resulting PDF.
The bigger problem, however, is in the individual class/function documention tex
files: the description text of function parameters are not applied in the tex file.
Compare this example output produced by Doxypress:
\begin{DoxyParams}{Parameters}
{\em num} &
\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An uint16\+\_\+t.
\end{DoxyReturn}
To this output (from the same source) by Doxygen:
\begin{DoxyParams}{Parameters}
{\em num} & A number.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An uint16\+\_\+t.
\end{DoxyReturn}
Also, Doxypress output is missing the make.bat
file to build the latex on Windows.
Simply copying this file from Doxygen appears to work without issue once the remove-value
line is commented out.
C++ code used for this example is below.
example.h
:
#pragma once
class Test
{
public:
uint16_t swap16(uint16_t);
};
example.cpp
:
#include "example.h"
/**
* Swap 16.
*
* @param num A number.
*
* @returns An uint16_t.
**/
uint16_t Test::swap16(uint16_t num)
{
return (num >> 8) | (num << 8);
}
I have build copperspice but when I try to configure doxypress using cmake-gui I get:
CMake Error at CMakeLists.txt:22 (include):
include could not find load file:
xxxxxx/copperspice_BUILD/InstallMinGW.cmake
and indeed I do build copperspice with MSVC but then this !?
Hi,
Here's the way to reproduce the issue (see attachment for a self-contained example):
/**
* @snippet example/custom_operator.cc full
*/
custom_operator.cc
, write something like this:auto operator^(E1 &&x, E2 &&y) -> Compound<XOR, E1, E2> {
....
}
Notice there's NO space between operator
and ^
.
When LaTex docs are generated, open refman.tex
in some validating tool (I use TexStudio), or just run make pdf
in latex directory. PDF generation should fail, and the reason for it is this line:
\DoxyCodeLine{\textcolor{keyword}{auto} operator^(E1 \&\&x, E2 \&\&y) -> Compound<XOR, E1, E2>
For comparison, this is what Doxygen generates (tested with 1.8.19):
\DoxyCodeLine{\textcolor{keyword}{auto} operator\string^(E1 \&\&x, E2 \&\&y) -\/> \mbox{\hyperlink{classctaeb_1_1Compound}{Compound<XOR, E1, E2>}} \{}
Now, if I ADD a space between operator
and ^
, Doxypress generates correct LaTex:
\DoxyCodeLine{\textcolor{keyword}{auto} operator\string^(E1 \&\&x, E2 \&\&y) -\/> \mbox{\hyperlink{classctaeb_1_1Compound}{Compound<XOR, E1, E2>}} \{}
So, apparently the problem boils down to the ^
being unrecognized. Enabling or disabling clang parsing makes no difference, it seems.
My environment:
Ubuntu 18.04 + doxypress 1.4.0
Thanks,
Igor.
In the doxygen generated XML output, the only way to find out whether a function is overloaded or not, is to compare the description with the following string: "This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts."
See here for example: https://github.com/boostorg/boostbook/blob/develop/xsl/doxygen/doxygen2boostbook.xsl#L22
It would be nice if doxypress provided a better way.
Take the example markdown file here:
# Usage with Python
The DCS-100 SDK can be used in Python code with either [IronPython](http://www.ironpython.net) or [Python.NET](http://pythonnet.github.io). The usage is a little different between the two.
## IronPython
~~~{.py}
import os
import clr
...
The generated Latex for this markdown will be something like:
The D\+C\+S-\/100 S\+DK can be used in Python code with either \href{http://www.ironpython.net}{\tt Iron\+Python} or \href{http://pythonnet.github.io}{\tt Python.\+N\+ET}. The usage is a little different between the two.
\subsection*{Iron\+Python}
\begin{DoxyCode}
\end{DoxyCode}
1 \textcolor{keyword}{import} os
2 \textcolor{keyword}{import} clr
3 ...
Additionally, it would be nice if the latex output used Minted to format such code, as it would avoid the issues of pre-processing the code (for which I will file another issue I found) for DoxyPress and turn it into a straight-through transfer.
A code line such as this (in Python):
import sys #Make it do work
Will become a Latex line like this:
\textcolor{keyword}{import} os \textcolor{comment}{#Make#Make it#Make it do#Make it do work}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.