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

Add support for diff-informed queries #2559

Merged
merged 7 commits into from
Oct 31, 2024
Merged

Conversation

cklin
Copy link
Contributor

@cklin cklin commented Oct 21, 2024

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Confirm the readme has been updated if necessary.
  • Confirm the changelog has been updated if necessary.

@cklin cklin marked this pull request as ready for review October 22, 2024 15:43
@cklin cklin requested a review from a team as a code owner October 22, 2024 15:43
Copy link
Contributor

@henrymercer henrymercer left a comment

Choose a reason for hiding this comment

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

Thanks! I have a bunch of comments and questions — feel free to only address the ones that make sense.

Comment on lines 165 to 171
/**
* Deepen the git history of the given ref by one level. Errors are ignored.
*/
export const deepenGitHistory = async function () {
Copy link
Contributor

Choose a reason for hiding this comment

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

Two comments about the additions to this file in general:

  • Why completely ignore errors? Does it make sense to at least debug log them?
  • Nit, optional: This PR adds a bunch of functionality that interacts with git — now might be a good time to pull this functionality out into its own file.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The error is indeed logged centrally within runGitCommand(). By "Errors are ignored", I was trying to convey that errors are not reported back to the caller. I have update the function documentation to clarify the behavior.

Moving the git interactions to its own file sounds like a good idea, though trying to incorporate that into this PR is a bit messy. Can I defer that to a dedicated PR after this one merges?

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes, that's fine!

src/actions-util.ts Show resolved Hide resolved
src/actions-util.ts Show resolved Hide resolved
src/analyze-action.ts Outdated Show resolved Hide resolved
src/analyze.ts Show resolved Hide resolved
src/analyze.ts Outdated Show resolved Hide resolved
const results = new Array<[string, number, number]>();

let changedFile = "";
for (const line of diffHunkHeaders) {
Copy link
Contributor

Choose a reason for hiding this comment

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

In general this seems to keep going when it sees certain kinds of unexpected items in the diff. It seems that there's a risk of missing changed files — should we be more robust here, or fail more eagerly, or is that not important for now?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Can you tell me more about the risk you see, and how the code can be made more robust?

Copy link
Contributor

Choose a reason for hiding this comment

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

Here are some examples where we seem to find unexpected items in the diff:

  • // Not an actual file path; probably /dev/null
  • Failed to parse diff hunk header line: ${line}. Skipping.

In these cases we seem to be encountering something unexpected, but we log or ignore the error and carry on. My question is could these cases where the diff isn't quite as we expect cause us to miss some files that have been changed by the PR, and therefore cause us to miss alerts? If so, we'd probably want to return undefined and fall back to a full analysis.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That is a great observation. Thank you! I have updated the PR accordingly.

src/actions-util.ts Show resolved Hide resolved
src/analyze.ts Outdated Show resolved Hide resolved
src/analyze.ts Outdated Show resolved Hide resolved
@cklin
Copy link
Contributor Author

cklin commented Oct 24, 2024

Thanks! I have a bunch of comments and questions — feel free to only address the ones that make sense.

Thanks for the detailed comments and helpful suggestions! PTAL.

henrymercer
henrymercer previously approved these changes Oct 28, 2024
Copy link
Contributor

@henrymercer henrymercer left a comment

Choose a reason for hiding this comment

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

There's one remaining thread here, but otherwise LGTM!

@cklin
Copy link
Contributor Author

cklin commented Oct 29, 2024

There's one remaining thread here, but otherwise LGTM!

I updated the PR, which implements your suggestion and also fixes a minor bug in the handling of deletion hunks (where git reports the insertion line range as 0). See diff for the latest force-push for details.

henrymercer
henrymercer previously approved these changes Oct 31, 2024
Copy link
Contributor

@henrymercer henrymercer left a comment

Choose a reason for hiding this comment

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

Thanks @cklin!

@cklin cklin merged commit 48c3e26 into main Oct 31, 2024
275 checks passed
@cklin cklin deleted the cklin/diff-range-filtering branch October 31, 2024 13:47
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.

3 participants