All Projects → yinwang0 → Rubysonar

yinwang0 / Rubysonar

an advanced semantic indexer for Ruby

Programming Languages

java
68154 projects - #9 most used programming language
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Rubysonar

PhpCodeAnalyzer
PhpCodeAnalyzer scans codebase and analyzes which non-built-in php extensions used
Stars: ✭ 91 (-48%)
Mutual labels:  static-analysis, code-analysis
Credo
A static code analysis tool for the Elixir language with a focus on code consistency and teaching.
Stars: ✭ 4,144 (+2268%)
Mutual labels:  static-analysis, code-analysis
static-code-analysis-plugin
A plugin to simplify Static Code Analysis on Gradle. Not restricted to, but specially useful, in Android projects, by making sure all analysis can access the SDK classes.
Stars: ✭ 36 (-79.43%)
Mutual labels:  static-analysis, code-analysis
Forbidden Apis
Policeman's Forbidden API Checker
Stars: ✭ 216 (+23.43%)
Mutual labels:  static-analysis, code-analysis
Spoon
Spoon is a metaprogramming library to analyze and transform Java source code (up to Java 15). 🥄 is made with ❤️, 🍻 and ✨. It parses source files to build a well-designed AST with powerful analysis and transformation API.
Stars: ✭ 1,078 (+516%)
Mutual labels:  static-analysis, code-analysis
Larastan
⚗️ Adds code analysis to Laravel improving developer productivity and code quality.
Stars: ✭ 3,554 (+1930.86%)
Mutual labels:  static-analysis, code-analysis
Pmd
An extensible multilanguage static code analyzer.
Stars: ✭ 3,667 (+1995.43%)
Mutual labels:  static-analysis, code-analysis
Wotan
Pluggable TypeScript and JavaScript linter
Stars: ✭ 271 (+54.86%)
Mutual labels:  static-analysis, code-analysis
Pysonar2
PySonar2: an advanced semantic indexer for Python
Stars: ✭ 1,074 (+513.71%)
Mutual labels:  static-analysis, code-analysis
Php Language Server
PHP Implementation of the VS Code Language Server Protocol 🆚↔🖥
Stars: ✭ 1,019 (+482.29%)
Mutual labels:  static-analysis, code-analysis
Spotbugs
SpotBugs is FindBugs' successor. A tool for static analysis to look for bugs in Java code.
Stars: ✭ 2,569 (+1368%)
Mutual labels:  static-analysis, code-analysis
Find Sec Bugs
The SpotBugs plugin for security audits of Java web applications and Android applications. (Also work with Kotlin, Groovy and Scala projects)
Stars: ✭ 1,748 (+898.86%)
Mutual labels:  static-analysis, code-analysis
Bodyclose
Analyzer: checks whether HTTP response body is closed and a re-use of TCP connection is not blocked.
Stars: ✭ 181 (+3.43%)
Mutual labels:  static-analysis, code-analysis
swap-detector
A library for detecting swapped arguments in function calls, and a Clang Static Analyzer plugin used to demonstrate the library.
Stars: ✭ 19 (-89.14%)
Mutual labels:  static-analysis, code-analysis
Eslint Plugin Sonarjs
SonarJS rules for ESLint
Stars: ✭ 458 (+161.71%)
Mutual labels:  static-analysis, code-analysis
Radon
Various code metrics for Python code
Stars: ✭ 1,193 (+581.71%)
Mutual labels:  static-analysis, code-analysis
Nodejsscan
nodejsscan is a static security code scanner for Node.js applications.
Stars: ✭ 1,874 (+970.86%)
Mutual labels:  static-analysis, code-analysis
Perl Critic
The leading static analyzer for Perl. Configurable, extensible, powerful.
Stars: ✭ 149 (-14.86%)
Mutual labels:  static-analysis
Phpstan Deprecation Rules
PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.
Stars: ✭ 160 (-8.57%)
Mutual labels:  static-analysis
Ts Morph
TypeScript Compiler API wrapper for static analysis and programmatic code changes.
Stars: ✭ 2,384 (+1262.29%)
Mutual labels:  static-analysis

RubySonar - an advanced semantic indexer for Ruby

RubySonar is a semantic indexer for Ruby, which does interprocedural analysis to infer types. It is one of the underlying technologies that powers the code search site Sourcegraph.

RubySonar is modeled after PySonar2, which does a similar analysis for Python and has been in use by Sourcegraph and Google. To understand its technical properties, please refer to my blog posts:

Demo

How to build

mvn package

System Requirements

  • irb

RubySonar uses the irb interpreter to parse Ruby code, so please make sure you have it installed and pointed to by the PATH environment variable.

How to use

RubySonar is mainly designed as a library for IDEs and other developer tools, so its interface may not be as appealing as an end-user tool, but for your understanding of the library's capabilities, a reasonably nice demo program has been built.

You can build a simple "code-browser" of your ruby code with the following command line:

java -jar target/rubysonar-0.1-SNAPSHOT.jar /path/to/project ./html

This will take a few minutes. You should find some interactive HTML files inside the html directory after this process.

License (BSD Style)

RubySonar - an advanced semantic indexer for Ruby

Copyright (c) 2013-2019 Yin Wang

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].