Smell detection (Jose Lo)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 5 Jun 2006 20:22:53 +0000 (20:22 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 5 Jun 2006 20:22:53 +0000 (20:22 +0000)
Makefile
build/module.tpl

index c9cbcd8..d369900 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,9 @@ export CLASSPATH IRST_INSTALLDIR IRST_CONFIG_DIR
 CODE_CHECK=java rules.ALICE.ALICERuleChecker
 REV_ENG=$(IRST_INSTALLDIR)/scripts/revEng.sh
 
+SMELL_DETECTOR_DIR=$(ALICE)/smell-detector
+
+
 #-------------------------------------------------------------------------------
 # Include machine dependent macros
 
@@ -313,6 +316,8 @@ reveng-all:   $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,reveng-%,$(
 
 revdisp-all:  $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,revdisp-%,$(CHECKMODULES))
 
+smell-all:    $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,smell-%,$(CHECKMODULES))
+
 clean-dicts:
 ifndef ALIQUIET
        @echo "***** Cleaning up G__ files *****"
index 7c932ac..a3177ca 100644 (file)
@@ -376,6 +376,33 @@ check-@MODULE@: $(@PACKAGE@CHECKS)
 
 PACKREVENG += $(@PACKAGE@PREPROC)
 
+# IRST code smell checker
+
+@PACKAGE@SMELL := $(patsubst %.cxx,@MODULE@/smell/%.smell,$(SRCS))
+
+smell-@MODULE@: $(@PACKAGE@SMELL)
+
+@MODULE@/smell/%.occ : @MODULE@/%.cxx 
+       $(MUTE)echo smelling $@
+       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+       @$(CXX) -E $(@PACKAGE@DEFINE) -D__opencxx $(@PACKAGE@INC) $(@PACKAGE@CXXFLAGS) $< -o $@ -x c++ $<
+
+@MODULE@/smell/%.smell : @MODULE@/smell/%.occ
+       @$(SMELL_DETECTOR_DIR)/patch-smell-detector.prl $<
+       @java -classpath $(SMELL_DETECTOR_DIR) Stripper $<
+       @$(SMELL_DETECTOR_DIR)/code-smell1 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) > $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell2 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell3 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell4 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell5 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell6 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell7 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell8 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell9 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @$(SMELL_DETECTOR_DIR)/code-smell10 -n -E -c $(patsubst %.occ, %.i, $<) -Mclass=$(patsubst $(dir $@)%.occ,%, $<) >> $(patsubst %.occ,%.smell, $<)
+       @mv $(patsubst $(dir $@)%.occ,%.ii, $<) $(dir $@)
+
+
 # targets to create .par archives (jgrosseo)
 @PACKAGE@.par: $(patsubst %,@MODULE@/@PACKAGE@/%,$(filter-out dict.%, $(HDRS) $(SRCS) $(DHDR) $(PKGFILE) Makefile Makefile.arch lib@PACKAGE@.pkg PROOF-INF))
        @echo "Creating archive" $@ ...