Tuesday, June 26, 2012

Progress! :D

I mentioned briefly in my previous post that I was working on integrating FindBugs into our Ant build. What I didn't tell you is how much time and effort has been going into figuring out how to get it to work properly! After almost 2 weeks of work, FindBugs is finally working properly in our build (writing reports to the console/xml output file and all!)!! It may sound silly to be so excited about something so small but if any of you knew EXACTLY what I (with help from Joe Rice, the leader of my development team) went through to get this to work. Let me give you a brief overview of what I have gone through to get this wonderful plug-in integrated into our Ant build.

There's a nicely published FindBugs manual that pretty much covers (if only briefly) all you need to know about the FindBugs tool/plugin, including integrating it with Ant. Newer versions of FindBugs come out of the box with an Ant task that can be used for "easier" integration -- yeah right. Chapter 6 of the manual is dedicated to explaining how to use the FindBugs Ant task. The problem is the explanation given probably works...but on simple projects with one build file (and probably not many source/class files). Me being the novice I am, I follow the directions given to a tee....ERROR. In the meantime, I'm wondering how I just followed their exact instructions and my build is failing because of it! In doing a little more browsing (and having a brief discussion with my project leader) I found that there were a "few" things that would have to change due to the nature of our project and the way the build fileS are already set up (yes I purposefully made the s on files bold and capitalized - I want to emphasize this because it wound up playing an important part in my confusion :) ). After a valiant effort, I wind up with this output:


findbugs:
     [echo] Analyze the source code with FindBugs
 [findbugs] Executing findbugs from ant task
 [findbugs] Running FindBugs...
 [findbugs] edu.umd.cs.findbugs.NoClassesFoundToAnalyzeException: No classes found to analyze in C:\workspaces\trunkNEW\ConfigurationDashboard\target\classes_robot_src C:\workspaces\trunkNEW\ConfigurationDashboard\target\classes_robot_test C:\workspaces\trunkNEW\ConfigurationDashboard\target\classes_test C:\workspaces\trunkNEW\ConfigurationDashboard\target\classes_src *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\resources.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\rt.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\jsse.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\jce.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\charsets.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\dnsns.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\localedata.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\sunjce_provider.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\sunmscapi.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\sunpkcs11.jar *C:\Dev Tools\FindBugs\findbugs-2.0.1-rc2\lib\annotations.jar *C:\Dev Tools\FindBugs\findbugs-2.0.1-rc2\lib\jsr305.jar
 [findbugs] at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:274)
 [findbugs] at edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:369)
 [findbugs] at edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1300)
 [findbugs] Java Result: 4

Now, I'm not a big stack trace person so this really isn't telling me much of anything besides that FindBugs hates me. I decided the best first step would be to figure out why it's not finding the classes I specified for it to analyze (the top 4 paths). After more investigating, I found out that I wasn't following the right conventions to feed the path into the xml document. The way the build files were setup all the paths were defined and I wrote it incorrectly. It also didn't help that I was rusty on xml (it's been a couple years). After a while, I was able to make more progress...but then uh-ohhh...


findbugs:
     [echo] Analyze the source code with FindBugs
 [findbugs] Executing findbugs from ant task
 [findbugs] Running FindBugs...
 [findbugs] edu.umd.cs.findbugs.NoClassesFoundToAnalyzeException: No classes found to analyze in *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\resources.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\rt.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\jsse.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\jce.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\charsets.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\dnsns.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\localedata.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\sunjce_provider.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\sunmscapi.jar *C:\workspaces\trunkNEW\External\Tools\Java\jdk1.6.0_23\jre\lib\ext\sunpkcs11.jar
*C:\Dev Tools\FindBugs\findbugs-2.0.1-rc2\lib\annotations.jar
*C:\Dev Tools\FindBugs\findbugs-2.0.1-rc2\lib\jsr305.jar
 [findbugs] at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:274)
 [findbugs] at edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:369)
 [findbugs] at edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1300)
 [findbugs] Java Result: 4



Now I gotta figure out what this is about...why is it not finding classes in these paths?..Are they actually not there? Do I have my jar files in the wrong folders? Are some of my paths whacky that I've added/included? So many questions....so few answers. On top of all that, it was doing weird things....I would add a path to my auxClasspath thinking it would take one things away from the list and it would end up taking away something completely different. Finally, I got to the point where nothing was changing and if it did it was changing in the wrong direction. I flagged down my project leader and he decided to make an appointment on our calendars to meet for a couple hours to sit and look at what I've done and hopefully figure out what I've done wrong. After sitting down and staring at the xml for a while, we were able to make some changes that took progress is the RIGHT direction! A lot of it was manual and tedious, but at the end of the day (literally) we were able to get everything running smoothly on all projects!


Now, does anyone want to know the best part?? I'm still not done!! :) - next step, integration into our continuous integration tool, Jenkins! I'll keep updating with the juicy details! :D

Jusqu'à la prochaine fois [[Until next time in French :D ]]...

Monday, June 25, 2012

New Updates (Finally!)

Hello interwebbers!

It has been MUCH too long!! I feel like I haven't updated this thing in years....but the best part about that is now I've got lots of juicy/awesome things to share that I wouldn't have had a couple months ago :)

Let's start with where I am now...for the summer I am working at Truven Health Analytics (formerly known as Thomson Reuters) as a software developer intern. So far, I LOVE it! The best part is definitely the people I get to work with but some of the other awesome noteworthy points include:

  • They use agile processes, something I've been interested in learning more about for a LONG time (like since undergrad) so I'm getting first-hand experience in it! (A sidenote here is that my thesis may involve investigating agile processes -- this I'll talk about a little more later).
  • One of the first assignments I was given (which I've actually been able to contribute to the software since I've been here -- AWESOME) was to work on integrating FindBugs into the build process which is directly related to the research I have been working on with Yoonki (for those of you who have been following my blog you know what I'm speaking of -- any new followers I discuss my research in previous blog posts). 
  • At least once a week there is some sort of free food for breakfast and/or lunch -- who doesn't enjoy free food??
  • Although I am a software developer, I'm still getting to do researchy things (i.e. researching the options for integrating FindBugs into our process).
Although I very much enjoy doing research/writing papers (which I will discuss shortly), I am thoroughly enjoying getting back into programmer mode. I'm getting the opportunity to brush back up on my coding/java before I get started on my own thesis which will eventually lead to coding of a prototype more than likely. Oh how I've missed getting caught up in coding, interpreting stack traces and debugging :) ... It's a little more difficult because I'm working on code that's already been around/worked on but all the more the challenge :D

As far as research goes, for anyone who didn't know I went to Zurich, Switzerland about 2 weeks ago for ICSE 2012. I was invited to participate in the ACM Student Research Competition which was comprised of a first-round poster competition and a second-round oral presentation after which finalists were chosen to go to the Grand Finals. I was chosen to make it to the second round (yay!) however did not place/make it to the Grand Finals :(. Despite this, I am quite pleased with my first international conference presentation. I was even told by a few people that my poster was the best they say in the competition :). Unfortunately, my oral presentation was not as impressive but I was able to get some great feedback from judges and bystanders alike to help improve my odds in future competitions/submissions. I was also able to meet people that were interested enough to want to participate in our user study (once we actually get around to getting it started)! And of course, we can't forget the sight-seeing while in a new country! I took wonderful pictures, all of which can be found here.Overall it was a successful trip filled with networking, fun, and photos :D

On another research note, I am in the process of trying to develop my own thesis for a project. My advisor thought it might be a good idea to go ahead and start thinking about it (initially for a VL/HCC submission but I wasn't able to make that one). Being that I've always been interested in agile development, I would like it to be related to that. And of course I would like to focus on tool development since that's what I've been working on recently/the work that is done in the lab I am in. I thought I had something going, until I spoke to my advisor :). I already knew I had a lot of work ahead of me, but I wasn't able to actually put everything into perspective until I got the feedback from my advisor (where would we be without them??). Now that I have a better idea of the direction I should be going while trying to figure out 'the problem I want to solve', hopefully things will start back going in the right direction leading to a BOMB abstract/research project. 

Continuing the research discussions, Yoonki and I heard back from FSE and found out that our paper was not accepted :(. The biggest problem was (as with my presentation at ICSE) that the results seem inconclusive/incomplete or that more work needs to be done to make the actual results more clear to those reading our work. There were different pointers given from needing a larger participant pool to needing a prototype to validate the results. Although I'm still trying to get the hang of all this, I think I'm making the right kind of progress (which some progress is better than no progress at all I would imagine). I just can't wait to develop the kind of confidence my advisor has in his abilities/ideas/etc. It's a process (as is everything, right) but a process that I think will be well worth it. 

This is getting a bit long and I almost feel like I'm rambling at this point but as things progress with my internship/research I will keep you all posted. Hopefully now that school's out I can be a bit more consistent with my posts...but we'll see :)

Until next time... <3