Hello everyone,

http://crossclj.info

I've been working on CrossClj for some time now, and I feel it has grown 
usable (and useful) enough to make a public announcement.

CrossClj is a tool to explore the whole Clojure(-script) open-source 
ecosystem as an interconnected codebase.

The source code of Leiningen projects published as Clojars artifacts is 
rendered as a hypertext; each var occurrence is linked to its definition 
(namespaces belonging to different artifacts are resolved using maven 
coordinates), and each reference to a method/class of the standard Java JDK 
lib is linked to the Oracle documentation.

Starting from a var definition, it is possible to list all the qualified 
occurrences of the var across all the indexed projects; or it is possible 
to search all namespaces in all projects for vars with a given name.

A project should be automatically listed, provided that the following 
conditions are met:
- The project is deployed on Clojars under a public group (not a 
org.clojars.* user group)
- The project uses Leiningen and provides a project.clj with a description.
- The project has at least one non-SHAPSHOT release.
- Source code is incuded into project's artifact, and hosted publicly on 
GitHub (i.e. there is a github reference on the project's POM under the url 
or scm/connection fields). This almost ensures that the source code license 
is compatible with CrossClj's usage.

Some examples illustrating various features:

http://crossclj.info/ns/org.clojure/tools.analyzer/0.2.1/clojure.tools.analyzer.html#_macroexpand
http://crossclj.info/fun/clojure.core/reduce.html
http://crossclj.info/search?q=map
http://crossclj.info/ns/ring/ring-core/1.3.0/project.clj.html
http://crossclj.info/ns/org.clojure/clojure/1.6.0/clojure.core.html
http://crossclj.info/ns/garden/1.1.7/garden.stylesheet.cljs.html

The cross-reference index and the website content is updated daily, by 
looking at Clojars' feed (http://clojars.org/repo/feed.clj.gz), and by 
fetching the new artifacts that match the above constraints. The impact in 
terms of bandwidth is negligible.
The update process is designed to be fully automated, but as of today it is 
still initiated manually because there are some quality issues that needs 
to be worked out.

There are some scattered defects in the code analysis, due to my not yet 
perfect use of the tools.analyzer.* toolchain. 
Clojurescript macros definitions aren't yet cross-references.

The fact that the open source Clojure ecosystem still has a manageable size 
(about 3500 projects are indexed now) makes this kind of tools very cheap 
to operate, and opens up many possibilities for the future, like 
batch-executing other static analysis tools.

Francesco Bellomi
@fbellomi
@crossclojure

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to