V 1.2.4
This app extracts features from source code files.
This project is part of the Guardjs organization.
This application has a command line interface thanks to "yargs".
Simply extacts features from an string and save them as a "csv" file.
It is for getting these specific features from js files, but thanks to beautiful architecture of this app and it's designer (me), it has the capability to easily reduce or increase a feature model to the feature set.
- install requisites by
npm i - use
$ node app --helpcommand to get helped with this app - app works with
servecommand like$ node app serve >>resultfile
$ node app feature >>result/1.csvto show just a the feature set$ node app serve >>result/1.csvit should work totally
$ node app serve --directory="$workspace\samples" >>result/1.csv$ node app serve -d="$workspace\samples" >>result/1.csv
Attention: the order of features are by the order of files of feature-model that the app uses and the order of features here isn't a default order! THERE'S NOT ANY ORDER
| no. | feature | description |
|---|---|---|
| 1 | eval | The number of eval |
| 2 | setTimeout | The number of setTimeout |
| 3 | iframe | The number of strings containing “iframe” |
| 4 | unescape | The number of unescape |
| 5 | escape | The number of escape |
| 6 | classid | The number of classid |
| 7 | parseInt | The number of parseInt |
| 8 | fromCharCode | The number of fromCharCode |
| 9 | ActiveXObject | The number of ActiveXObject |
| 10 | strDirect | The number of directly string assignments |
| 11 | concat | The number of concat |
| 12 | indexOf | The number of indexOf |
| 13 | substring | The number of substring |
| 14 | replace | The number of replace |
| 15 | document.addEventListener | The number of document.addEventListener |
| 16 | attachEvent | The number of attachEvent |
| 17 | createElement | The number of createElement |
| 18 | getElementById | The number of getElementById |
| 19 | document.write | The number of document.write |
| 20 | words | The number of words in JavaScript |
| 21 | keywords | The number of JavaScript keywords |
| 22 | chars | The number of characters in JavaScript |
| 23 | keyOnWords | The ratio between keywords and words |
| 24 | wordperline | The entropy of the script as a whole |
| 25 | longest | The length of the longest JavaScript word |
| 26 | longer200 | The number of long strings(> 200) characters |
| 27 | shortstring | The length of the shortest JavaScript word |
| 28 | wordperlongline | The entropy of the longest JavaScript word |
| 29 | space | The number of blank spaces in the JavaScript |
| 30 | avg | Average length of words in the JavaScript |
| 31 | hexvalue | The number of hex values in the javascript |
| 32 | utfvalue | The number of utf values in the JavaScript |
| 33 | vertexes | The number of vertexes |
| 34 | Largest | label The length of longest label of a vertex |
| 35 | edges | The number of edge |
| 36 | Largest | degree The most degree of a vertex |
| 37 | E/V | Ratio number of edges on vertexes |
| 38 | Loop | The number of loops in graph |
| 39 | longestLoop | The length of longest loop |
| 40 | condition | The number of condition branch |
| 41 | exEdge | The number of edges of exceptions |
| 42 | exEdge/edges | Ratio number of exception edges on all edges |
| 43 | strVertex | The number of vertexes with string assignment |
app folder contains feature-models.
middleware folder is for some initializing and some functionality provided in the way to do the main job.
app.js file is the main process of the algorithem! I tried to make it simple and readable :)).
.
+-- - app
| +-- - syntax
| +-- index.js # this will handle all suntax features
| +-- + rgxPatternCounter # the models inside this folder are simple regex functions
| +-- + common
| +-- - graph
| +-- + common
| +-- index.js
+-- - interface # commands going here
| +-- serve.js
| +-- list.js
| +-- count.js
| +-- index.js
+-- app.js
Don't hesitate to contact me about this project
me on github
email me
me on telegram (fast way)