Refactor checkers
diff --git a/plugins/org.polarsys.chess.checkers/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.checkers/META-INF/MANIFEST.MF
index d0651ae..2b9f476 100644
--- a/plugins/org.polarsys.chess.checkers/META-INF/MANIFEST.MF
+++ b/plugins/org.polarsys.chess.checkers/META-INF/MANIFEST.MF
@@ -23,7 +23,8 @@
  org.eclipse.gmf.runtime.common.ui.services,
  org.eclipse.papyrus.views.modelexplorer,
  org.polarsys.chess.contracts.profile,
- org.eclipse.emf.common
+ org.eclipse.emf.common,
+ org.eclipse.xtext
 Export-Package: org.polarsys.chess.checkers,
  org.polarsys.chess.checkers.core.checkerManager,
  org.polarsys.chess.checkers.core.impl
diff --git a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/impl/NameDistance.java b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/impl/NameDistance.java
index 0516012..94da2ab 100644
--- a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/impl/NameDistance.java
+++ b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/impl/NameDistance.java
@@ -9,6 +9,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
 import org.polarsys.chess.checkers.core.checkerManager.Checker;
 import org.polarsys.chess.checkers.core.checkerManager.CheckerMessage;
 import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
@@ -136,12 +137,7 @@
 	 * @return a list of warnings
 	 */
 	private List<CheckerMessage> processElements(EList<NamedElement> elements) {
-		List<CheckerMessage> warnings = new ArrayList<CheckerMessage>();
-
-//		int k = 0;
-//		for (NamedElement element : elements) {
-//			System.out.println(k++ + ": " + element.getName());
-//		}
+		List<CheckerMessage> messages = new ArrayList<CheckerMessage>();
 
 		for (int i = 0; i < elements.size(); i++) {
 			final NamedElement first = elements.get(i);
@@ -158,7 +154,7 @@
 
 				if (distance == 0) {
 					final String msg = equalsMsg(first, second);
-					warnings.add(new CheckerMessage(msg, 2, first, unifiedName));
+					messages.add(createMessage(msg, 2, first, unifiedName));
 				}
 				if (distance <= threshold) {
 					similarNames.add(second.getName());
@@ -168,10 +164,10 @@
 			// If some similarities are found, store the entry in the warnings
 			if (similarNames.size() > 0) {
 				final String msg = similarMsg(first, similarNames);
-				warnings.add(new CheckerMessage(msg, 1, first, unifiedName));
+				messages.add(createMessage(msg, 1, first, unifiedName));
 			}
 		}
-		return warnings;
+		return messages;
 	}
 	
 	protected String equalsMsg(NamedElement first, NamedElement second) {
@@ -255,11 +251,12 @@
 		return cost[len0 - 1];
 	}
 
+	protected CheckerMessage createMessage(String msg, int severity, EObject element, String unifiedName) {
+		return new CheckerMessage(msg, severity, element, unifiedName);
+	}
+	
 	@Override
 	public void init() throws Exception {
 		systemViewPackage = EntityUtil.getInstance().getCurrentSystemView();
-		
-		//TODO: aprire esattamente il progetto corretto, dove sono quando lancio il check? Devo essere su un progetto,
-		// e quello viene analizzato
 	}
 }
diff --git a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/impl/StateStatus.java b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/impl/StateStatus.java
index 61adb2d..5cfb952 100644
--- a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/impl/StateStatus.java
+++ b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/impl/StateStatus.java
@@ -9,6 +9,7 @@
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.uml2.uml.Class;
 import org.eclipse.uml2.uml.Package;
 import org.eclipse.uml2.uml.Region;
@@ -19,6 +20,13 @@
 import org.polarsys.chess.checkers.core.checkerManager.CheckerMessage;
 import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
 
+/**
+ * Two checkers that detect unreachable states and states without transitions to other 
+ * states, inside a StateMachine.
+ * 
+ * @author cristofo
+ *
+ */
 public class StateStatus extends Checker {
 	private Package systemViewPackage;
 	private static final Logger logger = Logger.getLogger(StateStatus.class);
@@ -120,7 +128,7 @@
 				}
 				if (dead) {
 					final String msg = deadMsg(state, block);
-					errors.add(new CheckerMessage(msg, 2, state, unifiedName));
+					errors.add(createMessage(msg, 2, state, unifiedName));
 
 					deadStates.add(state.getName());
 				}
@@ -171,7 +179,7 @@
 				}
 				if (unreachable) {
 					final String msg = unreachableMsg(state, block);
-					errors.add(new CheckerMessage(msg, 2, state, unifiedName));
+					errors.add(createMessage(msg, 2, state, unifiedName));
 					unreachableStates.add(state.getName());					
 				}
 			}
@@ -246,13 +254,13 @@
 
 				if ((dead && stateCounter > 2)) {
 					final String msg = deadMsg(state, block);
-					errors.add(new CheckerMessage(msg, 2, state, unifiedName));
+					errors.add(createMessage(msg, 2, state, unifiedName));
 					deadStates.add(state.getName());
 				}
 
 				if ((unreachable)) {
 					final String msg = unreachableMsg(state, block);
-					errors.add(new CheckerMessage(msg, 2, state, unifiedName));
+					errors.add(createMessage(msg, 2, state, unifiedName));
 					unreachableStates.add(state.getName());
 				}
 			}
@@ -272,6 +280,10 @@
 		return errors;
 	}
 	
+	protected CheckerMessage createMessage(String msg, int severity, EObject state, String unifiedName) {
+		return new CheckerMessage(msg, severity, state, unifiedName);
+	}
+	
 	protected String deadMsg(Vertex state, Class block) {
 		return "The state '" + state.getName() + "' of block '" + 
 				block.getName() + "' does not have any transitions to other states";