Measuring Program Comprehension: A Large-Scale Field Study with Professionals
Lightweight Approach Uncover Technical Info Unstructured Data
1. A Lightweight Approach
to Uncover Technical
Information in
Unstructured Data
Nicolas Bettenburg, Bram Adams,Ahmed E. Hassan
Queen’s University, Kingston, ON
Michel Smidt
University of Bremen, Germany
1
3. The code after "if callback.isAcceleratorInUse
(SWT.ALT | character ) )" inside Eclipse's
MenuManager.java removes the mnemonic, but it seems
like Eclipse should be checking isAcceleratorInUse.
2
12. Past Solutions
Miler
Bacchelli et al. - ICSE’10,
ICPC’10
•Based on heuristics
•Classifies lines as source code
•Classifies documents as containing code
•Finds class names
7
13. Past Solutions
Miler
Bacchelli et al. - ICPC’10
infoZilla
Bettenburg et al. - MSR’08
•only specific kinds of technical information!
•new heuristics to extend (complex, error prone)
•for some kind of technical information, infeasible
8
14. More information:
The code after "if (callback.isAcceleratorInUse(SWT.ALT | character))" inside
Eclipse's MenuManager.java removes the mnemonic, but it seems like Eclipse
should be checking "isAcceleratorInUse" only for top level menumanagers like
File,Edit,...,Help, etc. :
/* (non-Javadoc)
* @see org.eclipse.jface.action.IContributionItem#update(java.lang.String)
*/
public void update(String property) {
IContributionItem items[] = getItems();
for (int i = 0; i < items.length; i++) {
items[i].update(property);
}
[...]
}
Any status on this bug?
I'd consider any contributions for M6 (API) or M7 (non-API) [...]
A 3.5 fix would be to make that behaviour optional in MenuManager with API and
off by default early in 3.5, and to have the WorkbenchActionBuilder contributed
MenuManagers and actionSets/editorActions contributed MenuManagers turn it on
(if I can find MenuManagers in the correct place).
9
15. More information:
The code after "if (callback.isAcceleratorInUse(SWT.ALT | character))" inside
Eclipse's MenuManager.java removes the mnemonic, but it seems like Eclipse
should be checking "isAcceleratorInUse" only for top level menumanagers like
File,Edit,...,Help, etc. :
/* (non-Javadoc)
* @see org.eclipse.jface.action.IContributionItem#update(java.lang.String)
*/
public void update(String property) {
IContributionItem items[] = getItems();
for (int i = 0; i < items.length; i++) {
items[i].update(property);
}
[...]
}
Any status on this bug?
I'd consider any contributions for M6 (API) or M7 (non-API) [...]
A 3.5 fix would be to make that behaviour optional in MenuManager with API and
off by default early in 3.5, and to have the WorkbenchActionBuilder contributed
MenuManagers and actionSets/editorActions contributed MenuManagers turn it on
(if I can find MenuManagers in the correct place).
9
16. More information:
The code after "if (callback.isAcceleratorInUse(SWT.ALT | character))" inside
Eclipse's MenuManager.java removes the mnemonic, but it seems like Eclipse
should be checking "isAcceleratorInUse" only for top level menumanagers like
File,Edit,...,Help, etc. :
/* (non-Javadoc)
* @see org.eclipse.jface.action.IContributionItem#update(java.lang.String)
*/
public void update(String property) {
IContributionItem items[] = getItems();
for (int i = 0; i < items.length; i++) {
items[i].update(property);
}
[...]
}
Any status on this bug?
I'd consider any contributions for M6 (API) or M7 (non-API) [...]
A 3.5 fix would be to make that behaviour optional in MenuManager with API and
off by default early in 3.5, and to have the WorkbenchActionBuilder contributed
MenuManagers and actionSets/editorActions contributed MenuManagers turn it on
(if I can find MenuManagers in the correct place).
Challenge!
9
18. A 3.5 fix would be to make taht behaviour optional in
MenuManager with API and off by default early in 3.5,
and to have the WorkbenchActionBuilder contributed
MenuManagers and actionSets/editorActions
contributed MenuManagers turn it on (if I can find
MenuManagers in the corect place).
11
19. A 3.5 fix would be to make taht behaviour optional in
MenuManager with API and off by default early in 3.5,
and to have the WorkbenchActionBuilder contributed
MenuManagers and actionSets/editorActions
contributed MenuManagers turn it on (if I can find
MenuManagers in the corect place).
12
20. A 3.5 fix would be to make taht behaviour optional in
MenuManager with API and off by default early in 3.5,
and to have the WorkbenchActionBuilder contributed
MenuManagers and actionSets/editorActions
contributed MenuManagers turn it on (if I can find
MenuManagers in the corect place).
Actual Spelling Mistakes!
13
27. Precision / Recall
Precision(Si) =
T PSi
T PSi
+F PSi
Recall(Si) =
T PSi
T PSi
+F NSi
TP = We annotated and tool annotated
FP = Tool annotated, we did not
FN = We annotated, tool did not
17
31. Comparison
Line-wise classification of source code
1 Launch the plugin as part of Eclipse IDE 3. Press Alt+H to
2 bring down the Help menu (to go along with our example in #1)
3
4 BUG: Notice "Software Updates" is missing its mnemonic.
5
6 public void update(String property) {
7 IContributionItem items[] = getItems();
8 for (int i = 0; i < items.length; i++) {
9 items[i].update(property);
10 }
11 }
12
13 Any status on this bug?
19
32. Comparison
Line-wise classification of source code
1 Launch the plugin as part of Eclipse IDE 3. Press Alt+H to
2 bring down the Help menu (to go along with our example in #1)
3
4 BUG: Notice "Software Updates" is missing its mnemonic.
5
6 public void update(String property) {
7 IContributionItem items[] = getItems();
8 for (int i = 0; i < items.length; i++) {
9 items[i].update(property);
10 }
11 }
12
13 Any status on this bug?
20