Berkeley-Correctness-Group / DLint

Licence: other
Runtime checker for JS coding practices

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to DLint

allsafe
Intentionally vulnerable Android application.
Stars: ✭ 135 (+335.48%)
Mutual labels:  dynamic-analysis
Malware-Detection-Tools
A list of awesome malware detection tools
Stars: ✭ 30 (-3.23%)
Mutual labels:  dynamic-analysis
hakbot-origin-controller
Vendor-Neutral Security Tool Automation Controller (over REST)
Stars: ✭ 30 (-3.23%)
Mutual labels:  dynamic-analysis
guardrails
guardrails.cs.virginia.edu
Stars: ✭ 18 (-41.94%)
Mutual labels:  dynamic-analysis
talvos
Talvos is a dynamic-analysis framework and debugger for Vulkan/SPIR-V programs.
Stars: ✭ 67 (+116.13%)
Mutual labels:  dynamic-analysis
on-edge
A library for detecting certain improper uses of the "Defer, Panic, and Recover" pattern in Go programs
Stars: ✭ 84 (+170.97%)
Mutual labels:  dynamic-analysis
sortcheck
Tool for detecting violations of ordering axioms in qsort/bsearch callbacks.
Stars: ✭ 23 (-25.81%)
Mutual labels:  dynamic-analysis
Android-Malware-Detection
Android malware detection using static and dynamic analysis
Stars: ✭ 18 (-41.94%)
Mutual labels:  dynamic-analysis
phuzz
Find exploitable PHP files by parameter fuzzing and function call tracing
Stars: ✭ 53 (+70.97%)
Mutual labels:  dynamic-analysis
opem
OPEM (Open Source PEM Fuel Cell Simulation Tool)
Stars: ✭ 107 (+245.16%)
Mutual labels:  dynamic-analysis
libdft64
libdft for Intel Pin 3.x and 64 bit platform. (Dynamic taint tracking, taint analysis)
Stars: ✭ 174 (+461.29%)
Mutual labels:  dynamic-analysis
r2frida-book
The radare2 + frida book for Mobile Application assessment
Stars: ✭ 38 (+22.58%)
Mutual labels:  dynamic-analysis
DrCCTProf
DrCCTProf is a fine-grained call path profiling framework for binaries running on ARM and X86 architectures.
Stars: ✭ 81 (+161.29%)
Mutual labels:  dynamic-analysis
jitana
A graph-based static-dynamic hybrid DEX code analysis tool
Stars: ✭ 35 (+12.9%)
Mutual labels:  dynamic-analysis
mbsim
A multi-body simulation software
Stars: ✭ 22 (-29.03%)
Mutual labels:  dynamic-analysis
awesome-malware-analysis
Defund the Police.
Stars: ✭ 9,181 (+29516.13%)
Mutual labels:  dynamic-analysis
MsfMania
Python AV Evasion Tools
Stars: ✭ 388 (+1151.61%)
Mutual labels:  dynamic-analysis
Pin-ApiTracer
Updated version of ApiTracer Pin tool
Stars: ✭ 19 (-38.71%)
Mutual labels:  dynamic-analysis
ethereum-dasm
An ethereum evm bytecode disassembler and static/dynamic analysis tool
Stars: ✭ 121 (+290.32%)
Mutual labels:  dynamic-analysis
maloss
Towards Measuring Supply Chain Attacks on Package Managers for Interpreted Languages
Stars: ✭ 46 (+48.39%)
Mutual labels:  dynamic-analysis

DLint

Wiki | Configuring | Checkers | Develop | Mailing List | Homepage

DLint is a tool for dynamically checking JavaScript coding practices.

Briefly speaking, JSHint, JSLint and ESLint uses static analysis (scan the code) to find bad coding practices, while DLint uses dynamic analysis (by analysing runtime behavior) to do the detection.

By analyzing runtime information, DLint is capable of capturing violations of coding practices missed by those static analysis tools. (See an online demo of dynamic analysis.)

For more details, a Wiki page is available

Academic Resources: Preprint in ISSTA'15 | Slides | Technical Report | Bibtex

Requirements

Make sure that you have the following software installed (See more).

  • Latest version of Node.js.
  • Sun's JDK 1.6 or higher.
  • Command-line git.
  • Chrome browser if you need to test web apps.
  • Python (http://python.org) version 2.7 or higher

Note: This project currently only supports Mac OS 10+ (64bit).

Install DLint

Use the following command to install DLint:

mkdir dlint
cd dlint
git clone https://github.com/Berkeley-Correctness-Group/DLint.git
cd DLint
./scripts/install.sh

(A backup option is to manually install DLint.)

Use DLint

All following instructions assume that the cmd directory is the DLint git local repository.

Use DLint on Websites

Apply Dlint to a real-world website:

./scripts/dlint.sh <URL>

For example:

./scripts/dlint.sh www.sencha.com

Please do not interact with the DLint-started browser, DLint will automatically close the browser after analysis. When it is done, all executed files and analysis result will be dumped in websites\<URL> directory, in which analysis.json contains all DLint warnings.
(A step-by-step guide is available.)

To view the DLint results in GUI (modified noide file viewer), open a new terminal (under DLint repository dir) and type the following command:

node ../noide/bin/noide.js websites/

In browser, view the page with this URL: http://localhost:3000/editor


Use DLint on a Single File

Suppose there is a JS file tests/dlint/buggy_CheckNaN.js:

python scripts/dlint.py tests/dlint/buggy_CheckNaN

Warnings are written to console and jalangi_tmp/analysisResults.json.

Configure and Extend DLint

DLint framework is designed to easily add new dynamic analysis by adding a new file and overriding a few functions. (See More).

Try DLint on VirtualBox

If you do not have a Mac or Linux OS or a 64bit machine (or if you just want to try DLint without going through those installation steps), one option would be using DLint on a virtual machine. A step-by-step guide is available.

Download VirtualBox and DLint VirtualBox image (1.28GB, MD5: 1429e4a3bda83169b6ea195952c25c4e)

In the guest OS, open a terminal and type the following commands (or double click the bash script on the desktop):

cd ~/dlint/DLint
export PATH="`pwd`/scripts/path_unix":$PATH

Root password: 123
Guest OS: 64-bit Linux Ubuntu 12.04
VM Memory: 512M
VM Video Memory: 128M
Image Size: 4.7 GB
Maximal VM Virtual Disk Size: 20.30 GB

Citation

Please cite DLint in your publications if it helps your research:

@inproceedings{gong2015dlint,
 author = {Gong, Liang and Pradel, Michael and Sridharan, Manu and Sen, Koushik},
 title = {DLint: Dynamically Checking Bad Coding Practices in JavaScript},
 booktitle = {Proceedings of the 2015 International Symposium on Software Testing and Analysis},
 series = {ISSTA 2015},
 year = {2015}
} 
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].