Hacker News new | ask | show | jobs
by beliu 4155 days ago
Kythe seems like an awesome project, and kudos to Google for releasing this in the open.

For those interested in code analysis and dev tools, another library you might want to check out is srclib (I'm one of the authors). srclib is an open-source polyglot code analysis library designed for editors and code explorers. Its mission, supporting a common language-independent schema to support building better language-aware tools, is closely aligned with Kythe's. There's documentation and a succinct description of the problem we're trying to solve at https://srclib.org.

srclib currently supports Go, Java, Python, JavaScript, Ruby, Haskell, and soon PHP. There's a simple command line API that editor plugins can call, and currently there are srclib plugins for Emacs, Sublime, and Atom. srclib also powers https://sourcegraph.com.

I'm looking forward to seeing where Kythe goes and hopefully integrating Kythe and srclib. I think this is a huge step forward toward better tools for programmers. Just ask anyone who works/used to work at Google about the quality of their internal dev tools vs. the outside world. Thanks to the Kythe team for sharing this with the world!

1 comments

My usecase is that I have c# and java code that call each other but I need some kind of checker that validates "yes, the c# method signature is still compatible with the java method signature". It sounds like Kythe is the right tool for that, what is your take on that? Does srclib support something like this too? It's not as easy as it sounds because the c# or java method signature may have attributes which alter the compatability in custom ways, so I cant just compare "yes all 3 params are compatible and the name is correct". I'd have to plug in some custom logic that takes into account what the attribute does. What do you think?
It's hard for me to say without more details about your specific problem. srclib does provide a Data field where information like method signatures is typically emitted, so you can compare the signature for the C# method with that of the Java one, but I'm not sure if that includes the other attributes you need to know for your problem.

If there's a lot of custom logic, then it might be better to write an ad hoc tool that checks the AST of the Java against the AST of the C#. srclib and I think also Kythe are designed for building tools that want to be language-agnostic, rather than digging into specific language behavior.