Is there a way to force Doxygen to show only cyclic header dependencies? - doxygen

I'm using the Doxygen GUI frontend app on Windows, and for the Diagrams topic, I choose the 2 "Include dependency graphs" and "Included by dependency graphs" options under the "Use dot tool from the GraphViz package" option. However, I don't need to see everything; I'm only interested in the circular header dependencies. Is there a way to tell Doxygen to show only the dependency cycles?

Related

How do I use doxygen with vcpkg/cmake?

I want to use doxygen with my project to generate documentation.
All "normal" dependencies of my project are managed by vcpkg and I was hoping that I can use doxygen this way as well, although it is not a lib that I link against, but a tool that I process my files with.
There seems to be some need for this, as this issue seems to be posted and some solution is merged.
When I dig further I found that there is a function called vcpkg_find_acquire_program that can specifically be called with doxygen argument. However, all examples are using portfile.cmake which my project does not have.
In my project I use:
vcpkg.json that acts as a manifest file. I specify the project name, version, dependencies. But I cannot put doxygen in the dependency list, because there is no doxygen portfile
CMakeLists.txt where I can specify that I require doxygen, but cmake won't manage downloading/installing it for me. It's vcpkg's job.
CMakeSettings.json where I specify build configurations
...and that is about it in terms of project configuration. So, where should I put that vcpkg_find_acquire_program? Or is there a different way?

I cannot find PostSharp.Patterns

I downloaded and installed Postsharp the essentials version which according to the matrix on their website includes caching.
I added it to my project by right clicking and selecting the Add Postsharp option.
When I go into my project to play with testing and I type:
using PostSharp.Patterns
Patterns is not an option for me, I have Aspects, Collections, Constraints... but no Patterns.
Am I missing a reference, is this a license issue?
PostSharp is split into multiple NuGet packages. Selecting "Add PostSharp to project" only installs the core package (PostSharp). In your case, you need to install PostSharp.Patterns.Caching. Please note that you will also need to specify the caching backend, see the documentation on caching.

Integrate GWT with maven-spring without the Google Plugin for Eclipse

I am facing this weird requirement where I am supposed to create a web page using GWT widgets in an existing spring-maven web project but the corp security doesn't allow me to install any Eclipse plugins. I have the latest SDK but thats about it.
Is there any way to achieve this?
The Google Plugin for Eclipse (GPE), just like so many other Eclipse plugins, is not mandatory; it's just an aid.
But first, if “the corp security doesn't allow me to install any plugin” only means you're not allowed to use the Eclipse marketplace or contact update sites, it's worth mentionning that you can download the update site as a ZIP to be used locally: https://developers.google.com/eclipse/docs/install-from-zip
If that isn't allowed either, then let's look at the features provided by the GPE and how you can possibly do the same without the plugin:
Wizard for creating new projects: you're in a Maven project, so you're not concerned.
Running and debugging: you can do the same with a Java Application launcher. Choose com.google.gwt.dev.DevMode as the Main Class, add the com.google.gwt:gwt-dev JAR to the classpath (you can also add it as a dependency with scope provided, and ignore the warning printed by the gwt-maven-plugin) if needed, add your source folders to the classpath and pass the appropriate arguments.
Wizards: let's be honest, they won't boost your productivity that much.
GWT Compilation: you can do the same with a Java Application launcher. Choose the com.google.gwt.dev.Compiler as the Main Class, add gwt-dev and your source folders to the classpath and pass the appropriate arguments.
Editors: you'll lose the formatting and highlighting of JSNI methods, as well as reference checking of your JSNI references, the auto-complete in UiBinder, and validation of UiBinder and ClientBundle references. All those will be done only when you GWT-compile your project.
RPC: you'll lose the validation of your RPC interfaces and quick-fix to keep your sync and async interfaces in sync. Validation will be done only when you GWT-compile your project.
JUnit: you can do the same with a JUnit launcher: just make sure you add gwt-dev and your source folders to the classpath, and pass the appropriate options as a gwt.args system property (see “Passing Arguments to the Test Infrastructure” in the docs).
Nothing insurmountable.

General questions about PDE programming

Here are two short, but hopefully good questions:
When to use plugins and when fragments?
What is a headless PDE build and when to use it (and when not)?
Fragments are for when you want to expand or alter the functionality of a plugin. A fragment cannot exist on it's own, it requires a parent plugin. The typical example of a fragment are for localizing a plugin, i.e to change strings to other languages. The fragment will then alter the functionality of the plugin to replace resources or code with the contents of the fragment.
More details here Tutorial here
The headless part means you do the build without a gui, i.e from commandline or from a tool such as jenkins/hudson. PDE stands for Plugin Development Environment. In short, it adds some tasks to Ant, and you can use the defined resources and dependencies in the plugin.xml to build. The alternative is to again define classpaths, sources, etc in an Ant build file.
I've used it in some projects and it has been difficult to setup properly, but its the best way to build Eclipse plugins or products. We wanted to use relative paths for the build and had major problems with that. The earlier in your project that you set up a continous headless PDE build, the easier it will be to configure.
More info here

Untangling dependency cycles in eclipse

I'm trying to export a plug-in feature as webstart in eclipse. After setting up feature.xml, and running the export wizard, when I click finish I get the following error:
A cycle was detected when generating the classpath org.pathvisio.core_2.0.11, org.pathvisio.batik.codec_1.7.0, org.pathvisio.batik.transcoder_1.7.0, org.pathvisio.pdftranscoder_1.7.0, pvplugins-bridgedbSettings_1.0.0.201106291012, org.pathvisio.core_2.0.11.
The trouble is, I have no idea where this cycle is exactly. So my question is: how do I find out which plug-in is causing the cyclic dependency? Are there any tools to help analyse dependency problems?
The message above lists the exact plug-ins that makes up the elements of the cycle. It is not a single plug-in that is responsible for the cycle; it is the listed set of plug-ins... So org.pathvisio.core has a dependency on org.pathvisio.batik.codec which has a dependency on...
When you try to understand the dependencies, remember to include the installed fragments in the calculations :-)
To visualize the dependencies, I usually open the PDE editor of one of the plug-ins, go to the "Dependencies" page, in the botton-right section you have a number of tools that can help you - in this case primary "Look for cycles in the dependency graph".
A cycle was detected when generating the classpath
It means that somewhere you have a plugin A requiring plugin B and plugin B requiring plugin C. plugin C requiring plugin A.
Find and fix this!