Skip to content

Websearch call options - #178

Open
kath45823 wants to merge 2 commits into
CMU-313:mainfrom
kath45823:websearch-call-options
Open

Websearch call options#178
kath45823 wants to merge 2 commits into
CMU-313:mainfrom
kath45823:websearch-call-options

Conversation

@kath45823

Copy link
Copy Markdown

1. Issue

Link to the associated GitHub issue:
#119

Full path to the refactored file:
packages/opencode/src/tool/mcp-websearch.ts

What do you think this file does?
(Your answer does not have to be 100% correct; give a reasonable, evidence‑based guess.)
Not entirely sure, but I'm guessing it implements MCP and allows it to search stuff up on the web and retrieve data.

What is the scope of your refactoring within that file?
(Name specific functions/blocks/regions touched.)
call function (line 69)

Which Qlty‑reported issue did you address?
(Name the rule/metric and include the BEFORE value; e.g., “Cognitive Complexity 18 in render()”.)
Function with many parameters (count = 7): call

2. Refactoring

How did the specific issue you chose impact the codebase’s maintainability?
The issue I chose was the call function having too many function parameters. This made the code difficult to read and impacted the overall code's maintainability. By fixing this issue, the code becomes more robust and readable.

What changes did you make to resolve the issue?
Replaced the seven positional parameters with a single options object, and updated both call sites to pass named fields.

How do your changes improve maintainability? Did you consider alternatives?
It makes the code easier to read, less easy to mess up parameters (if you switch the order of variables) during calls, and overall, creates a more robust function, improving maintainability.

3. Validation

How did you validate that the change is correct?
call() had no test coverage at all before this change - the existing websearch test suite never test the call() function. So, I added six tests (packages/opencode/test/tool/websearch.test.ts) that execute the changed code and they all passed correctly.

Attach a screenshot of the test coverage showing the lines were executed by the tests.
Screenshot 2026-09-07 at 10 31 29 PM

Attach a screenshot showing the tests that cover the change passing during CI
Screenshot 2026-09-07 at 10 28 41 PM

Attach a screenshot of qlty smells --no-snippets <full/path/to/file.ts> showing fewer reported issues after the changes.
(No reported issues anymore in this file - before there was only 1 issue which is the one I fixed)
Screenshot 2026-09-07 at 10 35 12 PM

kath45823 and others added 2 commits August 26, 2026 17:37
…bject

`call` took seven positional parameters, which qlty flagged as a
"Function with many parameters" smell. Collapse them into a single
options object, using dot notation at the use sites per the style
guide's preference over destructuring.

Export `callProvider` so both provider branches are reachable from
tests, matching how this module already exports its other helpers.

Add tests that record the outgoing request and assert every argument
still lands in the slot it belongs in. A positional-to-options refactor
fails by silently mis-wiring a field, and the types cannot catch that
when several parameters share a type.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant