Skip to content

AppMenuSearch: small matchCache optimization - #249

Closed
guiodic wants to merge 1 commit into
nextfrom
small-opt-searchcache
Closed

AppMenuSearch: small matchCache optimization#249
guiodic wants to merge 1 commit into
nextfrom
small-opt-searchcache

Conversation

@guiodic

@guiodic guiodic commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Riepilogo di Sourcery

Miglioramenti:

  • Ottimizza la ricerca dei percorsi corrispondenti nel menu dell'app riutilizzando, quando disponibile, il testo della corrispondenza dell'antenato memorizzato nella cache ed evitando al contempo voci di cache non necessarie.
Original summary in English

Summary by Sourcery

Enhancements:

  • Optimize app menu search path matching by reusing cached ancestor match text when available, while avoiding unnecessary cache entries.

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 55efd2f8-fb78-47bf-be93-163a8ad06463

📥 Commits

Reviewing files that changed from the base of the PR and between 432df3c and 290046c.

📒 Files selected for processing (1)
  • src/AppMenuSearch.cc

Included review availability: Your plan provides up to 2 included reviews per hour; 0 remain after this review.


📝 Walkthrough

Summary by CodeRabbit

  • Correzioni
    • Migliorata la ricerca nei percorsi gerarchici, con risultati più coerenti durante la costruzione dei percorsi degli antenati.
    • Ottimizzato il riutilizzo delle informazioni già disponibili, evitando la generazione di dati temporanei non necessari.
    • Il comportamento di valutazione e visualizzazione dei percorsi esistenti rimane invariato.

Walkthrough

matchSearchCandidates gestisce gli antenati nulli, riutilizza i testi presenti in matchCache e calcola quelli mancanti senza inserire nuove voci nella cache. La costruzione e la valutazione dei percorsi restano invariate.

Changes

Ricerca dei candidati

Layer / File(s) Summary
Risoluzione del testo degli antenati
src/AppMenuSearch.cc
matchSearchCandidates ignora gli antenati nulli, riutilizza i testi presenti in matchCache e usa getActionText per i testi mancanti senza modificare la cache.

Estimated code review effort: 1 (Trivial) | ~5 minuti

Merge Risk: ⚪ Minimal · up to 29004

This localized change optimizes app-menu search caching without any identified merge-blocking correctness or production risk; it is merge-ready after normal checks and review.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed Il titolo descrive in modo conciso l'ottimizzazione principale di matchCache nella ricerca del menu dell'app.
Description check ✅ Passed La descrizione è pertinente. Indica il riutilizzo del testo degli antenati memorizzato nella cache e la riduzione delle voci di cache non necessarie.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch small-opt-searchcache

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sourcery-ai

sourcery-ai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Guida del revisore

Ottimizza la costruzione dei percorsi degli antenati riutilizzando il testo MatchState calcolato in precedenza da matchCache e calcolando solo il testo delle azioni non memorizzate nella cache, preservando al contempo la semantica esistente dei percorsi e del filtraggio.

Diagramma di flusso per la ricerca nella cache del testo degli antenati

flowchart TD
    A[Elabora l'azione dell'antenato] --> B{L'antenato è null?}
    B -- Sì --> C[Continua con l'antenato successivo]
    B -- No --> D{matchCache contiene l'antenato?}
    D -- Sì --> E[Riuso di MatchState.text]
    D -- No --> F["getActionText(ancestor)"]
    E --> G{Il testo è vuoto?}
    F --> G
    G -- Sì --> H[Continua con l'antenato successivo]
    G -- No --> I[Accoda il testo a currentPath]
    I --> J{Ignora il livello superiore e non è stato ignorato?}
    J -- Sì --> K[Imposta skippedTopLevel]
    J -- No --> L[Accoda il testo a evalPathList]
Loading

Modifiche a livello di file

Modifica Dettagli File
Riutilizzo del testo dell'azione dell'antenato memorizzato nella cache durante la costruzione dei percorsi candidati, evitando il calcolo ridondante del testo dell'azione senza espandere la cache.
  • Ignora esplicitamente gli antenati null prima dell'elaborazione.
  • Legge una voce esistente dell'antenato da matchCache e ne utilizza il testo memorizzato nella cache.
  • Utilizza getActionText() quando non esiste alcuna voce nella cache, senza inserire una voce sintetica nella cache.
  • Preserva il comportamento attuale di currentPath, evalPathList e dell'ignoramento del livello superiore per il testo non vuoto.
src/AppMenuSearch.cc

Suggerimenti e comandi

Interagire con Sourcery

  • Avviare una nuova revisione: commenta @sourcery-ai review nella pull request.
  • Continuare le discussioni: rispondi direttamente ai commenti di revisione di Sourcery.
  • Generare una issue GitHub da un commento di revisione: chiedi a Sourcery di creare una issue da un commento di revisione rispondendo a quel commento. Puoi anche rispondere a un commento di revisione con @sourcery-ai issue per crearne una.
  • Generare il titolo di una pull request: scrivi @sourcery-ai in qualsiasi punto del titolo della pull request per generare un titolo in qualsiasi momento. Puoi anche commentare @sourcery-ai title nella pull request per generare nuovamente il titolo in qualsiasi momento.
  • Generare il riepilogo di una pull request: scrivi @sourcery-ai summary in qualsiasi punto del corpo della pull request per generare un riepilogo della PR in qualsiasi momento, esattamente nel punto desiderato. Puoi anche commentare @sourcery-ai summary nella pull request per generare nuovamente il riepilogo in qualsiasi momento.
  • Generare la guida del revisore: commenta @sourcery-ai guide nella pull request per generare nuovamente la guida del revisore in qualsiasi momento.
  • Risolvere tutti i commenti di Sourcery: commenta @sourcery-ai resolve nella pull request per risolvere tutti i commenti di Sourcery. È utile se hai già affrontato tutti i commenti e non vuoi più visualizzarli.
  • Ignorare tutte le revisioni di Sourcery: commenta @sourcery-ai dismiss nella pull request per ignorare tutte le revisioni di Sourcery esistenti. È particolarmente utile se vuoi ricominciare da zero con una nuova revisione: non dimenticare di commentare @sourcery-ai review per avviare una nuova revisione!

Personalizzare la tua esperienza

Accedi alla tua dashboard per:

  • Abilitare o disabilitare funzionalità di revisione come il riepilogo della pull request generato da Sourcery, la guida del revisore e altre.
  • Modificare la lingua della revisione.
  • Aggiungere, rimuovere o modificare le istruzioni personalizzate per la revisione.
  • Modificare altre impostazioni di revisione.

Ottenere assistenza

Original review guide in English

Reviewer's Guide

Optimizes ancestor path construction by reusing previously computed MatchState text from matchCache and only computing uncached action text, while preserving existing path and filtering semantics.

Flow diagram for cached ancestor text lookup

flowchart TD
    A[Process ancestor action] --> B{Ancestor is null?}
    B -- Yes --> C[Continue to next ancestor]
    B -- No --> D{matchCache contains ancestor?}
    D -- Yes --> E[Reuse MatchState.text]
    D -- No --> F["getActionText(ancestor)"]
    E --> G{Text is empty?}
    F --> G
    G -- Yes --> H[Continue to next ancestor]
    G -- No --> I[Append text to currentPath]
    I --> J{Ignore top level and not skipped?}
    J -- Yes --> K[Mark skippedTopLevel]
    J -- No --> L[Append text to evalPathList]
Loading

File-Level Changes

Change Details Files
Reuse cached ancestor match text while constructing candidate paths, avoiding redundant action-text computation without expanding the cache.
  • Skip null ancestors explicitly before processing.
  • Read an existing ancestor entry from matchCache and use its cached text.
  • Fall back to getActionText() when no cached entry exists, without inserting a synthetic cache entry.
  • Preserve currentPath, evalPathList, and top-level-ignore behavior for non-empty text.
src/AppMenuSearch.cc

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Ehi, ho esaminato le tue modifiche e sono fantastiche!

Valutazione di Sourcery

Approvato.


Sourcery è gratuito per i progetti open source: se le nostre revisioni ti piacciono, considera la possibilità di condividerle ✨
Aiutami a essere più utile! Fai clic su 👍 o 👎 su ogni commento e userò il feedback per migliorare le mie revisioni.
Original comment in English

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@guiodic guiodic closed this Aug 25, 2026
@guiodic
guiodic deleted the small-opt-searchcache branch August 25, 2026 21:18
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