# DevinReview is the way to understand code.

Code review that organizes diffs, detects moved code, and flags potential bugs.

Try on any public or private GitHub PR URL

### Intelligently organized code diffs

## 1 Add setTimeout.clock marker for fake timer detection

```zig
fn setFakeTimerMarker(globalObject: *jsc.JSGlobalObject, enabled: bool) void {
    const globalThis_value = globalObject.toJSValue();
    const setTimeout_fn = (globalThis_value.getOwnTruthy(globalObject, "setTimeout") catch return) orelse return;
    // Set setTimeout.clock to indicate fake timers status.
    // testing-library/react checks Object.hasOwnProperty.call(setTimeout, 'clock')
    // to detect if fake timers are enabled.
    setTimeout_fn.put(globalObject, "clock", jsc.JSValue.jsBoolean(enabled));
}
```

### 2 Fix advanceTimersByTime(0) not firing immediate timers

```javascript
// Before:
const target = current.addMsFloat(arg_number);
// After:
const effective_advance = if (arg_number == 0) 1 else arg_number;
const target = current.addMsFloat(effective_advance);
```

### 3 Regression tests

```javascript
test("advanceTimersByTime(0) fires setTimeout(fn, 0) timers", async () => {
    jest.useFakeTimers();
    try {
        let called = false;
        setTimeout(() => {
            called = true;
        }, 0);

expect(called).toBe(false);
        jest.advanceTimersByTime(0);
        expect(called).toBe(true);
    } finally {
        jest.useRealTimers();
    }
});
```

### Bugs and flag detection

#### 1 Potential bug
setFakeTimerMarker sets clock to false instead of deleting it, causing jestFakeTimersAreEnabled() to return true after useRealTimers()

#### 4 Flags
Test order dependency - first test assumes clean global state

### Copy/move detection
Automatically detects when code is moved or copied, and shows you where it came from.

```rust
match role.as_str() {
    "user" => {
        messages.push(ChatMessage::User {
            content: UserMessageContent::Text(text),
            name: None,
        });
    }
    // ... other roles
}
```

Try Devin Review now.
