JSDuck 4.3.1 released
This release mostly concerns the comments system, which has been completely rewritten. It should function about the same though. The comments now include a tagging system to help moderators better organize all the comments posted to docs.sencha.com.
The only other new feature is the ability to specify a path for each guide in guides JSON config file.
But there's a bunch of bug fixes. See the changelog for details. So you should still upgrade :)
In other news I've simplified the initial setup procedure of JSDuck development environment. See the Hacking guide if you want to jump in.
Any feedback most welcome as always.
JSDuck 4.4 released
Finally the JSDuck comments server is available as a separate app.
It's still not quite convenient to set up though. The main problematic part is the handling users. The Sencha Docs site gets the user data from Sencha Forum database, but obviously this isn't an option if you want to use it outside of Sencha. Maybe you would like to connect it to your own users database somewhere. Or maybe you would like to keep a separate users db just for JSDuck comments. Frankly I don't really know what's the main scenario here.
For now there are two authentication schemes implemented: Sencha Forum, and a simple implementation that uses the local comments database itself. But the latter there is no sign-up form or users management UI implemented for that. So it serves more as a starting point for somebody who would like to set up his own.
So at this point I'm asking some input from the community. What would you like to have? Maybe somebody could write up something for his own use and share it with others. The code is all out there, so have a poke around.
See the changelog for other smaller details in this release.
JsDuck + PlantUML
I'm working on plugin for jsduck which generates flow charts from code. It uses the esprima parser to get AST of analyzing function and graphviz syntax to create chart.
I've attached some images in post to demonstrate it.
My plugin is still far from completeness and lot of the flows is not supported, but I must to share it with community.
Interesting idea. Not to discourage you but if you have heavy classes with lengthy functions, you'll end up with huge images. For instance imagine what you'll get with something like jquery.js or ext-all.js.
Yes, of course, sometimes graphviz fails in image rendering due large size. Or renders spaghetti graphs (if it's spaghetti code). It's visually show that code is too much heavy and needs in refactor ;) With these images is much easier to prove it.
IMHO, for small functions such kind of visualization is perfect.
Interesting experiment indeed.
Though I personally find that the flow charts of code aren't really useful - I better just read the source directly. But that might be just me and your view might be completely the opposite. As SimoAmi sayd: don't let this discourage you.
Anyway, I've played around with Graphviz too to generate some higher level diagrams. In particular diagrams of inheritance and other relations between classes which I've found much more useful.
Do you have plans of also doing some other diagrams, or are you planning to strictly stick with the flow charts?
First of all it's just an experiment, which is succeeds from my point of view. Now I have much more experience with graphviz and esprima than before.
Yes, I also have plans to generate high-level abstraction charts like which functions are called within inspected function or whose use this function. But to implement it I need create major changes in jsduck code to get more information. My current implementation have a hacky trick to process only the code which is belongs to inspected function. For higher level diagrams I would need to access to the other files and make more complex analyzes of the relationships in code.
It even could be an separated project without any relation to jsduck.
And of course I need to share my plugin in github.
Below you can find some real visualizations from ext.
JSDuck 4.5 released
No big changes, but some neat additions that should make your life better:
JSDuck now finally prints out warning messages when it encounters unknown @tags - previously it just ignored any tag it didn't know of, making it hard to discover a simple typos like writing @mehtod instead of @method.
Events can now be more easily documented by just placing doc-comment before this.fireEvent() call:
The --external option now accepts '*' wildcard, so instead of ignoring classes one-by-one you can ignore a whole namespace of classes by using something like --external='MyApp.*'.
* Fired when element is clicked on.
this.fireEvent("click", this, value);
See the changelog for details.
Just getting around to converting my old jsdoc stuff to jsduck and I'm looking for more info as to what can be passed in via the config json file.
I have this, but I'm wondering what other options can be passed and what some mean (seo?). I don't see anything in the wiki beyond the sample config file.
//"--warnings": ["-link", "-no_doc"],
The config file is just another way to specify command line options, so all the command line options can be also used in config file.
To get help about a specific option, use the --help option. e.g. to see what "--seo" option does:
$ jsduck --help=seo