{"repo":"Betterment/claws","free":true,"listed":false,"github":"https://github.com/Betterment/claws","clone":"git clone https://github.com/Betterment/claws.git","description":"💅🏽 analyzes your github actions","language":"Ruby","stars":101,"topics":["github-actions","security","static-analysis"],"license":null,"category":"dev-tools","readme_excerpt":"Claws Claws is a static analysis tool to help you write safer Github Workflows. Inspired by rubocop and its def node matcher, Claws' rules are simple Ruby classes that contain expressions describing undesirable behaviors. These expressions (written in the equation expression language) are evaluated at each \"depth\" of a Github Workflow: Workflow, Job, Step. Any part of a Workflow that causes an expression to return true is surfaced to the user as a violation. Rules were designed to be straightforward to write. You do not need to write any application logic -- all you need is a single Equation expression to get started. These do not have to be static expressions either. As you write your expressions, you may find yourself wanting to yield some amount of configurability to the user of your rules. Claws, however, allows you to use variables in your expressions that are populated at runtime by whatever values the user provides. This is in contrast to common static analysis tools that achieve this by requiring custom application logic to different configuration values as edgecases. For Claws, this means instead of having to write Ruby code that handles parsing configuration options and branching based on those values, you can represent these as options from within your expression. While it's important to be able to easily write a Rule, it's just as important (if not more!) to write good tests for them. Like with Rubocop, Claws comes with a couple RSpec helpers that makes it easy to","default_branch":null,"files":null,"tree":[],"storefront":"/r/Betterment","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Betterment/claws/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}