5 ms·
Show HN: Effective java – A tool to explore your Java code written in Clojure
- rickette 11y agoLooks like a nice side project. But the first question that popped into my mind was, doesn't SonarQube already covers these rules?
- austinsharp 11y agoI'm also curious if this offers things Sonar doesn't.
- ftomassetti 11y agoYes and no. If you consider this as a linter there are many others out there. Most of them in my opinion generate too much noise. I think that effectivejava is useful to explore your codebase, run a few queries and find out some facts about your code: how many utils classes do you have? How many methods are taking more than 5 parameters? You can run easily the queries on the whole project or just some packages and correct your aim as you find facts (for example, you may start asking how many methods take more than 5 parameters and realize they are 1000, then you want probably to start focusing on the methods taking more than 10 parameters. Or you can find that some classes with this problem are generated code and you do not want to consider them). About the usage as a linter it tries to keep rules to a minimum of sensible rules, the ones explained in Effective Java. We chose them because they are rules well understood and accepted by the vast majority of developers so we hope to reduce the number of questionable findings returned to the user.
- speedkills 11y agoThis is pretty cool. Are you planning on extending the querying ability at all? I would love to be able to use this like Hoogle, point it at my scala code and query for all methods that take a list and return an int, for example.
- ftomassetti 11y agoWell, I am very interested in parsing and static analysis and if you idea and suggestions feel free to open as many tickets as you want on the project. Yes, Hoogle is super cool, it would be definitely useful to have something like that. I wrote in the past tools to manipulate ASTs of several languages but I have never looked in a Scala parser. Can you suggest one?
- jmsguy 11y agoMy thoughts too: Sonar, or Checkstyle+PMD+FindBugs, is already ingrained in many of the larger codebases I've worked with. Of course this is purely anecdotal since I've only worked with +-30 over the years.
- dikaiosune 11y agoI like the aesthetic of using Clojure to fix Java.
- lmm 11y agoSmall standalone command-line tools are a good place for a language like that, although it's a shame Clojure takes so long to start.
- dikaiosune 11y agoI just recently saw a story about using a pseudo-static compiler to improve the Clojure startup time. Maybe it's about to get better?
- ffreire 11y agoWere you perhaps talking about this article [0]? If not, it's a good read about the state of Project Skummet and improving Clojure load times on Android. [0]: http://blog.ndk.io/2015/04/23/state-of-coa.html http://blog.ndk.io/2015/04/23/state-of-coa.html
- dikaiosune 11y agoYes, that's the one. I came away thinking that I'm still not too interested in developing for Android, but that any tool to reduce Clojure/JVM startup times is promising.
- film42 11y agoThe nice thing about Clojure development is that you really only need to start the JVM once, after that, you can eval anything you need instantly. And really, startup times aren't that bad. Here's Travis CI for a small project I made. Time to start the JVM and run tests? 2.76 seconds. The entire build completes in ~12 seconds. https://travis-ci.org/film42/rinok#L99 https://travis-ci.org/film42/rinok#L99
- 11y ago
- hajims 11y agoJust tried running it and got this, I'm guessing I'm doing something wrong...? [me@localhost myapp]$ java -jar effectivejava-0.1.2-SNAPSHOT-standalone.jar -l -d "/home/me/myapp" Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.Class.forName0(Native Method) ... at app.core.<clinit>(Unknown Source) Caused by: java.lang.NullPointerException ... Could not find the main class: app.core. Program will exit.
- ftomassetti 11y agonever saw this error but current version is 0.1.3-SNAPSHOT. The instructions are probably confusing, I will fix them. You can run: lein jar java -jar target/effectivejava-0.1.3-SNAPSHOT.jar and then the options. Thank you for reporting this!
- hajims 11y agoquick google shows someone else had the same error: https://www.reddit.com/r/Clojure/comments/31uqab/writing_a_tool_to_measure_explore_and_analyze/ https://www.reddit.com/r/Clojure/comments/31uqab/writing_a_t... Thank you for this though, hopefully I'll get it working...