Hammurapi Java Code Review Tool

  • Uploaded by: muks_varshney
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Hammurapi Java Code Review Tool as PDF for free.

More details

  • Words: 1,113
  • Pages: 22
Hammurapi Java Code Review Tool

Agenda  Hammurapi configuration and setup – Setting up environment variables – Setting up database – Running database server and Jboss

 Running code review through tool  Writing custom rules

2 Company Confidential

Introduction  Hammurapi is an open source Java code review tool  Components of Hammurapi Toolset Mesapotamia, Hammurapi Rules, Hammurapi, Java Inspectors

 Other components with bundle HSQL DB, JBoss

 It comes with LGPL (lesser general public license) – http://www.gnu.org/licenses/why-not-lgpl.html – The choice of license makes a big difference: using the Lesser GPL permits use of the library in proprietary programs; using the ordinary GPL for a library makes it available only for free programs. – *** Please check whether this licensing suites you or not***

3 Company Confidential

How does it work  Mesopotamia parses source files and stores parsed information in the database. Parsed files are represented by Scan object  Hammurapi retrieves Scan from the database and iterates over its Source units and Language elements.  Each object is passed to inspectors' inspect() method with compatible parameters  Inspectors inspect language elements and source units and can post Violations, Warnings or Metrics  Violations, Warnings and Metrics posted by inspectors are collected by Hammurapi and stored to the database  Hammurapi Web application is used to render review results 4 Company Confidential

How does it work- continued… HSQL DB 2. Stores parsed information in to DB (Scan Objects)

1. Parses the source

SRC

Mesapotamia

4. Iterates over source units and language

(Scan Objects, Violations, Warnings & Metrics are stored here) Hammurapi

3. Get scan objects from DB

elements

8. Render review results

7. Store violations, warnings, Metrics in to the DB

Jboss

5. Each Object is passed to Inspector

6. Post violations, warnings, Metrics

Inspector

inspect(XYZ xyz)

5 Company Confidential

(Running Hammurapi web application)

Download

 Download Hammurapi bundle from :http://www.hammurapi.biz/dropbox/hammurapi-bundle-5.3 (For latest stable release you can go to http://www.hammurapi.biz and play around )  Extract downloaded zip file in a directory (for examplec:\hammurapi )  Set environment variable MESOPOTAMIA_HOME to

c:\hammurapi (HOW? Click here)

 If you don’t have Ant already installed, also download Ant from :-http://ant.apache.org/bindownload.cgi  Add its bin folder path (example c:\ant\bin) to path environment variable  Set environment variable JAVA_HOME to JDK folder 6 Company Confidential

Configure databse   

Hammurapi bundle comes with hsql databse to keep its review results Create a folder named db in c:\hammurapi Inside c:\hammurapi\db folder create following three files:##-------runManager.bat---------## start javaw -Xmx800m -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing --driver org.hsqldb.jdbcDriver --url jdbc:hsqldb:hsql://localhost --user mesopotamia ##-------runServer.bat---------## start java -Xmx512m -classpath ..\lib\hsqldb.jar org.hsqldb.Server %1 %2 %3 %4 %5 %6 %7 %8 %9 ##-------server.properties----## server.database.0=file:data/Mesopotamia server.silent=true

7 Company Confidential

Initialize database  Start hsql databse:- Open commandline and go to directory c:\hammurapi\db and then type following command runServer.bat

 Intialize the databse:- Go to c:\hammurapi and type following command java -cp lib\hgcommons.jar;lib\hsqldb.jar;lib\mesopotamia.jar;lib\hgee.jar org.mesopotamia.util.InitDatabase

 To load Java Module:- Type following command:java -cp lib\hgcommons.jar;lib\hsqldb.jar;lib\mesopotamia.jar;lib\mesopotamiajava.jar org.mesopotamia.lang.java.util.InitDatabase 

( To browse the database structure start runManager.bat in db folder )



( Whenever you want to shutdown the server:- Execute SHUTDOWN command to politely bring the server down)

8 Company Confidential

Set path of source code to be reviewed  Go to directory c:\hammurapi and open file build.xml  Change the value of review.src to full path of you source folder to be reviewed. (by default it is set to test)  For example you can set value as c:\myproject\src.  Now second line of build.xml will looklike :<property name="review.src" value="c:/myproject/src"/>

9 Company Confidential

Start the Jboss  JBoss also comes bundled with hammurapi bundle  Make sure you are not running any other service on port 8080 because Jboss will use it. (You can change it if you want and know how to do it )  Go to c:\hammurapi\jboss\bin  Type following command to start the Jboss run

10 Company Confidential

Review the code  Go to c:\hammurapi  Type following command ant

 To see the reports type following in browser:http://localhost:8080/hammurapi

11 Company Confidential

Where is more information  Quick Start Guide is here:-

http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/system/analysis

 User Guide can be downloaded from here:-

http://www.hammurapi.biz/hammurapi-biz/system/fileactions/get/76

12 Company Confidential

Some theory This tool uses rule engine to review the code It comes bundled with commonly used rules New rules can be implemented and configured Adding your new rules requires Java coding only You can validate whether code is adhering to design guidelines or framework standards  Only tool that can be used through any Java IDE and also without IDE  Every time you run review a new version of review result is published so you can compare from previous review how many violations are closed     

Advance

13 Company Confidential

Thank You

Advance Topic

Write your own rules  Don’t write stringObj.equals(“abc”)  Use “abc”.equals(stringObj)  All the method calls are sent to respective inspectors.  We will write an Inspector who will be notified on method calls. This inspector will check whether method called is equals()  Then it will check whether its argument is StringContstant i.e “abc”  If yes then post a volilation. That’s all 16 Company Confidential

Your own custom Inspector class package com.birlasoft.customrules.blrules; import biz.hammurapi.review.Inspector; import org.mesopotamia.SourceUnit; import org.mesopotamia.lang.java.MethodCall; import org.mesopotamia.lang.java.StringConstant; import biz.hammurapi.review.Violation; public class StringComparisionInspector extends Inspector { public void inspect(MethodCall methodCall) { String methodName=methodCall.getName(); if (methodName.equals("equals") && methodCall.getArguments().size()==1 && methodCall.getArguments().get(0) instanceof StringConstant) { post(new Violation(methodCall)); } } }

17 Company Confidential

Inspector configuration File Birlasoft custom inspectors <description>Hammurapi inspectors for Birlasoft Framework biz.hammurapi.rules.KnowledgeMaximizingSet StringComparisionInspector <description>Inspector under development <severity>3

bundled Inspector 18 Company Confidential

Use your custom rule  Put custom rule class after compilation in class path or inside c:\hammurapi\lib as a jar file  Put your inspector.xml in the directory where build.xml is there (c:\hammurapi)  Run the review as mentioned previously

19 Company Confidential

customrule.jar

Inspectors.xml

How to create environment variable  From start menu go to settings>>control panel  Click “system”>>Click “Advance” tab>>click “Environment Variables” button

Go back

20 Company Confidential

Setting JAVA_HOME  Click on New button for user variables  You will get following dialog box to add a variable

Go back

21 Company Confidential

Getting report offline  Download wget for windows ( http://users.ugent.be/~bpuype/wget/#download)

You need

wget.exe  Put wget.exe in a folder and navigate to that folder from a command line (go to c:\wget for example)  Now type following command:wget -mrkE http://localhost:8080/hammurapi/report.jsp?ID=XX

Here XX is your report ID in hammurapi report for example 15  You will have all the files in a folder inside wget folder you created.

22 Company Confidential

Related Documents