jierenchen
Joined 10 years ago
Joined 10 years ago
I've found RDBMS is quite limited in terms of graph traversal. Maybe you've found a way around this? Would be happy to riff on that.
I see two big challenges.
1. How do you do this without changing the way we program? The most amount of value I would get from this kind of tool is being able to spelunk in a huge codebase with lots of legacy gunk. The cost of entry for this cannot be "rewrite all the codes."
2. What does the query language look like and how do you expose this to the user? This is especially challenging because the query language needs to serve so many different roles.
I'm excited to see what comes of this as I see this problem as a blocker for the next generation of software development. We've more or less solved infrastructure, yet taming complexity still eludes us.
Shameless plug, with a bit of fortuitous timing:
I just released an alpha CLI for my project SourceScape.
It's a tool that indexes your Typescript and Javascript code (Ruby coming soon.) You can then query your code by code structure instead of just raw text. As a trivial example, you can search for all classes with a render method that returns a jsx element with name div.
Install instructions here: https://github.com/sourcescapeio/sourcescape-cli#install
Marketing materials (a bit outdated, but looks pretty): https://sourcescape.io
I submitted this two months ago and I wanted to share again as there's been some significant progress. Instead of a fairly janky interface where you're clicking and dragging things around, now it's just a text editor where you type in code and you get search results that mirror this code.
All this is driving towards a vision of a "no-code" [0] builder for static analysis and making static analysis as easy as code search.
Looking forward to your feedback!
jieren at sourcescape.io @jierenchen
[0] Extreme air-quotes because you're literally searching with code blocks
I'm Jieren, and I'm building this app here.
I submitted this two months ago and I wanted to share again as there's been some significant progress. Instead of a fairly janky interface where you're clicking and dragging things around, now it's just a text editor where you type in code and you get search results that mirror this code.
All this is driving towards a vision of a "no-code" [0] builder for static analysis and making static analysis as easy as code search.
Looking forward to your feedback!
jieren at sourcescape.io @jierenchen
[0] Extreme air-quotes because you're literally searching with code blocks
I think it's in the nature of big companies to view everything as a process optimization problem and losing out on "innovators" is viewed as a gap in optimality that needs to be filled. An environment tuned to value extraction is inherently going to be hostile to exploration. Can't have your cake and eat it too, buddy.
I'm working on a similar project here: https://sourcescape.io/, but intended for use outside the IDE on larger collections of code (like the codebase of a large company.)
Agreed on the Prolog/Datalog approach of expressing a query as a collection of facts. CodeQL does the same. From one datastore nerd to another, I actually think this is a relatively unexplored area of querying knowledge graphs (code being a very complex, dense knowledge graph.)
Very excited to see where you go next with this "percolate search" functionality in the IDE.
Yes, that's part of the ultimate vision. The challenge will be figuring out how to represent these transformations.
I'm Jieren, creator of SourceScape. SourceScape is a query engine for source code that lets you build up constraints for the code you want to see, much like GraphQL in a GUI. It's a no-code builder for static analysis.
Static analysis is a powerful tool for understanding and verifying code. I want to make writing static code analysis as easy as code search so that you'll be using it all the time. Instead of creating migration spreadsheets, you'll just write queries. Instead of doing nitpicks for code reviews, you'll just write queries.
Happy to answer any questions you have! Also, any feedback would be much appreciated.
jieren at sourcescape.io @jierenchen
Right now the tools we have for programmatically reading through code are: 1. Code search, which is fast, but inaccurate/heuristic. 2. Static analysis, which is slow to run and difficult to write, but very accurate.
I'm building a tool that is as fast and easy to use as code search, and is as accurate and expressive as static analysis.
Still just a landing page [0]. Looking to get a public playground people can mess around with this week.
I'm Jieren, creator of SourceScape. SourceScape is a query engine for source code that lets you build up constraints for the code you want to see, much like a SQL query. You can also think of it as a very fast no-code builder for static analysis checks.
Throughout my career, I've always felt that there was this gap in our ability to dig through source code quickly. Text search is good, but very unreliable. Static analysis takes too long to write. I wanted something that could, for example, find all `.create calls from any instance of UserServiceClient` with 100% accuracy, and quickly.
Earlier this year, I was working on a microservices logging migration that took way longer than it should have. The frustrations I encountered on that project around coordination and verification of the migration became the impetus for me to build SourceScape.
Would love to get your thoughts on this.
jieren at sourcescape.io