Shopping Cart | Contact us | Partners | Customers

Rich Trees
Data Flow
Call Flow
Premium Browse
HTML Documentation
MISRA C Static Checking
Software Metrics
Intelligent Editor
Comment Generator

Understand code in less time with Crystal C/C++
View Demo
Crystal FLOW for C
Crystal FLOW for C++
Crystal REVS for C
Crystal REVS for C++
I love the software. It allowed me to decipher a program of 46,000 lines of spaghetti C code across 63 files. Your code-formatting is by far the best I have seen.
- P.Hart, Los-Angeles


Home Overview
Try Now 

An all round tool for design, review and maintenance
Whether you are integrating the project code or you have inherited
legacy code, Crystal tools will help you achieve significantly better
results in less time...

Click on the links below to view a few scenarios.

  Integrating and Testing
  Team Discussion to solve a design problem:
  Design change and Code modification
  Code Review
  When you inherit Legacy Code
  Clean-up existing code
  Editing in Crystal REVS
  Add Comments
  Tokens Panel and Phrase Window
Integrating and Testing Try Now     NEXT   TOP
You encounter an error :
A structure member is being corrupted somewhere in an unfamiliar function.
View the function's flowchart.
It helps you understand the function quickly.
It seems the structure member is being corrupted by a called function.
View the DataFlow of the structure-pointer in the called function
Go deeper by expanding function-calls in the DataFlow.
Two levels deep, you find the error.
DataFlow is a fast and effective tool to track data across many functions.
During integration testing, you get an error :
A long conditional expression looks suspect.
Ordinarily, the expression would be very hard to read.
With Crystal REVS' code-formatting, the expression is easy to read.
You immediately notice an incorrect sequence of parentheses.
Crystal's code formatting helps you find the bug easily.
Team Discussion to solve a design problem Try Now     PREVIOUS   NEXT   TOP
A global variable is used in the current function.
What other functions use or modify this global variable before the current function is called?
Create the call-tree of main( )
Display the tree-nodes in the order of function-call occurrences.
Use the Rich Tree feature:
Display the global variable's name alongside each tree-node that uses it.
In this Rich Tree, you can see:
- what functions are called before you get to the current function
- among those, which functions use the global variable in question
You are looking at a call-tree and you wish know:
a) Which members of a struct are used by the functions in the tree
Use the Rich Tree feature:
the struct members are displayed alongside the functions that use those struct members.
b) Which members of a specific instance of struct are used by the functions in the tree
Use the Rich Tree feature:
The members the given struct instance are displayed alongside the functions that use/modify them.
c) What parameters are required by each function in the call-tree?
Use the Rich Tree feature:
You can see the parameters displayed alongside each-node in the tree.
What are all the places where a particular flag is being set or reset?
View the list of "Modified Occurences" of that flag
Crystal REVS makes team-review focused and more productive
Design change and Code modification - a hierarchy of functions Try Now     PREVIOUS   NEXT   TOP
A high-level function and the call-tree under it
       together they perform a set of operations
How do you add a new operation?
Use the Rich Tree features:
In the call-tree, view the parameters required by each function along a call-sequence
To examine the use of a specific variable or any structure members in the functions:
Use Rich Tree to display the variable or structure members alongside the functions that use them
Then view the DataFlow of the variable or the structure member to see how it is used
With Rich Trees, you can swiftly examine and understand a hierarchy of functions GREP-based browsing is too slow!
Identify the data items that will be affected
Examine how those data items are used in the various functions
Plan your code changes
Use DataFlow to examine how the data items, #define's etc. are used
Your code modifications will be accurate and well planned
DataFlow combines the power of GREP, Flowcharts and information filtering into one efficient tool.
Better tools better results!
Create a Comment Trail
Use the Comment Trail Markers to describe a group or subgroup of code modifications
Leave a comment trail of the code changes
Understand why older changes were made
Code Review Try Now     PREVIOUS   NEXT   TOP
Understand the source code in advance of the code review
Project overview, CallFlow, Rich Trees, Flowcharts...
These unique tools will help you understand and gain familiarity with the code in advance of the code-review.
The participants do not struggle to understand the code.
Code reviews are far more productive!
Partitioning, function overview, etc.
Use CallFlow to review partitioning of tasks in a function
Use Rich Tree with comments to view the work accomplished by the functions
View the File call-tree to view the call relationship among the functions in a file
Review detailed logic
Use Flowchart to understand the detailed logic of a function
Use loop-flowcharts, switch flowcharts to Divide-and-Conquer very long functions in just a few minutes
View conditions that need to be true to get to the current line
Generate documentation for a faster and effective review
Export CallFlow to HTML for providing an overview
Export DataFlows of affected variables to HTML
Comment trails for documenting a group or subgroup of code modifications
HTML versions of CallFlow, DataFlow as well as Comment Trails make the code-review more productive.
When you inherit Legacy Code Try Now     PREVIOUS   NEXT   TOP
Use CallFlow to make a fast attack on main( ) or any high-level function
Find unused functions
You can view the control-flow of main( )
You can view the function-calls of main( )
You dig deeper - expand the function-calls and viewing the source code
Using the CallFlow, you can quickly learn about main( )
In no time you can understand the newly acquired code!
Get an overview of the Project
You can view the structures/classes in the project
You can view the root functions of the project
You can view the Project Call-tree
Or you can simply attack main( )
Crystal C/C++ provides several ways to know a project
You can choose the way you find most convenient!
Explore the call-tree of main( )
You can view the functions called in main( )
You can go to function-calls in the source code
You can go to function definitions
You can view the call-sequence from main( ) to any node
Documentation Try Now     PREVIOUS   NEXT   TOP
You need to discuss the project design with your team
Generate HTML documentation for understanding the design
Use flowcharts, call-trees, type-information and source code for detailed understanding
Use cross-reference to view where objects and functions are used
Use code-metrics and volume metrics to view complexity
Crystal C/C++ provides the most comprehensive documentation!
Your deadlines are fast approaching.
You need to review the project design with your client
Generate Online HTML documentation
Use the browser to go through documentation and discuss design changes
Use the exported flowcharts, CallFlows, trees, etc to understand the code-flow.
You accomplish design review without actually transferring code.
You beet the deadlines. Your client is happy!
Clean-up existing code Try Now     PREVIOUS   NEXT   TOP
Identify unused code and unused variables
Find unused functions
Find unused Global variables
Find unused local variables
Find unreachable code
Find Unused #includes too!
Identify the functions that are not used outside their files
Make such functions static !
Navigation Try Now     PREVIOUS   NEXT   TOP
Crystal C/C++ provides smart operations for quick navigation within a file or a project
With a single click, you can:
  Go to the outer indent - say, to the top of the loop.
  Skip deeper indents - go to the next case in a switch
  Go to an object's or function's declaration
  Go to an object's or function's definition
  From a [, {, or (, go to the matching ), }, ] and vice versa
  From a #if, #ifdef to the matching #else, #endif and vice versa
  Go to undeclared objects, unused objects, unmatched delimiters
And much more...
You modified code.
You are almost done and about to compile.
Before that, you want to revisit and review the modifications you made!
With a single click, you can:
  Go to line you modified after the current line
  Go to line you modified before the current line
  Track all modifications till your changes are done!
Crystal C/C++ tracks the changes for you.
You focus on design, no need to keep track of such changes manually
Browsing Try Now     PREVIOUS   NEXT   TOP
You are planning to use a variable in a new code addition
You want to see what values are being assigned to it!
Click on a button and view modified occurrences of that object.
Just by a simple click, you can view where all in the project the variable is being modified!
Editing in Crystal REVS Try Now     PREVIOUS   NEXT   TOP
While modifying code, you need to delete or condition out code
The code is within a compound statement
The code spans several lines or pages
Just go to the compound statement and fold it.
Now select it and perform the desired operation
A smart way to perform a lengthy operation!
And, you do it accurately, always!
Add Comments Try Now     PREVIOUS   NEXT   TOP
You have just written code for a new product feature.
Before integration, your Manager will review this code with you.
Before the review, you want to make sure that there are no errors in the code.
You also want to keep the time taken for review optimal.
Just go ahead and add comments with the Comments Panel
You can comment code rapidly - with just a few clicks
With commented code, reviews will be shorter.
Code maintenance is effortless!
You have just joined a team working on a large project.
You want to be at par with the other members of the team.
You need to understand the design & the code to be up to speed!
Comment the code you are handling with the comments panel.
Add high-level comments to the major blocks of a function.
View CallFlow to make a fast attack.
Create comment-flowcharts for deep understanding of the design.
Tokens Panel and Phrase Window Try Now     PREVIOUS   TOP
You are writing code.
You are about to enter a switch statement.
The switch statement contains several case labels.
You want to ensure that you do not miss out on any, or, there are no duplicates!
What do you do?
Use the Phrase Window to enter those cases!
Enter the switch statement and then the first case statement.
As soon as you do so, insert the remaining case labels with just a single click!
The basic case frame-work is ready in less than a minute.
You save several minutes to a few hours.
You are modifying pre-existing code.
Use the Tokens panel to enter new code. With just a few clicks, you can
  Enter the identifiers
  Enter operators
  Enter operators and identifiers sequence.
  Enter structure variable and member sequences.
  Enter phrases and existing sentences.
You enter code effortlessly.
There are no spelling errors.
There are no syntax errors.
The code is compliable in the first go!
You have just written a few new functions.
You want to use them now.
Before you use them you need to declare those functions in a header file!
Switch to the header file you want to declare those functions in.
The function prototypes will be presented in the phrase window.
Just click on them and enter them!
You were writing code.
You introduced a few new structure members and used them.
Now you want to declare those structure members.
Use the Tokens panel to declare such members.
Go to the structure in which those members are to be declared.
The members will be displayed in the tokens panel.
Click on them and declare them!
No copy-paste-switch-switch back sequence.
You save time. Try it yourself!
Try Now     TOP
  © Copyright 2024, SGV Sarc, All Rights Reserved. | Privacy Policy | Disclaimer | Sitemap