add doc/alg-cleanup.md

This commit is contained in:
Fam Zheng 2025-08-24 11:58:48 +01:00
parent 4458302fc9
commit 4e149d1369

161
doc/alg-cleanup.md Normal file
View File

@ -0,0 +1,161 @@
# 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