162 lines
5.3 KiB
Markdown
162 lines
5.3 KiB
Markdown
# ALG Directory Cleanup Plan
|
|
|
|
This document tracks the cleanup work for the `alg/` directory to remove unused code and simplify the build system.
|
|
|
|
## 🎯 **Cleanup Goals**
|
|
|
|
- Remove unused command functions and infrastructure code
|
|
- Simplify the Makefile by removing unused conditional builds
|
|
- Reduce codebase size and complexity
|
|
- Maintain core QR code functionality
|
|
|
|
## 🗑️ **Files/Code to Remove**
|
|
|
|
### 1. **Unused Command Functions in `qrtool.cpp`**
|
|
|
|
These functions are defined but never called:
|
|
|
|
```cpp
|
|
// Remove these unused functions:
|
|
static int detect_cmd(char **argv, int argc) // Lines ~26-40
|
|
static int dot_cmd(char **argv, int argc) // Lines ~65-80
|
|
static int roi_verify_cmd(char **argv, int argc) // Lines ~100-120
|
|
```
|
|
|
|
**Impact**: Reduces executable size, removes unused QR detection and ROI verification code.
|
|
|
|
### 2. **Unused Infrastructure Code**
|
|
|
|
#### HTTP Server (`http.h`, `http.cc`)
|
|
- **Status**: Never called, only includes `httplib.h`
|
|
- **Dependencies**: `httplib.h` (304KB header file)
|
|
- **Action**: Remove both files
|
|
|
|
#### gRPC Server (`fileprocess.h`, `fileprocess.cpp`)
|
|
- **Status**: Only used when `ENABLE_GRPC` is defined, but it's never set
|
|
- **Dependencies**: gRPC libraries, protobuf
|
|
- **Action**: Remove both files
|
|
|
|
#### Message Queue Worker (`mq_worker.h`, `mq_worker.cpp`)
|
|
- **Status**: Only used when `USE_PULSAR` is defined, but it's never set
|
|
- **Dependencies**: Pulsar client library, JSON library
|
|
- **Action**: Remove both files
|
|
|
|
### 3. **Unused Python Files**
|
|
|
|
#### `worker.py`
|
|
- **Status**: Pulsar-based worker that's never used
|
|
- **Dependencies**: Pulsar client, subprocess calls to `./qrtool`
|
|
- **Action**: Remove file
|
|
|
|
#### `server.py`
|
|
- **Status**: Flask server with hardcoded credentials, never called
|
|
- **Dependencies**: Flask, subprocess calls to `./qrtool`
|
|
- **Action**: Remove file
|
|
|
|
### 4. **Unused Functions in `libqr.cpp`**
|
|
|
|
```cpp
|
|
// Remove these unused functions:
|
|
double emblem_roi_similarity(SimilarityAlg alg, InputArray std_in, InputArray frame_roi_in, string &err) // Lines ~444-488
|
|
static inline void showimg_(const char *title, Mat &img) // Lines ~48-50
|
|
#define show(img) showimg_(#img, img) // Line ~51
|
|
```
|
|
|
|
**Impact**: Removes unused ROI similarity comparison and image display utilities.
|
|
|
|
### 5. **Unused Header Files**
|
|
|
|
#### `string_format.h`
|
|
- **Status**: Only used once in `libqr.cpp` for one error message
|
|
- **Usage**: `err = string_format("image too blurry: %lf < %lf", sharpness, thres);`
|
|
- **Action**: Consider inlining the single usage or removing if not critical
|
|
|
|
## 🔧 **Build System Cleanup**
|
|
|
|
### Makefile Simplification
|
|
|
|
Remove unused conditional builds:
|
|
|
|
```makefile
|
|
# Remove these unused variables and their usage:
|
|
USE_PULSAR := # Line 19
|
|
ENABLE_GRPC := # Line 21
|
|
|
|
# Remove conditional compilation:
|
|
$(if $(USE_PULSAR), mq_worker.cpp) \ # Line 37
|
|
$(if $(ENABLE_GRPC), fileprocess.o fileprocess.pb.o fileprocess.grpc.pb.o) \ # Line 38
|
|
$(if $(USE_PULSAR), -lpulsar) \ # Line 46
|
|
|
|
# Remove unused targets:
|
|
fileprocess.o: fileprocess.grpc.pb.h # Line 58
|
|
```
|
|
|
|
## 📊 **Current Usage Analysis**
|
|
|
|
### **Actually Used (Keep)**
|
|
- `qrtool.cpp` - Main executable (only `angle_cmd` is used)
|
|
- `qrtool_wasm.cpp` - WebAssembly version for web/scanner
|
|
- `libqr.cpp` - Core QR processing logic
|
|
- `base64.cpp` - Used by mq_worker (but mq_worker itself is unused)
|
|
- `string_format.h` - Used once in libqr.cpp
|
|
|
|
### **Build Targets (Keep)**
|
|
- `qrtool` - Main binary
|
|
- `qrtool.web.js` - Web version
|
|
- `qrtool.wx.js` - WeChat mini-program version
|
|
- `qrtool.wx.wasm.br` - Compressed WASM for WeChat
|
|
|
|
## 🚀 **Implementation Steps**
|
|
|
|
1. **Phase 1: Remove Unused Functions**
|
|
- Remove `detect_cmd`, `dot_cmd`, `roi_verify_cmd` from `qrtool.cpp`
|
|
- Remove `emblem_roi_similarity`, `showimg_`, `show` from `libqr.cpp`
|
|
|
|
2. **Phase 2: Remove Unused Infrastructure**
|
|
- Remove `http.h`, `http.cc`
|
|
- Remove `fileprocess.h`, `fileprocess.cpp`
|
|
- Remove `mq_worker.h`, `mq_worker.cpp`
|
|
|
|
3. **Phase 3: Remove Unused Python Files**
|
|
- Remove `worker.py`
|
|
- Remove `server.py`
|
|
|
|
4. **Phase 4: Clean Build System**
|
|
- Simplify Makefile by removing unused conditionals
|
|
- Remove unused dependencies and linking
|
|
|
|
5. **Phase 5: Test and Verify**
|
|
- Ensure `qrtool` still builds and works
|
|
- Verify WASM builds still function
|
|
- Test core QR angle detection functionality
|
|
|
|
## 📈 **Expected Benefits**
|
|
|
|
- **Reduced binary size**: Remove unused command functions
|
|
- **Simplified build**: Remove unused conditional compilation
|
|
- **Cleaner codebase**: Remove dead infrastructure code
|
|
- **Faster builds**: Fewer dependencies and compilation steps
|
|
- **Easier maintenance**: Less code to maintain and debug
|
|
|
|
## ⚠️ **Risks and Considerations**
|
|
|
|
- **Dependencies**: Some files may have hidden dependencies
|
|
- **Build testing**: Need to verify all build targets still work
|
|
- **Functionality**: Ensure core QR processing isn't affected
|
|
- **Documentation**: Update any documentation that references removed code
|
|
|
|
## 📝 **Progress Tracking**
|
|
|
|
- [ ] Phase 1: Remove unused functions
|
|
- [ ] Phase 2: Remove unused infrastructure
|
|
- [ ] Phase 3: Remove unused Python files
|
|
- [ ] Phase 4: Clean build system
|
|
- [ ] Phase 5: Test and verify
|
|
- [ ] Update documentation
|
|
|
|
---
|
|
|
|
**Last Updated**: $(date)
|
|
**Status**: Planning Phase
|
|
**Assignee**: TBD
|