218 lines
No EOL
6 KiB
Markdown
218 lines
No EOL
6 KiB
Markdown
# Fix Warnings NOW - Action Checklist
|
|
|
|
## Summary
|
|
You told me NOT to use `#[allow(dead_code)]` - you're absolutely right!
|
|
Here's what actually needs to be done to fix the warnings properly.
|
|
|
|
---
|
|
|
|
## ❌ NEVER DO THIS
|
|
```rust
|
|
#[allow(dead_code)] // This is just hiding problems!
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ THE RIGHT WAY
|
|
|
|
### Quick Wins (Do These First)
|
|
|
|
#### 1. Remove Unused Internal Functions
|
|
Look for functions that truly have zero references:
|
|
```bash
|
|
# Find and delete these if they have no callers:
|
|
- src/channels/mod.rs: create_channel_routes() - Check if called anywhere
|
|
- src/channels/mod.rs: initialize_channels() - Check if called anywhere
|
|
```
|
|
|
|
#### 2. Fix Struct Field Names (Already Done)
|
|
The multimedia.rs field mismatch is fixed in recent changes.
|
|
|
|
#### 3. Use Existing Code by Adding Endpoints
|
|
|
|
Most warnings are for **implemented features with no API endpoints**.
|
|
|
|
---
|
|
|
|
## What To Actually Do
|
|
|
|
### Option A: Add API Endpoints (Recommended for Meet & Multimedia)
|
|
|
|
The meet and multimedia services are complete but not exposed via REST API.
|
|
|
|
**Add these routes to `src/main.rs` in the `run_axum_server` function:**
|
|
|
|
```rust
|
|
// Meet/Video Conference API (add after existing /api/meet routes)
|
|
.route("/api/meet/rooms", get(crate::meet::handlers::list_rooms))
|
|
.route("/api/meet/rooms/:room_id", get(crate::meet::handlers::get_room))
|
|
.route("/api/meet/rooms/:room_id/join", post(crate::meet::handlers::join_room))
|
|
.route("/api/meet/rooms/:room_id/transcription", post(crate::meet::handlers::toggle_transcription))
|
|
|
|
// Media/Multimedia API (new section)
|
|
.route("/api/media/upload", post(crate::bot::multimedia::handlers::upload))
|
|
.route("/api/media/:media_id", get(crate::bot::multimedia::handlers::download))
|
|
.route("/api/media/:media_id/thumbnail", get(crate::bot::multimedia::handlers::thumbnail))
|
|
```
|
|
|
|
**Then create handler functions that wrap the service methods.**
|
|
|
|
### Option B: Remove Truly Unused Code
|
|
|
|
If you decide a feature isn't needed right now:
|
|
|
|
1. **Check for references first:**
|
|
```bash
|
|
grep -r "function_name" src/
|
|
```
|
|
|
|
2. **If zero references, delete it:**
|
|
- Remove the function/struct
|
|
- Remove tests for it
|
|
- Update documentation
|
|
|
|
3. **Don't just hide it with `#[allow(dead_code)]`**
|
|
|
|
---
|
|
|
|
## Understanding False Positives
|
|
|
|
### These Are NOT Actually Unused:
|
|
|
|
#### 1. Trait Methods (channels/mod.rs)
|
|
```rust
|
|
pub trait ChannelAdapter {
|
|
async fn send_message(...); // Compiler says "never used"
|
|
async fn receive_message(...); // Compiler says "never used"
|
|
}
|
|
```
|
|
**Why**: Called via `dyn ChannelAdapter` polymorphism - compiler can't detect this.
|
|
**Action**: Leave as-is. This is how traits work.
|
|
|
|
#### 2. DriveMonitor (drive_monitor/mod.rs)
|
|
```rust
|
|
pub struct DriveMonitor { ... } // Compiler says fields "never read"
|
|
```
|
|
**Why**: Used in `BotOrchestrator`, runs in background task.
|
|
**Action**: Leave as-is. It's actively monitoring files.
|
|
|
|
#### 3. BasicCompiler (basic/compiler/mod.rs)
|
|
```rust
|
|
pub struct BasicCompiler { ... } // Compiler says "never constructed"
|
|
```
|
|
**Why**: Created by DriveMonitor to compile .bas files.
|
|
**Action**: Leave as-is. Used for .gbdialog compilation.
|
|
|
|
#### 4. Zitadel Auth Structures (auth/zitadel.rs)
|
|
```rust
|
|
pub struct UserWorkspace { ... } // Compiler says fields "never read"
|
|
```
|
|
**Why**: Used during OAuth callback and workspace initialization.
|
|
**Action**: Leave as-is. Used in authentication flow.
|
|
|
|
---
|
|
|
|
## Specific File Fixes
|
|
|
|
### src/channels/mod.rs
|
|
- **Keep**: All trait methods (used via polymorphism)
|
|
- **Maybe Remove**: `create_channel_routes()`, `initialize_channels()` if truly unused
|
|
- **Check**: Search codebase for callers first
|
|
|
|
### src/meet/service.rs
|
|
- **Option 1**: Add API endpoints (recommended)
|
|
- **Option 2**: Remove entire meet service if not needed yet
|
|
|
|
### src/bot/multimedia.rs
|
|
- **Option 1**: Add API endpoints (recommended)
|
|
- **Option 2**: Remove if not needed yet
|
|
|
|
### src/auth/zitadel.rs
|
|
- **Keep**: Most of this is used
|
|
- **Add**: Refresh token endpoint
|
|
- **Consider**: Auth middleware using `verify_token()`
|
|
|
|
### src/drive_monitor/mod.rs
|
|
- **Keep**: Everything - it's all used
|
|
|
|
### src/basic/compiler/mod.rs
|
|
- **Keep**: Everything - it's all used
|
|
|
|
### src/config/mod.rs
|
|
- **Investigate**: Check which fields in EmailConfig are actually read
|
|
- **Remove**: Any truly unused struct fields
|
|
|
|
### src/package_manager/setup/email_setup.rs
|
|
- **Keep**: This is bootstrap/setup code, used during initialization
|
|
|
|
---
|
|
|
|
## Decision Framework
|
|
|
|
When you see "warning: never used":
|
|
|
|
```
|
|
Is it a trait method?
|
|
├─ YES → Keep it (trait dispatch is invisible to compiler)
|
|
└─ NO → Continue
|
|
|
|
Is it called in tests?
|
|
├─ YES → Keep it
|
|
└─ NO → Continue
|
|
|
|
Can you find ANY reference to it?
|
|
├─ YES → Keep it
|
|
└─ NO → Continue
|
|
|
|
Is it a public API that should be exposed?
|
|
├─ YES → Add REST endpoint
|
|
└─ NO → Continue
|
|
|
|
Is it future functionality you want to keep?
|
|
├─ YES → Add REST endpoint OR add TODO comment
|
|
└─ NO → DELETE IT
|
|
```
|
|
|
|
---
|
|
|
|
## Priority Order
|
|
|
|
1. **Phase 1**: Remove functions with zero references (quick wins)
|
|
2. **Phase 2**: Add meet service API endpoints (high value)
|
|
3. **Phase 3**: Add multimedia API endpoints (high value)
|
|
4. **Phase 4**: Add auth refresh endpoint (completeness)
|
|
5. **Phase 5**: Document why false positives are false
|
|
6. **Phase 6**: Remove any remaining truly unused code
|
|
|
|
---
|
|
|
|
## Testing After Changes
|
|
|
|
After any change:
|
|
```bash
|
|
cargo check # Should reduce warning count
|
|
cargo test # Should still pass
|
|
cargo clippy # Should not introduce new issues
|
|
```
|
|
|
|
---
|
|
|
|
## The Rule
|
|
|
|
**If you can't decide whether to keep or remove something:**
|
|
1. Search for references: `grep -r "thing_name" src/`
|
|
2. Check git history: `git log -p --all -S "thing_name"`
|
|
3. If truly zero usage → Remove it
|
|
4. If unsure → Add API endpoint or add TODO comment
|
|
|
|
**NEVER use `#[allow(dead_code)]` as the solution.**
|
|
|
|
---
|
|
|
|
## Expected Outcome
|
|
|
|
- Warning count: 31 → 0 (or close to 0)
|
|
- No `#[allow(dead_code)]` anywhere
|
|
- All service methods accessible via API or removed
|
|
- All code either used or deleted
|
|
- Clean, maintainable codebase |