Re: [PATCH] kconfig: add kconfig-sym-check static checker
From: Andy Shevchenko
Date: Sun May 17 2026 - 05:59:08 EST
On Sun, May 17, 2026 at 06:11:28PM +0900, Nathan Chancellor wrote:
> On Sun, May 17, 2026 at 09:14:47AM +0300, Andy Shevchenko wrote:
> > On Sun, May 17, 2026 at 01:26:07PM +0900, Nathan Chancellor wrote:
> > > On Fri, May 15, 2026 at 09:08:07PM +0200, Nicolas Schier wrote:
[...]
> > > Ah yeah, that is definitely worth keeping in mind for the future. I feel
> > > like 'find' is not "more complicated" than 'git ls-files' in this case,
> > > so I will assume that such an objection would not really hold here
> > > (especially since it would help people with development of fresh Kconfig
> > > files that have not been committed yet). If we did want to rely on 'git
> > > ls-files', we should at least error gracefully if we are not in a git
> > > checkout.
> >
> > Can we do both depending on the environment (if we are in Git, do that,
> > otherwise fallback to `find`)? `find` uses FS, while Git uses index, which
> > is much faster.
>
> It feels like that starts to get into the complicated territory for
> little gain, considering there is indeed a performance difference
I tend to agree, but it depends on how complicated the things really are if
implementing both.
> but I
> am not sure that it is an obvious one in the grand scheme of things.
>
> $ hyperfine 'git ls-files "*Kconfig*"' 'find . -name "*Kconfig*"'
Does this makes caches cold before *each* attempt?
> Benchmark 1: git ls-files "*Kconfig*"
> Time (mean ± σ): 24.6 ms ± 1.0 ms [User: 18.0 ms, System: 6.1 ms]
> Range (min … max): 20.5 ms … 28.7 ms 120 runs
>
> Benchmark 2: find . -name "*Kconfig*"
> Time (mean ± σ): 222.9 ms ± 4.5 ms [User: 80.6 ms, System: 140.1 ms]
> Range (min … max): 216.0 ms … 227.6 ms 13 runs
>
> Summary
> git ls-files "*Kconfig*" ran
> 9.06 ± 0.43 times faster than find . -name "*Kconfig*"
>
> But I don't know how complicated such checking is in Perl, so I would be
> willing to see what it looks like.
1. Call `git ls-files`,
2. if the above fails, call `find`.
3. `find` never fails (okay... :-)
In any language it shouldn't be much code.
--
With Best Regards,
Andy Shevchenko