{"id":13747551,"url":"https://github.com/codegram/pelusa","last_synced_at":"2025-05-09T09:30:24.859Z","repository":{"id":2468242,"uuid":"3440661","full_name":"codegram/pelusa","owner":"codegram","description":"Static analysis Lint-type tool to improve your OO Ruby code","archived":false,"fork":false,"pushed_at":"2015-01-07T08:28:13.000Z","size":275,"stargazers_count":439,"open_issues_count":0,"forks_count":17,"subscribers_count":18,"default_branch":"master","last_synced_at":"2024-11-15T21:34:24.627Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://codegram.github.com/pelusa","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codegram.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-02-14T14:52:05.000Z","updated_at":"2024-10-05T16:03:09.000Z","dependencies_parsed_at":"2022-08-21T00:50:49.729Z","dependency_job_id":null,"html_url":"https://github.com/codegram/pelusa","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegram%2Fpelusa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegram%2Fpelusa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegram%2Fpelusa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegram%2Fpelusa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codegram","download_url":"https://codeload.github.com/codegram/pelusa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253226224,"owners_count":21874294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T06:01:33.278Z","updated_at":"2025-05-09T09:30:24.478Z","avatar_url":"https://github.com/codegram.png","language":"Ruby","readme":"# pelusa - /pe 'lu sa/ [![Build Status](https://secure.travis-ci.org/codegram/pelusa.png)](http://travis-ci.org/codegram/pelusa) [![Dependency Status](https://gemnasium.com/codegram/pelusa.png)](https://gemnasium.com/codegram/pelusa)\n## A Ruby Lint to improve your OO skills\n\nPelusa is a static analysis tool and framework to inspect your code style and\nnotify you about possible red flags or missing best practices.\n\nAbove all pelusa _doesn't run your code_ -- it just analyzes it syntactically\nto gain superficial insights about it, and raise red flags when needed.\n\nPelusa needs [Rubinius](http://rubini.us) to run, due to how easy it is to work\nwith a Ruby AST with it, but it doesn't mean that your Ruby code must run on\nRubinius. Since it's a static analysis tool, pelusa doesn't care what your code\nruns on, it just looks at it and tells you stuff.\n\nHere's a sample of pelusa linting on its own code base:\n\n![](http://f.cl.ly/items/3Z341M0q2u1K242m0144/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202012-02-14%20%D0%B2%203.29.38%20PM.png)\n\n## Why Pelusa?\n\nPelusa happens to be Spanish for the word \"Lint\". Yeah, I couldn't believe it\neither.\n\n## Installation and usage\n\n    rvm use rbx\n    gem install pelusa\n\nTo run pelusa, you must run Rubinius in 1.9 mode. To do this, export this\nenvironment variable:\n\n    export RBXOPT=-X19\n\nThen go to a directory where you have some Ruby code, and type this:\n\n    pelusa path/to/some_file.rb\n\nOr just run all the Ruby files (`**/*.rb`) without arguments:\n\n    pelusa\n\n## Configuration\n\nYou can use per-project configurations as per which lints to use and their\nconfigurations. Just put a `.pelusa.yml` file the root directory of your\nproject, like this:\n\n    sources: lib/**/*.rb\n    lints:\n      InstanceVariables:\n        limit: 5\n      LineRestriction:\n        limit: 80\n        exclude:\n          - SomeClass\n      Properties:\n        enabled: false\n\nThis allows you to disable lints, configure their variables, and exclude some\nclasses from being analyzed by certain lints.\n\n## About the default set of Lints\n\nThis project was born as an inspiration from [one of our Monday\nTalks](http://talks.codegram.com/object-oriented-nirvana) about Object Oriented\nNirvana by [@oriolgual](http://twitter.com/oriolgual). After reading [this blog\npost](http://binstock.blogspot.com/2008/04/perfecting-oos-small-classes-and-short.html)\nhe prepared his talk and I ([@txustice](http://twitter.com/txustice)) found it interesting, so I explored the\npossibility of programmatically linting these practices on a Ruby project. This\n*doesn't mean* that any of us thinks these are the true and only practices of\nObject Orientation, it's just a set of constraints that are fun to follow to\nachieve a mindset shift in the long run.\n\nAnyway, you are always free to implement your own lints, or the ones that suit\nyour team the best.\n\n## Pelusa as a static analysis framework\n\nWith Pelusa, writing your own lints becomes very easy. Check out some of the\ndefault lints under the `lib/pelusa/lint/` directory.\n\nAt some point it will be user-extendable by default, but for now you are better\noff forking the project and adding your own lints as you need them in your team\n(or removing some default ones you don't like).\n\n## Special mentions\n\nThe beautiful UTF-8 flowers before each lint ran are taken from [Testosterone](http://github.com/masylum/testosterone),\na project by [@masylum](http://twitter.com/masylum). They're really beautiful,\nthanks!!!\n\n## Contributing\n\nYou can easily contribute to Pelusa. Its codebase is simple and\n[extensively documented][documentation].\n\n* Fork the project.\n* Make your feature addition or bug fix.\n* Add specs for it. This is important so we don't break it in a future\n  version unintentionally.\n* Commit, do not mess with rakefile, version, or history.\n  If you want to have your own version, that is fine but bump version\n  in a commit by itself I can ignore when I pull.\n* Send me a pull request. Bonus points for topic branches.\n\n[documentation]: http://rubydoc.info/github/codegram/pelusa/master/frames\n\n## License\n\nMIT License. Copyright 2011 [Codegram Technologies](http://codegram.com)\n\n","funding_links":[],"categories":["Ruby","Programming Languages"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodegram%2Fpelusa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodegram%2Fpelusa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodegram%2Fpelusa/lists"}