Difference between revisions of "Learning Atlas"

From AtlasWiki
Jump to: navigation, search
(hide more TODOs)
 
(8 intermediate revisions by 3 users not shown)
Line 11: Line 11:
  
 
== Setup ==
 
== Setup ==
# [[Installing Atlas]]
 
 
# [[Atlas Preferences]]
 
# [[Atlas Preferences]]
 +
# [[Configuring C Projects]]
 
# [[Indexing Workspace]]
 
# [[Indexing Workspace]]
# [[Atlas Shell]]
 
 
# [[Toolbox Projects]]
 
# [[Toolbox Projects]]
 
# [[Troubleshooting]]
 
# [[Troubleshooting]]
  
 
== Program Analysis Basics ==
 
== Program Analysis Basics ==
 +
# [[Atlas Shell]]
 
# [[Basic Queries]]
 
# [[Basic Queries]]
# [[Attributes and Tags]]
 
 
# [[Common Queries]]
 
# [[Common Queries]]
 +
# [[Attributes and Tags]]
 
# [[Atlas Schema]]
 
# [[Atlas Schema]]
 
# [[Modifying the Universe]]
 
# [[Modifying the Universe]]
# [[Notable Features]]
+
<!-- # [[Notable Features]] -->
  
 
== Exercises ==
 
== Exercises ==
 
# [[Discovering Valid Java Main Methods]]
 
# [[Discovering Valid Java Main Methods]]
# [[Calculating Software Metrics]]
+
<!-- # [[Tracking Library Use]] -->
# [[Creating an Atlas Smart View]]
+
<!-- # [[Tracking Variables]] -->
# [[Performing Bulk Analysis]]
+
# [[Identifying Exotic Language Feature Usage]]
# [[Dealing with Program Analysis Obstacles]]
+
<!-- # [[Calculating Software Metrics]] -->
 +
<!-- # [[Creating an Atlas Smart View]] -->
 +
<!-- # [[Performing Bulk Analysis]] -->
 +
<!-- # [[Dealing with Program Analysis Obstacles]] -->
  
 
== Example Applications ==
 
== Example Applications ==
 
# [[Analyzing Android Permission Usage]]
 
# [[Analyzing Android Permission Usage]]

Latest revision as of 15:23, 15 October 2015

Atlas is a program analysis platform. At its core, Atlas uses a heterogeneous, attributed, directed graph data structure as an abstraction to represent the essential aspects of the program’s syntax and semantics (structure, control flow, and data flow), which are required to reason about software. Atlas constructs this graph from a set of software projects provided by the user. Atlas offers an expressive query language for users to write composable analyzers. Analyzers compute results in the form of subgraphs relevant to the query, which can be visualized. Based on the resulting subgraph, users can issue further queries, possibly involving information beyond specific program artifacts.

If none of that made any sense, don't worry! We will be taking it slow in this tutorial series and giving you a solid foundation to get started with Atlas.

This tutorial series was last tested with: Atlas 2.0.5.

Overview

This tutorial series is intended to get you up and running with Atlas. In these tutorials we will assume you have little to no experience in program analysis. If that's true then don't worry! You are about to learn just how powerful you can be when you wield a tool like Atlas! Before we get started, you will want to make sure you are decently familiar with the basic language features of Java. If not you might want to go brush up a bit before moving on to the next sections.

The sections below outline how to get Atlas installed and setup. Then we will be getting our hands dirty by jumping in and learning some program analysis concepts and how they translate to Atlas. Finally we take a look at a few practical applications of Atlas, which should give you some ideas of what you could use Atlas for yourself!

Setup

  1. Atlas Preferences
  2. Configuring C Projects
  3. Indexing Workspace
  4. Toolbox Projects
  5. Troubleshooting

Program Analysis Basics

  1. Atlas Shell
  2. Basic Queries
  3. Common Queries
  4. Attributes and Tags
  5. Atlas Schema
  6. Modifying the Universe

Exercises

  1. Discovering Valid Java Main Methods
  2. Identifying Exotic Language Feature Usage

Example Applications

  1. Analyzing Android Permission Usage