Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve handling of unknown QL pack roots for multi-query MRVAs #3289

Merged
merged 7 commits into from
Jan 31, 2024

Conversation

charisk
Copy link
Contributor

@charisk charisk commented Jan 29, 2024

Add some logic to handle calculating QL pack roots for MRVA better.

Checklist

N/A:

  • CHANGELOG.md has been updated to incorporate all user visible changes made by this pull request.
  • Issues have been created for any UI or other user-facing changes made by this pull request.
  • [Maintainers only] If this pull request makes user-facing changes that require documentation changes, open a corresponding docs pull request in the github/codeql repo and add the ready-for-doc-review label there.

@charisk charisk requested review from a team as code owners January 29, 2024 14:44
@charisk charisk force-pushed the charisk/multi-query-ql-pack-roots branch from 377177a to d2265db Compare January 29, 2024 14:45
@charisk charisk marked this pull request as draft January 29, 2024 15:44
@charisk charisk force-pushed the charisk/multi-query-ql-pack-roots branch 3 times, most recently from 2c279db to 3306bc6 Compare January 29, 2024 16:10
@charisk charisk force-pushed the charisk/multi-query-ql-pack-roots branch from 3306bc6 to 96a3f31 Compare January 29, 2024 16:21
@charisk charisk marked this pull request as ready for review January 29, 2024 16:35
Copy link
Contributor

@robertbrignull robertbrignull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the behaviour this is aiming for, but I have quite a few comments about the specific implementation.

Apologies for being quite exacting about findCommonParentDir. Since we're writing a shared helper file I'd like if we make sure it's as correct as we can make it. I recognise we might not hit these edge-cases right now, but it'll help avoid hard-to-detect bugs if someone else starts using this function in the future.

extensions/ql-vscode/src/common/files.ts Show resolved Hide resolved
extensions/ql-vscode/src/common/files.ts Outdated Show resolved Hide resolved
extensions/ql-vscode/src/common/files.ts Outdated Show resolved Hide resolved
extensions/ql-vscode/src/common/files.ts Outdated Show resolved Hide resolved
packRoots.push(packRoot);
}

if (queryFiles.length === 1) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this special case for one query? I think the logic below still works when there's a single file. Since there's not much below this I wonder if it's simpler to reduce the number of special cases, rather returning early and reducing the amount of code executed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there is a slight difference when there is a single query. If the query is not in the workspace, we currently allow MRVA to run. So I wanted to keep that behaviour. For multiple queries it gets more complicated, because if they're not in a pack we want to find a common dir for them so they need to be in the workspace to avoid reaching places in the filesystem where we shouldn't.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the query is not in the workspace, we currently allow MRVA to run. So I wanted to keep that behaviour.

Why do we want this behaviour? To me it seems like an oversight and unlikely that anyone would be relying on this to run MRVA using query files outside of their workspace.

Would it not be better to have consistent behaviour when there's one query vs multiple queries?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could have opened a workspace and dragged a query file from somewhere else into VS Code. So I can imagine that happening, but definitely not often.

I agree it would be good to have the same behaviour but perhaps if we want to change it we should have a specific PR for that, with a CHANGELOG note. WDYT?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A separate PR with a changelog note sounds good to me. Also getting eyes from more members of the team on whether this makes sense. I don't really have any strong opinions.

extensions/ql-vscode/src/variant-analysis/ql.ts Outdated Show resolved Hide resolved
extensions/ql-vscode/src/variant-analysis/ql.ts Outdated Show resolved Hide resolved
Copy link
Contributor

@robertbrignull robertbrignull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good to me. If we want to make any more tweaks I think they can be separate PRs. Thankfully everything is tested well so we should be covered if we do change the methods.

I've also briefly tried it out in a workspace with no query packs and it appeared to work just fine.

@charisk charisk merged commit 74c101b into main Jan 31, 2024
15 checks passed
@charisk charisk deleted the charisk/multi-query-ql-pack-roots branch January 31, 2024 13:53
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.

2 participants