VictorColomb opened a new issue, #9283:
URL: https://github.com/apache/devlake/issues/9283

   ### Search before asking
   
   - [x] I had searched in the 
[issues](https://github.com/apache/incubator-devlake/issues?q=is%3Aissue) and 
found no similar issues.
   
   
   ### What happened
   
   The `linker` plugin's `LinkPrToIssue` subtask compares the keys extracted 
from a PR (title, description or head ref) against `issues.issue_key` with an 
exact, case-sensitive match. `normalizeIssueKey` only strips `#` and whitespace.
   
   Some issue trackers generate lowercase branch names from the issue key, e.g. 
`user/proj-123-short-title` for issue `PROJ-123`. Since #8777, head refs are 
searched, but even with a case-insensitive `prToIssueRegexp` such as 
`(?i)\b(PROJ)-\d+\b`, the extracted key is `proj-123`. It never equals the 
stored key `PROJ-123`, so the PR is silently left unlinked.
   
   In my instance, about 5% of PRs that contain a key are affected, namely 
those where the key appears only in the branch name.
   
   ### What do you expect to happen
   
   Matching should be case-insensitive, or the extracted key should be 
normalized to match the stored `issue_key`, so that `proj-123` links to 
`PROJ-123`.
   
   ### How to reproduce
   
   1. Sync an issue tracker with an issue keyed `PROJ-123` and a GitHub repo 
into one project.
   2. Open a PR whose head ref is `user/proj-123-short-title`, with no key in 
the title or description.
   3. Enable the `linker` plugin with `prToIssueRegexp` = `(?i)\b(PROJ)-\d+\b`.
   4. Run the project pipeline.
   5. `pull_request_issues` has no row for this PR.
   
   ### Anything else
   
   Suggested fix in `backend/plugins/linker/tasks/link_pr_and_issue.go`: 
compare case-insensitively, e.g. uppercase the extracted keys and match with 
`UPPER(issues.issue_key) IN ?`. Uppercasing in `normalizeIssueKey` alone would 
only work for trackers with uppercase keys.
   
   A related limitation is that the enricher stops at the first field (title, 
then description, then head ref) with any regex match. A PR with an unrelated 
match in the title, such as `CVE-2024-0000`, never has its description or 
branch checked, so a real key there is ignored. I can open that as a separate 
issue if preferred.
   
   ### Version
   
   v1.0.3-beta18
   
   ### Are you willing to submit PR?
   
   - [x] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to