Skip to content

How to ensure code quality?

June 25, 2008 by Przemysław Bielicki

I'm co-developing big Java project that does what it should do but lacks the style and conventions. The code is hard to read, understand and maintain - and it is Java! I'd like to write what I discovered in the code, project configuration and what are my recommendations on ensuring high(er) code quality.

In my previous post I mentioned tool called FindBugs that finds common Java problems that can occur during runtime and will be difficult to find and debug. One of the comments to this post opened my eyes to what I'm doing currently and how I can fix current status quo. And the comment was about PMD tool.

PMD
There is a tool called PMD which scans Java source code and looks for potential problems like: Possible bugs, Dead code, Suboptimal code, Overcomplicated expressions, Duplicate code.
PMD is configured in the project I currently contribute to but I was somewhat shocked that although the code is totally, absolutely crappy PMD doesn't show any problems. Hmmmmmmm. I was shortsighted because I didn't see the fragment invented probably by some kind of "genius":

  1. public class ... extends ... { // NOPMD

Well, the fragment in question is // NOPMD which tells PMD: "Don't check this class". It's not funny!
Fortunately this was not the case for most of the classes. Nevertheless I still didn't know why my PMD plugin is not alarming me about the problems. I checked whether it is enabled for my current project in Eclipse IDE. Voila! It was not! The guy who helped me configuring the project disabled it and when I asked why he said that if I enable it I will be probably unable to compile the project. It's really not funny :) Or.... is it?
Anyway - he was right! When I enabled the PMD for the project I was really unable to compile it...

No comments!

PMD problems
I've never used PMD before and I think that was a good choice. Why? I enabled it for some classes I worked on to see why people disable it - I hoped to find some clues. I didn't wait long - actually I didn't wait at all. Consider this snippet (class' method - context is unimportant):

  1. String value = (String) entry.getValue();

What warning could you get for this piece of code? I got this one: Local variable 'value' could be declared final. WTF?! OK - I added final keyword before value variable declaration to see what will happen. #$%&@! - I got another warning: Avoid using final local variables, turn them into fields. So, should I declare my local variables as final or not?!
Who configured this PMD? Or is it default configuration? I don't care - with such warnings I really understand people who simply disable this tool - it's insane!

Of course, everything is a matter of configuration but I'm already pissed off with PMD as a Eclipse plugin and am not going to use it anymore. On the other hand I'm always using PMD as a Maven2 plugin and it works fine - I used to get quite reasonable comments there (I'm not getting them anymore because they are already fixed ;)

Checkstyle
I've never used PMD before but I used Checkstyle instead (currently I'm using version 4.4.1). I was always very satisfied with this tool and it helped me keep many projects nice and clean (yep - I was the fascist in many projects kicking asses of other developers if they were writing ugly code :). I always used Checkstyle as a Eclipse plugin but recently I've also started generating Checkstyle Maven2 reports for our mavenized projects.
I'm attaching two XML files (I had to change their extensions to .txt) with Checkstyle configuration. One is for ordinary Java source files and the second one is more "liberal" for test classes. I worked on this configuration with couple of my colleagues from my previous company and we really think it's the best you can get from Checkstyle (however de gustibus non est disputandum).
When you incorporate Checkstyle configuration in question in your projects be sure that your code will be beautiful - it can still do nothing ;) but at least it will be well formatted and structured.

Recommendation
My very private recommendation and advice is to use.... both tools because they are complementary. Checkstyle only ensures the style of your Java code is standardized and "nice". It checks white spaces, new lines, formatting, etc. (i.e. it looks on the code line by line). On the other hand there is PMD which not necessarily checks the style of your code but it checks the structure of the whole code i.e. it looks on the code from the "higher altitude".
I would advise using Checkstyle as an Eclipse IDE as well as Maven2 plugin and PMD only as Maven2 plugin. In addition I would also advise using FindBugs as an Eclipse IDE plugin but I mentioned it already in the previous post.

Tools like PMD and Checkstyle will not ensure your code does what it should do (not even 0.1%) but they will help your team produce well structured quality code that will be much more easily understandable than before. Ensuring one code convention in your organization (whatever it will be) is always a good thing to do. And tools like PMD and Checkstyle help you make it agile way i.e. fully automated.
Belive me or not but in other companies I was able even to teach real Java-beginners how Java code should look like without spending with them any single minute. And they were producing pretty good Java code from day one. I was amazed!

PS. I'm using Eclipse 3.3.x IDE and some of the problems I encountered can be dead-issues on other IDEs.

AttachmentSize
Checkstyle configuration for regular Java sources6.32 KB
Checkstyle configuration for test Java sources6.19 KB

About the Author: Przemysław graduated from Gdańsk University of Technology in 2004 having specialized in Distributed Information Systems. He worked in Lufthansa Systems, Intel Corporation in the past where he developed complex IT solutions in many Java-related technologies. In professional life he is a real Java expert holding couple of Sun Java certificates (Programmer, Developer, Web Developer) and Certified Scrum Master, of course.

Przemysław is a regular contributor to AgileSoftwareDevelopment.com and the author of "From Java to Java EE" blog. He now works as a Software Craftsman in an international company that is the leading Global Distribution System (GDS) and the biggest processor of travel bookings in the world. Contact Przemysław

Comments

CheckStyle isn't just about style

June 26, 2008 by Anonymous (not verified), 6 years 25 weeks ago
Comment id: 1618

You've been misled by the name ... CheckStyle may have begun as purely a style checker, but since under the hood it has antlr2 and a decent java grammar, it's able to do much more, most everything PMD can do, and can be extended for your own checks.

For example:

CheckStyle isn't just about style

June 26, 2008 by pbielicki, 6 years 25 weeks ago
Comment id: 1619

Yes - you're right about that what Checkstyle can do. And I'm not mislead by the name :) Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard. Style or coding standard/convention is pretty much the same for me.

Anyway I didn't write that Checkstyle is better or worse than PMD. I don't want to compare these tools - I just recommend to use them both.

Checkstyle and Eclipse Formatter

November 15, 2008 by Anonymous (not verified), 6 years 5 weeks ago
Comment id: 1998

Hi,

First of all, thanks for the awesome article. I have tried CheckStyle sometime back with Eclipse, and I believe it would be better if it is possible to configure the Eclipse Code Formatter with a profile which would match the checkstyle configuration. I googled about this, but couldn't find any formatter profile for this purpose. How do you guys handle this? Do you use Eclipse formatter ? If so, have you created a formatter profile manually ?.

Specially, this becomes a problem when adding checkstyle to existing code bases. If there's an eclipse formatter profile, it is much easier to re-format existing code to match with checkstyle.

Thanks again.

Hi, I totally agree with you

November 15, 2008 by pbielicki, 6 years 5 weeks ago
Comment id: 1999

Hi,

I totally agree with you but unfortunately I don't know how to do this. On the bright side I will tell you that it has never been an issue for me. Remember that you should have only ONE checkstyle (CS) configuration in your company and you could configure Eclipse Formatter (EF) accordingly (you may also share EF configuration globally in your organization).
It's true that EF sometimes screws up the code but I can assure you that even in big projects with hundreds (or thousands) of Java classes when you format all the code using EF you will have little work to do to make it compliant with CS rules. As far as I remember there is only one or maybe two discrepancies between CS and EF that cannot be configured. All the other stuff is easily changeable in the EF preferences page and you can share your configuration in all your projects.

And one more advice regarding EF - don't format the whole class - you may hurt yourself. You should format only a selected fragment(s) of code (and to be honest I format my Java code manually quite often because EF can make it unintelligible). So, if you format the whole Java class you will damage what somebody else was working on for quite a while.

I hope it helps.
Cheers!

Hi DmitryNo argument from me

May 23, 2012 by JennyH8198 (not verified), 2 years 30 weeks ago
Comment id: 22493

Hi Dmitry
No argument from me at all. In Succeeding with Agile (p. 86) I say that picking the right team is the most important factor. Here. I was just addressing a question I was asked of which types of project is most suited for an agile approach. numéro rio

3C Plots

October 26, 2012 by 3C Lotus City (not verified), 2 years 8 weeks ago
Comment id: 24283

The 3C Company launch a new residential project 3C Lotus City Noida at Yamuna expressway get the best deal Call+91-9910007460 PropWorld 3c lotus city is 100 Acres Township 3c lotus city plots is very close to formula 1 racing track, night safari and gautam budh university.

Strangers With Candy Icons

December 10, 2012 by imoactsott.cim (not verified), 2 years 1 week ago
Comment id: 24901

By WebOsPublisher

Merging and Unmerging Cells and macros to help with merging cells based
on selections by rows,by columns,by groups
Merge and Unmerge Cells
Merge and Unmerge Cells
Location: mvps.org/dmcritchie/excel/merge.htm
Code: mvps.org/dmcritchie/excel/code/merge.txt
Home page: mvps.org/dmcritchie/excel/excel.htm
without Frames]
Copyright (C)1997 - 2002 F. David McRitchie
Introduction (#intro)
Merging several columns of cell in rows is frequently necessary to
design a spreadsheet form. The following macros are designed
to help merge and unmerge cells in a selection. The major
macro of importance would be MergeRxR below
and UnMergeSelected. Merging
here is referring to the cell container itself not the text within.
During the testing of these
macros some interesting observations were made on how cells are
colored if you chose a column and color it -- the merged cells are
not included in a column selection unless all cells in the merge
are selected.
Another observation, if you are merging cells you will want to use
cell borders (format, cells, borders), but if you unmerge cells you
will lose the border in the newly revealed separations.
Merge Macros (#macros)
The major macro here is MergeRxR which will
merge the cells for each selected area, but with a twist.
A normal cell merge would merge cells for rows and columns.
Code has been added to process each row within a selection
as if an additional selection. This will make the
selection process a lot faster as you need not worry about making
separate selections for each row.
MergeRxR_Join is a variation of MergeRxR that
will JOIN the contents
of the cells to be merged before merging.
MergeCxC is a variation of MergeRxR that merges
within the columns in the selected areas.
The macro UnMergeSelected.
is simply a macro for format, cells, alignment (tab), Merge cells
The macro SetUpG20 is simply a quick setup for MarkCells
on the join.htm page.
This page contains some VBA macros. If you need assistance to install
or to use a macro please refer to Getting
Started with Macros. For more depth see
Install a Macro or User Defined Function
on my Formula page.Speed and efficiency considerations can be seen in
Proper, and other Text changes and in
Slow Response.
Merge Example (#example)
Color has been included to show selection of separate ranges.
The middle table shows the results of using MergeRxR macro so that
columns and not rows are merged. The table on right shows
the results of a standard Format, Cells, Alignment (tab), Merge Cells
ABCDEF
1A1-1
B1-1C1-1
D1-1E1-1
F1-1
2A2B2C2D2
E2F2
3A3B3C3D3
E3F3
4A4-2
B4-2C4-3
D4-3E4-4
F4-4
5A5B5C5D5
E5F5
6A6B6-5
C6-5D6-6
E6-7F6-7
7A7B7C7
D7-6E7-7
F7-7
8A8-8
B8-8C8D8-6
E8F8
9A9-8
B9-8C9D9-6
E9-9F9-9
10A10-8
B10-8C10D10-6
E10-9F10-9
ABCDEF
1A1-1
2A2B2C2D2
E2F2
3A3B3C3D3
E3F3
4A4-2
C4-3
E4-4
5A5B5C5D5
E5F5
6A6
B6-5D6-6
E6-7
7A7B7C7
D7-6E7-7
8A8-8
C8D8-6E8F8
9A9-8
C9D9-6
E9-9
10A10-8
C10D10-6
E10-9
ABCDEF
1A1-1
2A2B2C2D2
E2F2
3A3B3C3D3
E3F3
4A4-2
C4-3
E4-4
5A5B5C5D5
E5F5
6A6
B6-5
D6-6
E6-7
7A7B7C7
8
A8-8C8E8
F8
9C9
E9-9
10C10
Merge Macros - Code (#code)
The macros code for the macros on this page can be found at
mvps.org/dmcritchie/excel/code/merge.txt
This page contains some VBA
macros. If you need assistance to install or to use a macro please
refer to my GetStarted page for
simpler instructions, or to my
GetFormula page
for more extensive information on macros.
The icon Merge Across is similar to the macro MergeRxR, but MergeRxR will
work with multiple selections which may make setting up a lot easier.
Option Explicit
'David McRitchie, mvps.org/dmcritchie/code/merge.txt 2002-05-31
Sub MergeRxR()
'-- Merge cells in multiple selected areas Row by Row ---
' limited to the usedrange (Ctrl+End)
' D.McRitchie, 2002-05-31 in merge.htm
Dim rng As Range
Dim rw As Range, ix As Long
Set rng = Intersect(Selection, ActiveSheet.UsedRange)
If rng Is Nothing Then
MsgBox "nothing in usedrange to be merged"
GoTo done
End If
Dim i As Long, j As Long
For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Rows.Count
Application.DisplayAlerts = False
Selection.Areas(i).Rows(j).MergeCells = True
Application.DisplayAlerts = True
Next
Next
done:
End Sub
Sub MergeRxR_Join()
'-- Merge cells in multiple selected areas Row by Row ---
' limited to the usedrange (Ctrl+End)
' JOIN contents of cells before merging
' D.McRitchie, 2002-05-31 in merge.htm
Dim Str As String, ii As Long
Str = ""
Dim rng As Range
Dim rw As Range, ix As Long
Set rng = Intersect(Selection, ActiveSheet.UsedRange)
If rng Is Nothing Then
MsgBox "nothing in usedrange to be merged"
GoTo done
End If
Dim i As Long, j As Long
For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Rows.Count
Application.DisplayAlerts = False
Str = "" '... concatenate cells for this row in selection
For ii = 1 To Selection.Areas(i).Rows(j).Columns.Count
Str = Str & " " & Selection.Areas(i).Rows(j).Columns(ii)
Next ii
Str = Mid(Str, 2)
Selection.Areas(i).Rows(j)(1) = Str
Selection.Areas(i).Rows(j).MergeCells = True
Application.DisplayAlerts = True
Next
Next
done:
End Sub
Sub MergeCxC()
'-- Merge cells in multiple selected areas Column by Column ---
' limited to the usedrange (Ctrl+End)
' D.McRitchie, 2002-05-31 in merge.htm
Dim rng As Range
Dim rw As Range, ix As Long
Set rng = Intersect(Selection, ActiveSheet.UsedRange)
If rng Is Nothing Then
MsgBox "nothing in usedrange to be merged"
GoTo done
End If
Dim i As Long, j As Long
For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Columns.Count
Application.DisplayAlerts = False
Selection.Areas(i).Columns(j).MergeCells = True
Application.DisplayAlerts = True
Next
Next
done:
End Sub
Sub UnMergeSelected()
'-- same as format, cells, alignment (tab), (turn off) Merge Cells
Selection.MergeCells = False
End Sub
Sub SetupG20()
Cells.MergeCells = False
Range("A1:G20").Select
Application.Run "personal.xls!MarkCells" 'see join.htm
End Sub
Additional comments on MergeRxR macro (#mergeRxR)
The used range is cell A1 through the last cell (Ctrl+End).
The used range can be identified as select A1 then extend with CTRL+SHIFT+END.
If you start with an empty sheet there is nothing in the used range.
This macro checks that the active cell is within the Used Range.
Forget the macro for a moment. You merge cells vertically the same
as merging horizontally. You can do both at the same time.
In Excel 2000 at least, if you select multiple areas with the help
of Ctrl each selection in the multiple selections will be processed
separately when you merge cells
Format, cells, Alignment (tab), Merge Cells
If merge cells is greyed out, it means there is a mixture of
merged and unmerged cells, just hit it twice.
If merge D2:F40 you will get one big block of merged cells.
But if you wanted D2:F2, D3:F3, D4:F4, etc. to be merged
independently you could select those ranges independently
with help of Ctrl and then do your merge with the menus.
The macro MergeRxR (Merge Row by Row) is designed to
process merge cells in each selection per row, which is
what most forms would need.
MergeEmpty_A (#mergeempty_A)
Sub MergeEmpty_A()
'David McRitchie, 2004-05-27, programming
With Cells
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
End With
On Error GoTo done
Cells(Rows.Count, 2).End(xlUp).Activate
ActiveCell.Offset(0, -1).Activate
backthere:
Range(ActiveCell.Address, _
ActiveCell.End(xlUp).Address).Select
Selection.Merge
ActiveCell.Offset(-1, 0).Activate
GoTo backthere
done:
End Sub
A1B1C1D1
B2C2D2
B3C3D3
B4C4D4
A5B5C5D5
B6C6D6
B7C7D7
B8C8D8
B9C9D9
A10B10C10D10
B11C11D11
B12C12D12
A1B1C1D1
B2C2D2
B3C3D3
B4C4D4
A5B5C5D5
B6C6D6
B7C7D7
B8C8D8
B9C9D9
A10B10C10D10
B11C11D11
B12C12D12
Merge icons (#builtin)
Formatting icons (manually: Format, cells, alignment, horizontal and merge options)
-- Merge and Center -- customize, commands, format
-- Merge Across -- customize, commands, format
-- Merge Cells -- customize, commands, format
-- Unmerge Cells -- customize, commands, format
Merging of cells interfers with sorting, filtering, copying,
and pasting along with interferring with autofit of
row height and column widths (see "Center Across Selection" below and Related Area).
Problems with Merged Cells (#problems)
Can't sort merged cells
Realigning row height can be a problem. (see Jim Rech's solution in Related Area).
Alternatives to Merging Cells (#alternatives)
"Center Across Selection" (button was dropped in Excel 2000) available via
Format, cells, alignment, horizontal: Center Across Selection without the Merge option
is applied row by row on a selection and does not merge a block of cells.
On the other hand, "Merge and Center" (same button as was dropped from Excel 2000)
is a merge operation and will merge an entire block of cells into one entity
and does interfere with sorting etc.
Adjusting column widths may be an altertive to merged cells to avoid
"This operation requires the merged cells to be identically sized."
There are no builtin shortcut keys for merge/unmerge.
Related (#related)
The macros on this page are based on
my posting
of 2002-05-31 in misc.
Color Palette, the 56 palette colors in Excel
Rearranging Data in Columns contains macros
MarkCells and
MarkSepAreas
of interest in testing merging/unmerging columns. In fact
code form MarkSepAreas was used to help with MergeRxR described on this page.
Both Markcells and
MarkSepAreas were used for the
Example illustrations.
Row Height Adjustments for Merged Cells, Automatic", Jim Rech, programming, 1999/04/02
Text joining, separation, and reformatting with adjacent cells content, SepTerm
separates words after 1st word into cell to the right. SepLastTerm
separates the last word into the cell to the right. Not to be confused with merging and unmerging
cell borders (containers).
Sorting merged cells:
group:*excel* sort merged cells
Wrapping, not working with Merged Cells, AutoFitMergedCellRowHeight macro, Jim Rech, reposted 2002-08-09. Problems with automatic adjustment of row height involving cells with wrapped text when there are merged cells present, originally posted 1999-04-02.
2003-10-01
This page was introduced on May 31, 2002.
Excel Pages -- home]
to my site and the off-site pages I reference]
Search -- Excel]
Back]
to TOP]
Please send your comments concerning this web page to: David McRitchie
send email comments
Copyright © 1997 - 2004, F. David McRitchie, All Rights Reserved

And one more advice regarding

January 15, 2013 by Anonymous (not verified), 1 year 48 weeks ago
Comment id: 25445

And one more advice regarding EF - don't format the whole class - you may hurt yourself. You should format only a selected fragment(s) of code (and to be honest I format my Java code manually quite often because EF can make it unintelligible). So, if you format the whole Java class you will damage what somebody else was working on for quite a while.
katalog stron
suknie ślubne
katalog stron
suknie ślubne
http://www.e-zwd.pl
http://www.e-zawady.pl

I must admit that you are

September 18, 2013 by Anonymous (not verified), 1 year 13 weeks ago
Comment id: 29324

I must admit that you are well versed in what to write. I, too, java programmer. We are now writing the engine
onlinegokken. Now a lot of work.

mostafa

December 6, 2013 by شات (not verified), 1 year 2 weeks ago
Comment id: 30372

Appreciate this one, you are

December 11, 2013 by jamsin (not verified), 1 year 1 week ago
Comment id: 30595

Appreciate this one, you are a great author. It's really written in depth analysis and have urged visitors to look forward more on your writing vacances a l'ile maurice

Here piece relating to Cheyne

February 6, 2014 by jassica john (not verified), 45 weeks 4 days ago
Comment id: 31014

Here piece relating to Cheyne Capital is now being published with regard to our normal effort to make sure you track hedge funds on the markets. To analyze other hedge cash research remarks please watch our Hedge Cash Tracker Product. stonebridgecapital.net

I am really thankful this

February 6, 2014 by Anonymous (not verified), 45 weeks 4 days ago
Comment id: 31015

I am really thankful this website and the proving the great information and the using the very great technology. These blocks provide the information very help to the customers. I am very impressed for this information. www.rebelmouse.com | www.rebelmouse.com

This is the very good idea!

February 6, 2014 by Anonymous (not verified), 45 weeks 4 days ago
Comment id: 31016

This is the very good idea! Just want to say thank you for information, Just continue to the write such a position. I will be your faithful reader. Thank you again. www.rebelmouse.com | www.rebelmouse.com

Thanks for posting this

February 6, 2014 by Anonymous (not verified), 45 weeks 4 days ago
Comment id: 31017

Thanks for posting this informative article. This is a good read for me. I am going to email this to my buddies. Thanks for posting this informative article which I have been searching some days. www.rebelmouse.com | www.rebelmouse.com | www.rebelmouse.com

Hi, I am very thankful too

February 11, 2014 by Anonymous (not verified), 44 weeks 5 days ago
Comment id: 31087

Hi, I am very thankful too you for this sharing..It is very useful for my writing project I get enough information for my writing..!!! www.rebelmouse.com | www.rebelmouse.com | www.rebelmouse.com

This bus adventure seem to be

February 26, 2014 by Anonymous (not verified), 42 weeks 4 days ago
Comment id: 31475

This bus adventure seem to be relevant and interesting one. I think if there is touch of adventure in the bus tour then nothing can stop the rip to be exceptional one.
http://etnisjawa.blogspot.com/2014/01/agen-texas-online-indonesia-terpercaya.html
Agen Texas Online Indonesia Terpercaya
Alfamart official partner merchandise FIFA piala dunia Brazil 2014
Cipto Junaedy

bulk sms Build apps that send

March 20, 2014 by mariya (not verified), 39 weeks 3 days ago
Comment id: 32238

bulk sms
Build apps that send and receive SMS using your brand name or long code. Tell customers their packages are delivered or alert employees that a shift is ready. Send Mobile Marketing text messages to optin customers. The API enables users to communicate with your app and get them what they need.

A good blog always comes-up

March 20, 2014 by willy20femina (not verified), 39 weeks 3 days ago
Comment id: 32239

This is a nice web.. im so enjoying reading ni here.. I hope everybody love this site because all the post is so informative for me, every post is make me sure the writer is so good
öpüşme oyunları

customizable iphone 5c cases

April 7, 2014 by iphone5c cases (not verified), 37 weeks 12 hours ago
Comment id: 32413

1,700,000+ customizable iPhone cases & covers from Zazzle - Choose your favorite design from a variety of cases for the iPhone 5, 4 or 3.

iphone 5c cases

great

April 16, 2014 by Marta (not verified), 35 weeks 5 days ago
Comment id: 32633

I just wanna thank you for sharing your information and your site or blog this is simple but nice article I’ve ever seen i like it i learn something today. online colleges

I am very happy visit your

April 22, 2014 by Anonymous (not verified), 34 weeks 6 days ago
Comment id: 32723

I am very happy visit your site....it is great quality post thanks for sharing keep posting such quality content. www.rebelmouse.com | www.rebelmouse.com

customizable iphone 5c cases

April 30, 2014 by iphone 5c cases (not verified), 33 weeks 4 days ago
Comment id: 32859

Thanks for sharing. The article has really peaks my interest. I am going to bookmark your site and keep checking for new information.

boyfriend watch

obd2works supply professional

May 4, 2014 by Anonymous (not verified), 33 weeks 1 day ago
Comment id: 32968

obd2works supply professional Car Truck Diagnostic Tool,LAUNCH Diagnostic Tool, ECU Chip Tunning, Auto Key Programmer, Auto Locksmith Tool and Automotive Electrics OBD2 Code Reader,Car Diagnostic Tool, Wholesale, car obd2 diagnostic tool,search "obd2works" on google you'll find our shop
Key Fob Programming

ECU Tuning Software

Immo Emulator

Car Key Chips

GM MDI

Airbag Reset Tool

OBD2 Scanners

kizi2

May 11, 2014 by kizi2 (not verified), 32 weeks 21 hours ago
Comment id: 33119

Build apps that send and receive SMS using your brand name or long code.

I like

May 12, 2014 by Friv (not verified), 32 weeks 9 hours ago
Comment id: 33220

thank for

You may have not intended to

June 10, 2014 by Anonymous (not verified), 27 weeks 6 days ago
Comment id: 33389

You may have not intended to do so, but I think you have managed to express the state of mind that a lot of people are in. The sense of wanting to help, but not knowing how or where, is something a lot of us are going through. on www.rebelmouse.com

thanks

June 24, 2014 by Kizi 100 (not verified), 25 weeks 6 days ago
Comment id: 33715

Excellent Blog!Friv 10
Friv

Thank you for this post.

June 30, 2014 by Anonymous (not verified), 25 weeks 6 hours ago
Comment id: 33808

Thank you for this post. That's all I are able to say. You most absolutely have built this blog website into something special. You clearly know what you are working on, you've insured so many corners.thanks. Total Wellness Cleanse

The graphs are very

June 30, 2014 by Anonymous (not verified), 25 weeks 6 hours ago
Comment id: 33809

The graphs are very impressive. These clearly illustrate the subject matter. Such kind of graphs is suitable for any research paper or study. Good job! Customized Fat Loss

Those guidelines additionally

June 30, 2014 by Anonymous (not verified), 25 weeks 6 hours ago
Comment id: 33810

Those guidelines additionally worked to become a good way to recognize that other people online have the identical fervor like mine to grasp great deal more around this condition. MI40

very good

July 7, 2014 by hoangha (not verified), 24 weeks 2 hours ago
Comment id: 33930

Many thanks for sharing this, I will share with you their references.
Friv 10000

I really liked your blog very

September 13, 2014 by Nina (not verified), 14 weeks 1 day ago
Comment id: 35023

I really liked your blog very much. It was really great to visit here. I found many interesting things. http://whatmensecretlywantbookbauer.blogspot.gr/

Hi there, I found your blog

September 16, 2014 by Gregory3910 (not verified), 13 weeks 5 days ago
Comment id: 35077

Hi there, I found your blog via Google while searching for such kinda informative post and your post looks very interesting for me. https://archive.org/details/ZetaclearReviews

hello friend

September 20, 2014 by Anonymous (not verified), 13 weeks 2 days ago
Comment id: 35151

Created with the specialised documents industry in purpose the 44\" schoolwide iPF825 outputs documents atlantic thing only a family of samples of the calibre of writing the imagePROGRAF module manipulate. if you need the driver printer, you can check at Canon imageprograf ipf825 Driver download
Aesthetically, real slight is completely diverse from incompatible Epson dedicated danger printers; it\'s monovular bucket-and-handle communication of the PictureMate if you need the driver printer, you can check at epson picturemate pm235 driver download
Naturally, it cannot stop a candela to the One\'s indulgent name and 4.7in, 1080p guide, object for a sub-£200 sound the give 500 is uncommonly glorious. Its shiny discolor plastic phrase is around off nicely by a color dirty take that surrounds the force and seamlessly encompasses the honor buttons on the right-hand urgency. if you need the gadgets info, you can check at htc desire 500 review specifications
Using deain groundwork of 1 of the most favourite Mitsubishi SUV beginning referred to as GG - PHEV , the most recent procreation Pajero was present to circularise the populate runway high-powered hit - in organism if you need the last info about car automotive, you can check at Mitsubishi gg phev pajero review
bilang untuk memasang iklan Adsense di diary, kita harus mendaftar adsensenya dari Blogger, tidak bisa dari youtube lagi if you need the last info update about technology, you can check at pengenalan google adsense echo kita
PIXMA MG7570 picture the PIXMA bit & Photo fulfil with NFC susceptibility, which suggests users don't got to control urbane meshwork settings. Users can turn documents or... if you need more info about geophysics, you can check at Rahmat Punya Driver Printer Download

very interesting

October 6, 2014 by quan nguyen (not verified), 11 weeks 3 hours ago
Comment id: 35457

nice article really attracted me here. I will visit this blog often. Thank you for sharing this information to us. thank you very much
Vé máy bay đi Nha Trang.vé máy bay giá rẻ sài gòn hà nội.Vé máy bay đi sài gòn.Vé máy bay đi Huế

Build apps that send and

October 22, 2014 by assad (not verified), 8 weeks 4 days ago
Comment id: 36215

Build apps that send and receive SMS using your brand name or long code. Tell customers their packages are delivered or alert employees that a shift is ready. Send Mobile Marketing text messages to optin customers. The API enables users to communicate with your app and get them what they need.
Agen Texas dan Domino Online Indonesia Terpercaya | 855online.com AGEN BOLA SBOBET IBCBET CASINO 338A TANGKAS TOGEL ONLINE INDONESIA TERPERCAYA | Agen Ibcbet | SBOBET | Agen Bola | SBOBET | Taruhan Bola

Jasa SEO Indonesia

It informative article,

October 31, 2014 by Dr. Kenneth Pullman (not verified), 7 weeks 2 days ago
Comment id: 36653

It informative article, thanks for your contribution over the net

Gym mats

November 10, 2014 by Jhonny (not verified), 6 weeks 4 hours ago
Comment id: 37008

I found this post very exciting. I think you will have any other post on this topic? I am also sending it to my friend to enjoy your working style.
gym mats

What a great website, you

November 10, 2014 by Jameslarsan (not verified), 6 weeks 4 hours ago
Comment id: 37011

What a great website, you have shared here. You did work very well. Keep it up.
Get online anti fatigue mat from us

Nice

November 11, 2014 by Anonymous (not verified), 5 weeks 6 days ago
Comment id: 37057

Nice post guys. This is really nice post . I appreciate your article. gymmatsco.co.uk

Awesome. Your post is really

November 11, 2014 by harry123 (not verified), 5 weeks 6 days ago
Comment id: 37058

Awesome. Your post is really nice and i appreciate your post. Thanks a lot for share me this nice post. One Click

Thank you very much for the

November 11, 2014 by Steve (not verified), 5 weeks 6 days ago
Comment id: 37061

Thank you very much for the article. You had made for writing this good article.

heavy duty rubber gym mats in affordable price form here

I simply want to tell you

November 13, 2014 by harry (not verified), 5 weeks 4 days ago
Comment id: 37096

I simply want to tell you that I am new to weblog and definitely liked this blog site. Very likely I’m going to bookmark your blog . I want to say that you have done a great job. used diesel generators

Very nice

November 14, 2014 by Harry smith (not verified), 5 weeks 3 days ago
Comment id: 37129

I am happy to see your post after a long time . Keep it up guys and share with me more post in post. . . Thanks a lot for share this post. . . .gymnasticmatsuk.co.uk

Thanks

November 14, 2014 by Anonymous (not verified), 5 weeks 3 days ago
Comment id: 37130

Awesome post. after a long time i have read excellent post. keep it up and thank you so much for sharing. You have shared very useful article. I fond this website very useful. Thanks for sharing interesting information. groundreinforcementmeshuk.co.uk

Your post is really nice but

November 17, 2014 by Anonymous (not verified), 5 weeks 15 min ago
Comment id: 37182

Your post is really nice but give us different ideas . Thanks a lot for sharing this post. Keep posting guys... Rubberflooringsupplier.co.uk

Your working style is really

November 17, 2014 by Anonymous (not verified), 5 weeks 13 min ago
Comment id: 37184

Your working style is really appreciable. Keep it up guys and share me more post in future. Thanks a lot for sharing this post...... gymmatsco.co.uk

www.rebelmouse.com Excellent

November 19, 2014 by Anonymous (not verified), 4 weeks 5 days ago
Comment id: 37259

www.rebelmouse.com Excellent article! Really appreciate that you published this information. Keep the work going. www.rebelmouse.com

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.

Best of AgileSoftwareDevelopment.com