Plato js

... or not ...

What it can do

Visualize JavaScript source complexity with plato.

eslint or jshint

How to install & use

npm install -g plato

plato [options] -d <output_dir> <input files>
  -h, --help
      Display this help text.
  -q, --quiet
      Reduce output to errors only
  -v, --version
      Print the version.
  -x, --exclude : String
      File exclusion regex
  -d, --dir : String *required*
      The output directory
  -r, --recurse
      Recursively search directories
  -l, --jshint : String
      Specify a jshintrc file for JSHint linting
  -e, --eslint : String
      Specify a eslintrc file for ESLint linting
  -t, --title : String
      Title of the report
  -D, --date : String
      Time to use as the report date (seconds, > 9999999999 assumed to be ms)
  -n, --noempty
      Skips empty lines from line count
plato -r -d report -l .jshintrc -t "My Awesome App" -x .json routes/*.js

Demo

... let's see what it can/can't do

Conclusion

  • we need a tool that is aware of HTML and the DOM object (Browser API)
  • we need a tool that can fallow the flow of data inside the application
  • looking for use of eval is not a security check.
  • a tool that is able to analyse code on a contextual base;

https://dc414.org/wp-content/uploads/2011/01/RAW14252USEN.pdf

DOMinator           https://github.com/wisec/DOMinator

Pablo

By Stefan Hagiu