
Ask HN: Looking for a tool - szatkus
I&#x27;m not even sure what to type in Google.<p>Let&#x27;s say I have a commit. I want a tool which analyzes codebase and show all places in code which could be affected by this commit. For example if I change a function X the tool will show all places which depends on a result of the function.<p>I guess that in Java it could be doable because of its strict nature. Is there anything like this? Or it&#x27;s an idea for a side-project?
======
gvisoc
That particular sub-area of static analysis is called (change) impact
analysis. If you google that you'll find several tools, but many of those
results are a couple of years old, or framework-specific. Take a look and good
luck.

------
remyp
Good test coverage goes a long way towards solving this problem.

------
BjoernKW
It's called static analysis, which given JavaScript's dynamic nature obviously
doesn't work as well as with statically-typed languages like Java. However,
IntelliJ IDEA or WebStorm offer decent analysis tools for JavaScript as well.
In IntelliJ IDEA "Find usages" is the name of the feature you're looking for.

~~~
szatkus
I don't have IntelliJ right now, but as far as I remember this function shows
only line where selected method is called. I meant something more
sophisticated, every piece fo code that could be affected by this.

Example:

    
    
        int x = obj.something();
        unrelated.doSomethingElse();
        return x * x;
    

If I change something() method IntelliJ will show only the first line, even
though the third one is affected by the change as well.

~~~
BjoernKW
I see. Like a trace of properties affected by a change. That's definitely
possible using static analysis during a pre-commit hook.

You're right IntelliJ IDEA doesn't provide that feature out-of-the-box.
SonarLint does something like this but only for specific patterns (or rather
anti-patterns). I don't know about a general purpose tool that does this
though.

------
paradite
You can definitely write a tool to do it for JavaScript.

Sublime text has something similar that gives you the usages of a function
when you hover over its name. Its not as 100 percent accurate as strict static
code analysis, but it works pretty well for function names that are not
duplicated everywhere.

------
stephenr
What language is your project? Jetbrains IDEs have static analysis based "find
usage" for dynamic languages like php.

------
rawland

      grep -inr 'X'
    

Can be expanded via regex, awk, etc...

~~~
tehlike
No. What if its a nested call?

