sábado, 23 de julio de 2011

SourceGraph on EclipseFP

Eclipse really makes some tasks very very easy. One of them is running a command through a popup menu. So, while I was looking at the list of development tools in the Haskell wiki, I read about SourceGraph, and decided to integrate it into EclipseFP. The idea was easy: to run SourceGraph on the corresponding Cabal file and show the output in the internal browser. Voilà!

Three new features

I haven't written here for almost a month. But that doesn't mean that I hadn't been busy implementing new features for EclipseFP. Today I would like to share them with you.

The first one comprises some refactoring helpers. Now, when in the Eclipse interface you rename or move some file, the program knows that it should change the module name, the references in other modules and the Cabal file if it is referenced. This makes much easier to change the module hierarchy.


The second one is the ability to run unit tests directly from the interface. Because of the changes the Cabal interface for test-suites is being into, only a way to run tests is allowed: you should use test-framework to build them. That was the most complete interface I found, and it provides detailed reports in JUnit-style, that can later be shown in the development environment. So, just specify your tests in the Cabal file, right-click in your project root, select Run As... and then Test-framework test.


The last (but not least) feature I implemented this month has been profiling integration. As easy as you run your executables, you can run them in profile mode (note: this needs -rtsopts to be added to the GHC options in the Cabal file and just runs the executable with +RTS -hT). When the process has finished, the .hp file is saved in your project ans shown graphically, as with hp2ps or hp2pretty, but with the ability to control interactively the degree of grouping.


That's all for today! In the last weeks of the Google Summer of Code I would like to show coverage output from HPC and add some primitive handling of imports in Haskell source files.