Overview
|
|
Home
Products
Crystal FLOW
Overview |
Try Now |
|
|
|
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 FLOW' 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. |
|
|
|
|
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 FLOW makes team-review focused and more productive |
|
|
|
|
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!
|
|
|
|
Comment Trail Marker |
|
|
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 |
|
|
|
|
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. |
|
|
|
|
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 |
|
|
|
|
|
|
|
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! |
|
|
|
|
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 ! |
|
|
|
|
|
|
|
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 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! |
|
|
|
Try Now
TOP
|