How lyoubo/fetruth works
feTruth detects feature-envy methods in Java projects by analyzing method/class relationships and producing suggested Move Method results. Its primary workflow is project input through preprocessing and model-based classification to a report; the README documents pretrained word2vec assets and output files, but the Python implementation was not sampled. The Java data-generation subsystem mines refactorings from Git history, builds positive and negative training examples, and matches method invocations. Its services and interfaces are evidenced by the tree and excerpts; detailed parser wiring is not fully shown.
Main entry points: feTruth.py Detection CLI · TrainingDataServiceImpl.java Training data service · classifier.py Feature classifier · MethodInvocationServiceImpl.java Invocation matching
Components 19
Detection
- Detection CLI
implementation/feTruth.py - Project preprocessing
implementation/preprocess.py - Feature classifier
classifier/classifier.py - Word2vec assets
- Detection report
Data generation
- Training data service
dataset/data_generation/src/main/java/org/datageneration/service/TrainingDataServiceImpl.java - Training parser
dataset/data_generation/src/main/java/org/parser/TrainingDataParser.java - Training records
dataset/data_generation/src/main/java/org/datageneration/service/TrainingDataServiceImpl.java - Invocation matching
dataset/data_generation/src/main/java/org/methodinvocation/service/MethodInvocationServiceImpl.java - Invocation parser
dataset/data_generation/src/main/java/org/parser/MethodInvocationParser.java
Refactoring analysis
- Mining service
dataset/data_generation/src/main/java/org/refactoringminer/service/RefactoringMinerServiceImpl.java - Git history access
dataset/data_generation/src/main/java/org/refactoringminer/util/GitServiceImpl.java - History miner
dataset/data_generation/src/main/java/org/refactoringminer/rm1/GitHistoryRefactoringMinerImpl.java
Java analysis
- UML model diff
dataset/data_generation/src/main/java/gr/uom/java/xmi/diff/UMLModelDiff.java - Java UML model
dataset/data_generation/src/main/java/gr/uom/java/xmi/UMLModel.java - Coupling metrics
dataset/data_generation/src/main/java/org/datageneration/metrics/Metric.java - Smell candidates
dataset/data_generation/src/main/java/org/datageneration/candidate/SmellCandidate.java
Other components
- Engineer
- Java project
Connections 17
- Engineer → Detection CLI: runs analysis
- Java project → Detection CLI: project input
- Detection CLI → Project preprocessing: preprocesses
- Project preprocessing → Feature classifier: supplies features
- Word2vec assets → Feature classifier: model assets
- Feature classifier → Detection CLI: returns predictions
- Detection CLI → Detection report: writes results
- Mining service → Git history access: opens repositories
- Mining service → History miner: detects commits
- History miner → UML model diff: produces diffs
- UML model diff → Java UML model: compares models
- Training data service → Training parser: parses projects
- Training data service → Training records: writes examples
- Training data service → Git history access: checks out commits
- Invocation matching → Invocation parser: finds invocations
- Invocation matching → Training records: matches refactoring records
- Smell candidates → Coupling metrics: uses measures