Goanna Command Style
Most users will use Goanna integrated into their development environment, either Visual Studio or Eclipse. However, we also have a command line version called Goanna Central. Since I am mostly working on the analysis engine this is the version I use most often. And part of this entails to find open source projects and run Goanna over it. So, if you have an open source project, we might be watching you 🙂
Most open source projects provide configure scripts to generate makefiles. If that is the case using Goanna is a matter of configuring it with Goanna. There are two executables, goannacc and goannac++, that behave like gcc and g++. Configuring then just means to execute:
goanna@KITTYHAWK:~$ ./configure CC=goannacc CXX=goannac++
After this you can make you project as you are used to, with the difference that you will get feedback from Goanna.
Sometimes open source project do not provide a configure script. Last week I got my hands on an open source model checker – it is always some guilty pleasure to model check a model checker – and this project only included a makefile. Once all the necessary libraries were installed – the once provided were incompatible with my machine – such that the project could be build with g++, all that remained was to edit the makefile. It is always exciting to edit a file that says right at the top: Automatically-generated file. Do not edit!. To use Goanna required to find all occurrences of, in this case, g++ and replace them with goannac++. And then to make the project.
The output looks like this:
Building file: ../src/Ned.cpp
Invoking: GCC C++ Compiler
goannac++ -DDEBUG -I../include -O0 -g3 -Wall -c -fmessage-length=0 -Wextra -MMD -MP -MF"src/Ned.d"
Goanna - analyzing file ../src/Ned.cpp
Number of functions: 3
../src/Ned.cpp:28: warning: Goanna[COP-assign-op] Missing assignment operator for class `Ned' which uses dynamic memory allocation
../src/Ned.cpp:28: warning: Goanna[COP-copy-ctor] Missing copy constructor for class `Ned' which uses dynamic memory allocation
Total runtime : 6.65 seconds
That was about all it took. BTW: Kittyhawk is the name of my machine, and it is aptly named.