This file describes how the remaining efforts for writerfilter can be extracted from the source code. 1. Marking up the efforts in the code. Efforts are marked up in the code with comments like this: /* WRITERFILTERSTATUS: done: , planned: , spent: */ The comments have to follow a case-label immediately. Consecutive case-labels can be marked up, too. In the latter case the efforts are counted for the preceeding case-labels as a whole. 2. Extraction process 2.1. Stage 1: This stage is handled in status.sh. An XML-file is generated that contains a top level element . contains an element and several and elements. 2.1.1. Use analyzemodel.xsl to extract necessary data from model.xml. - Namespaces can be flagged with attribute @todo="ignore" to prevent the namespace being considered. - For every / an entry in an according element in is genereated. These elements look like this: Important for the extraction of efforts: @qname is the identifier used in case-labels in .cxx files and thus links the status mark up comments with elements/attributes in the model.xml. 2.1.2. Extract status information The variable SEARCHIN in status.sh determines in what directory the script will search for case labels and status comments. Only .cxx files are searched. Lines like this case NS_rtf::LN_UNUSED4: result in elements like this . Lines like this /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ result in elements like this The and elements are children of the element. The are inserted in the same order as found in the code. Therefore a element corresponds to the group of consecutive preceding elements. 2.2. Stage 2 In this stage analyzestage2.xsl is used on the result of stage 1 to group the and elements from stage 1. For each element a element is generated that contains the elements that the element refers to, plus the element. 2.3. Stage 3 This stage associates the and elements in model.xml with the extracted data. It uses analyzestage3.xsl on the result of stage 2 to do this. E.g. for given elements from stage 2: and the result of stage 3 will be @qname-count is the number of case-labels that the according mark-up comment refers to. 3. Collect efforts This is done by the script efforts.sh. It uses status.sh to extract the status and determines the efforts in two steps. 3.1. Choose which / elements need effort This stage uses todo.xsl on the result of 2.3. There are two criteria that imply effort: - The / is not handled in any file. - The status for the / declares that work is planned for it and less than 100 percent of this work is done. 3.2. Generate table of efforts in CSV format This stage uses effort.xsl on the results of 3.1. and produces the table of efforts. If there is no status defined for an / it is assumed that the planned effort is 0.5 hours and no work has been done.