Overview
|
|
Home
Products
Crystal REVS
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 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. |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
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 beat 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 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 |
|
|
|
|
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! |
|
|
|
|
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! |
|
|
|
|
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. |
|
|
|
|
|
|
|
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
|