# Scan behaviour matrix

The scanner works using a plugin architecture, so each scanner plugin have different capabilities and requirements. However, there are conditions that need to be met in order to any scanner plugin to work correctly.&#x20;

Considering the following condition:

<table><thead><tr><th width="181">Condition</th><th>Explanation</th></tr></thead><tbody><tr><td><strong>Language</strong></td><td>The language implemented by the plugin</td></tr><tr><td><strong>Build Tool</strong></td><td>The build tool used in the codebase</td></tr><tr><td><strong>Valid build required?</strong></td><td>Do we need the build to execute and complete successfully?</td></tr><tr><td><strong>Tool required?</strong></td><td>Do we need to execute the build tool installed?</td></tr><tr><td><strong>Invalid dependency?</strong></td><td>What happens if the project includes an invalid/unreachable dependency?</td></tr></tbody></table>

These are the level of support provided and the corresponding behaviour of the scanner

| Language                                                                            | Build Tool   | Valid build required? | Tool required?     | Invalid dependency? |
| ----------------------------------------------------------------------------------- | ------------ | --------------------- | ------------------ | ------------------- |
| [C/C++](https://docs.meterian.io/languages-support/c++)                             | conan        | No (with lockfile)    | No                 | Complete            |
| [Clojure](https://docs.meterian.io/languages-support/clojure)                       | lein         | No                    | Yes                | Complete            |
| [Clojure](https://docs.meterian.io/languages-support/clojure)                       | clojure      | No                    | Yes                | Complete            |
| [Dart/Flutter](https://docs.meterian.io/languages-support/dart-flutter)             | dart         | No (with lockfile)    | No (with lockfile) | Complete            |
| [Elixir](https://docs.meterian.io/languages-support/elixir-erlang)                  | mix          | No (with lockfile)    | No (with lockfile) | Complete            |
| [Golang](https://docs.meterian.io/languages-support/golang)                         | go           | Yes                   | Yes                | Failure             |
| [Java](https://docs.meterian.io/languages-support/java)                             | gradle       | Yes                   | Yes                | Complete            |
| [Java](https://docs.meterian.io/languages-support/java)                             | mvn          | Yes                   | Yes                | Complete            |
| [Java](https://docs.meterian.io/languages-support/java)                             | ant (+ivy)   | No                    | No                 | Complete            |
| [Scala](https://docs.meterian.io/languages-support/java)                            | sbt          | Yes                   | Yes                | Failure             |
| [.NET](https://docs.meterian.io/languages-support/.net)                             | dotnet       | Yes                   | Yes                | Complete            |
| [.NET](https://docs.meterian.io/languages-support/.net)                             | paket        | No                    | No (with lockfile) | Complete            |
| [NodeJS](https://docs.meterian.io/languages-support/nodejs)                         | npm          | No (with lockfile)    | No (with lockfile) | Complete            |
| [NodeJS](https://docs.meterian.io/languages-support/nodejs)                         | pnpm         | No (with lockfile)    | No (with lockfile) | Complete            |
| [NodeJS](https://docs.meterian.io/languages-support/nodejs)                         | yarn         | No (with lockfile)    | No (with lockfile) | Complete            |
| [Perl](https://docs.meterian.io/languages-support/perl)                             | carton       | No (with lockfile)    | No (with lockfile) | Complete            |
| [PHP](https://docs.meterian.io/languages-support/php)                               | composer     | No (with lockfile)    | No (with lockfile) | Complete            |
| [Python](https://docs.meterian.io/languages-support/python)                         | pipenv       | No (with lockfile)    | No (with lockfile) | Complete            |
| [Python](https://docs.meterian.io/languages-support/python)                         | poetry       | No (with lockfile)    | No (with lockfile) | Complete            |
| [Python](https://docs.meterian.io/languages-support/python)                         | requirements | No                    | Yes                | Complete            |
| [R](https://docs.meterian.io/languages-support/r)                                   | R            | No (with lockfile)    | No (with lockfile) | Complete            |
| [Ruby](https://docs.meterian.io/languages-support/ruby)                             | bundle       | Yes                   | Yes                | Complete            |
| [Rust](https://docs.meterian.io/languages-support/rust)                             | cargo        | No (with lockfile)    | No (with lockfile) | Complete            |
| [Swift / Objective-C](https://docs.meterian.io/languages-support/swift-objective-c) | cocoapods    | No (with lockfile)    | Yes                | Failure             |
| [Swift / Objective-C](https://docs.meterian.io/languages-support/swift-objective-c) | SwiftPm      | No (with lockfile)    | No (with lockfile) | Failure             |
| [VanillaJS](https://docs.meterian.io/languages-support/vanilla)                     | none         | No                    | No                 | Complete            |
