-
Couldn't load subscription status.
- Fork 25
Closed
Description
The goal of this Epic is to implement Data Flow Analysis technics for TypeCobol and Cobol.
- Dataflow analysis #627 Dataflow Analysis
A data flow graph is an augmented control flow graph with data flow information, such as information about variables' vividness: usage information of program variables.
This information is constructed to show which definitions of a program variable affect the uses of the variable.
We can answer two types of questions:
- Given a particular instruction in a program, what happens to the variables in the program before the control reaches that point in the program (ie what variable definitions can affect the calculations at that point)?
- Given a particular instruction in a program, what happens to program variables after the control leaves this point, (ie what variable uses can be affected by the definitions at this point)?
Activities
TypeCobol/Domain
Elaboration of semantic objects (A01)
- Register, represent and implement semantic domain objects (A01.T01) #1262 Register, represent and implement semantic domain objects (A01.T01)
Elaboration of the semantic domain (A02)
- Identify and Implement Syntactic and Semantic Observers Design Patterns. (A02.T01) #1263 Identify and Implement Syntactic and Semantic Observers Design Patterns. (A02.T01)
- Elaborate the semantic domain. (A02.T02) #1264 Elaborate the semantic domain. (A02.T02)
- Add COBOL symbol usages/modifiers to the semantic of Types #1520 Add COBOL symbol usages/modifiers to the semantic of Types
Control Flow Graph (CFG)
Data structures and Graphs (CFG) (A03)
- Implement the data structure of the CFG graph. (A03.T01) #1265 Implement the data structure of the CFG graph. (A03.T01)
CFG Development/Instruction Blocks. (A04)
- List all TypeCobol control instructions (A04.T01) #1266 List all TypeCobol control instructions (A04.T01)
- Build CFG Graphs from a TypeCobol Program (A04.T02) #1267 Build CFG Graphs from a TypeCobol Program (A04.T02)
CFG/GraphViz Visualization and Tests. (A05).
- Generate the .dot file of a CFG graph. (A05.T01) #1268 Generate the .dot file of a CFG graph. (A05.T01)
- Test CFG dot graphs and visualization. (A05.T02) #1269 Test CFG dot graphs and visualization. (A05.T02)
Data Flow Analysis (DFA)
Data structures and Graphs (DFG) (A06)
- Increase the CFG graph with data structures and fields for DFA. (A06.T01). #1270 Increase the CFG graph with data structures and fields for DFA. (A06.T01).
DFG and DFA Development. (A07)
- Identify TypeCobol instructions targeted by DFA. (A07.T01) #1271 Identify TypeCobol instructions targeted by DFA. (A07.T01)
- Apply the DFA algorithms. (A07.T02) #1272 Apply the DFA algorithms. (A07.T02)
DFG/GraphViz Visualization and Tests. (A08).
- Generate the .dot file of a DFG graph. (A08.T01) #1273 Generate the .dot file of a DFG graph. (A08.T01)
- Test DFG dot graphs and visualization. (A08.T02) #1274 Test DFG dot graphs and visualization. (A08.T02)
DFA in Practice
Identification of the target modules of a CALL. (A09)
- Identify the modules called by a CALL statement. (A09.T01) #1275 Identify the modules called by a CALL statement. (A09.T01)
CFG/DFA TypeCobol Tests. (A10)
- Write CFG and DFA test sets for TypeCobol. (A10.T01) #1276 Write CFG and DFA test sets for TypeCobol. (A10.T01)
CFG/DFA Qualification Bugs
- CFG Ignore EXEC SQL Statement Out of PROCEDURE DIVISION #1501 CFG Ignore EXEC SQL Statement Out of PROCEDURE DIVISION
- CFG/DFA Check behaviour with no PROCEDURE DIVISION #1502 CFG/DFA Check behaviour with no PROCEDURE DIVISION