Websearch call options - #178
Open
kath45823 wants to merge 2 commits into
Open
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.

Attach a screenshot showing the tests that cover the change passing during CI

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)