https://github.com/jruby/jruby-lint
See how ready your Ruby code is to run on JRuby
https://github.com/jruby/jruby-lint
Last synced: 2 months ago
JSON representation
See how ready your Ruby code is to run on JRuby
- Host: GitHub
- URL: https://github.com/jruby/jruby-lint
- Owner: jruby
- License: other
- Created: 2011-04-28T15:52:31.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2020-02-29T20:47:48.000Z (over 5 years ago)
- Last Synced: 2024-05-01T11:33:55.547Z (about 1 year ago)
- Language: Ruby
- Homepage:
- Size: 215 KB
- Stars: 101
- Watchers: 20
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: History.txt
- License: LICENSE.txt
Awesome Lists containing this project
README
# JRuby-Lint
See how ready your Ruby code is to run on JRuby.
JRuby-Lint is a simple tool that allows you to check your project code
and configuration for common gotchas and issues that might make it
difficult to run your code on JRuby.## Usage
JRuby-Lint requires JRuby to run. So, [install JRuby first][install]
if you already haven't, then `gem install jruby-lint`.Then simply run `jrlint` in your project to receive a report of
places in your project where you should investigate further.## Checks
Here is a list of the current checks implemented:
- Report usage of ObjectSpace.each_object and ObjectSpace._id2ref
which are expensive and disabled by default
- Report usage of Thread.critical, which is discouraged in favor of a
plain Mutex.
- Report known gems and libraries that use C extensions and try to
provide known alternatives (Live data retrieved from https://github.com/jruby/jruby/wiki/C-Extension-Alternatives).
- Report usage of Kernel#fork (which does not work).
- Report behavior difference when using system('ruby'), which launches
the command in-process in a new copy of the interpreter for speed## Reports
JRuby-lint supports text and html reports. Run jrlint with the option --html
to generate an html report with the results.## TODO
Here is a list of checks and options we'd like to implement:
- Report on more threading and concurrency issues/antipatterns
- arr.each {|x| arr.delete(x) }
- Try to detect IO/File resource usage without blocks
- Check .gemspec files for extensions and extconf.rb for
#create_makefile and warn about compiliing C extensions
- Check whether Rails production.rb contains `config.threadsafe!`
- Detect ERB files and skip them, or...
- Detect ERB files and pre-process them to Ruby source with Erubis
- Detect Bundler gems that have a `platforms` qualifier and ignore
"platforms :ruby"
- Change to use jruby-parser
- Allow use of a comment marker to suppress individual checks### Further Down the Road
- Arbitrary method/AST search functionality
- Code rewriter: option to change code automatically where it's
feasible
- Revive or build an isit.jruby.org site for tracking
- Make JRuby-Lint submit results to tracking site based on lint passes
and/or test suite runs[install]: http://jruby.org/getting-started
## License
JRuby-Lint is Copyright (c) 2007-2013 The JRuby project, and is released
under a tri EPL/GPL/LGPL license. You can use it, redistribute it
and/or modify it under the terms of the:Eclipse Public License version 1.0
GNU General Public License version 2
GNU Lesser General Public License version 2.1See the file `LICENSE.txt` in distribution for details.