Code search in Gforge AS 5.7

One of the new features of Gforge AS 5.7 is the support for source code indexing/search using doxygen and tsearch2 in both Subversion and CVS repositories. In this article, we’ll go trough a complete example to show the highlights of this feature.

Setup

In order to use this feature, you’ll need doxygen. You can get it from your distribution repositories or compile it from source.

After installing doxygen, you may need to edit your /etc/gforge/gforge.conf file. Look for the $config['doxygenPath'] configuration variable, and change it as need.ed Then, recreate the configuration cache.

#cd /opt/gforge5 && php bin/create_config_cache.php

Setting the path for code indexing

If you want to enable the code indexing in a given project, you’ll need to set one or more source code paths. In this example we will use subversion, but you can accomplish the same with CVS.

Navigate to SVN->Admin->Code search paths, you will see a screen like this

Browse search paths

In this example we will use the source code from pgadmin, a graphical client for PostgreSql.
We are interested in the code under /trunk/pgadmin path, so let’s proceed to add the path.

Index path added

In this case we are using C++, but doxygen can handle several  other languages (C, Java, Objective-C, Python,PHP, etc), check the doxygen documentation for a complete list of supported languages.

Now that we have configured the path a cronjob executed on a daily basis will index all the code found under the specified path. However, you can run the indexing script manually:

#cd /opt/gforge5
#php bin/gforge cronjobs scm_index

Some searching examples

Now that we have all the source code indexed, we can search for classes, methods and properties in the last revision.

Let’s search for the class PgsRecord

First search

The search will return a long list of methods and properties for this class and the class itself, this is just a small sample

Search results

The fields returned are self-explanatory. Comments will be shown for a given item if there is any.

You can search for a specific method or property inside a given class by using :: or . operators (ie: PgsRecordset::insert and PgsRecordset.index are equivalents)

Second search example

In our final example, we will use the tsearch2 operators. Suppose you want to look for setters in PgsRecord or PgsParser classes, we can use the tsearch2 OR operator (|)

Third search example

GForge goes Mobile for iPhone and iPad

iGForge

We are currently developing a client GForge Application for one of the most popular mobile devices platforms, iPhone and iPad. GForge mobile application will have the following features:

• User management
• Project Browser
• Tracker Browser
• Tracker Item View and Modification
• Tracker Item Creation

Fast communication and information sharing are the keystones of GForge tools. Today’s mobile devices and smart phones provide a new way to take these two features to a higher level, allowing people to stay in touch even while they are on the road or away from a regular computer.

iGforge

Since GForge Community opinions and feedback has been always very important for us we would like to know what other cool features you would like to see on this release.

Follow

Get every new post delivered to your Inbox.

Join 885 other followers