Global Metrics
path: .metrics.halstead.N2
old: 53.0
new: 1075.0
path: .metrics.halstead.bugs
old: 0.19986995491515233
new: 3.7003774266399105
path: .metrics.halstead.level
old: 0.050314465408805034
new: 0.017700996677740864
path: .metrics.halstead.n2
old: 24.0
new: 333.0
path: .metrics.halstead.volume
old: 738.7474869206902
new: 20703.731991262484
path: .metrics.halstead.N1
old: 84.0
new: 1354.0
path: .metrics.halstead.n1
old: 18.0
new: 35.0
path: .metrics.halstead.length
old: 137.0
new: 2429.0
path: .metrics.halstead.effort
old: 14682.606302548718
new: 1169636.510767644
path: .metrics.halstead.purity_ratio
old: 1.3510784674691192
new: 1.2226669007113231
path: .metrics.halstead.time
old: 815.7003501415954
new: 64979.806153758
path: .metrics.halstead.vocabulary
old: 42.0
new: 368.0
path: .metrics.halstead.difficulty
old: 19.875
new: 56.493993993994
path: .metrics.halstead.estimated_program_length
old: 185.09775004326937
new: 2969.857901827804
path: .metrics.nargs.average
old: 1.25
new: 0.8636363636363636
path: .metrics.nargs.sum
old: 5.0
new: 19.0
path: .metrics.cyclomatic.sum
old: 7.0
new: 72.0
path: .metrics.cyclomatic.average
old: 1.4
new: 4.5
path: .metrics.nexits.average
old: 0.75
new: 1.181818181818182
path: .metrics.nexits.sum
old: 3.0
new: 26.0
path: .metrics.mi.mi_sei
old: 62.04033857380217
new: 20.729298852505224
path: .metrics.mi.mi_visual_studio
old: 43.56373106190105
new: 44.84745362918076
path: .metrics.mi.mi_original
old: 74.4939801158508
new: 76.68914570589911
path: .metrics.loc.ploc
old: 27.0
new: 423.0
path: .metrics.loc.blank
old: 8.0
new: 0.0
path: .metrics.loc.lloc
old: 11.0
new: 176.0
path: .metrics.loc.sloc
old: 42.0
new: 5.0
path: .metrics.loc.cloc
old: 7.0
new: 71.0
path: .metrics.cognitive.average
old: 0.5
new: 2.863636363636364
path: .metrics.cognitive.sum
old: 2.0
new: 63.0
path: .metrics.nom.closures
old: 0.0
new: 6.0
path: .metrics.nom.total
old: 4.0
new: 22.0
path: .metrics.nom.functions
old: 4.0
new: 16.0
Spaces Data
Minimal test - lines (184, 222)
path: .spaces[1].metrics.cyclomatic.sum
old: 2.0
new: 6.0
path: .spaces[1].metrics.cyclomatic.average
old: 2.0
new: 6.0
path: .spaces[1].metrics.loc.sloc
old: 11.0
new: 39.0
path: .spaces[1].metrics.loc.cloc
old: 0.0
new: 2.0
path: .spaces[1].metrics.loc.ploc
old: 10.0
new: 27.0
path: .spaces[1].metrics.loc.blank
old: 1.0
new: 10.0
path: .spaces[1].metrics.loc.lloc
old: 5.0
new: 23.0
path: .spaces[1].metrics.mi.mi_visual_studio
old: 60.80589051705116
new: 44.92156551934133
path: .spaces[1].metrics.mi.mi_sei
old: 74.51143769369192
new: 52.91550153147877
path: .spaces[1].metrics.mi.mi_original
old: 103.97807278415748
new: 76.81587703807367
path: .spaces[1].metrics.halstead.estimated_program_length
old: 71.54887502163469
new: 197.27008269763
path: .spaces[1].metrics.halstead.difficulty
old: 11.333333333333334
new: 15.23076923076923
path: .spaces[1].metrics.halstead.volume
old: 206.43891887060175
new: 622.3752045246518
path: .spaces[1].metrics.halstead.time
old: 129.98006002963814
new: 526.6251730593208
path: .spaces[1].metrics.halstead.length
old: 47.0
new: 114.0
path: .spaces[1].metrics.halstead.bugs
old: 0.05874599141515827
new: 0.1493005789860304
path: .spaces[1].metrics.halstead.effort
old: 2339.6410805334867
new: 9479.253115067771
path: .spaces[1].metrics.halstead.vocabulary
old: 21.0
new: 44.0
path: .spaces[1].metrics.halstead.level
old: 0.08823529411764705
new: 0.06565656565656566
path: .spaces[1].metrics.halstead.N2
old: 17.0
new: 44.0
path: .spaces[1].metrics.halstead.n2
old: 9.0
new: 26.0
path: .spaces[1].metrics.halstead.N1
old: 30.0
new: 70.0
path: .spaces[1].metrics.halstead.n1
old: 12.0
new: 18.0
path: .spaces[1].metrics.halstead.purity_ratio
old: 1.5223164898220145
new: 1.7304393219090353
path: .spaces[1].metrics.nargs.sum
old: 2.0
new: 1.0
path: .spaces[1].metrics.nargs.average
old: 2.0
new: 1.0
path: .spaces[1].metrics.cognitive.average
old: 1.0
new: 2.0
path: .spaces[1].metrics.cognitive.sum
old: 1.0
new: 2.0
path: .spaces[1].metrics.nexits.average
old: 0.0
new: 1.0
path: .spaces[1].metrics.nexits.sum
old: 0.0
new: 1.0
Code
nsresult nsFilePicker::Show(int16_t* retval) {
NS_ENSURE_ARG_POINTER(retval);
*retval = returnCancel;
int16_t userClicksOK = returnCancel;
mFiles.Clear();
nsCOMPtr theFile;
// Note that GetLocalFolder shares a lot of code with GetLocalFiles.
// Could combine the functions and just pass the mode in.
switch (mMode) {
case modeOpen:
userClicksOK = GetLocalFiles(false, mFiles);
break;
case modeOpenMultiple:
userClicksOK = GetLocalFiles(true, mFiles);
break;
case modeSave:
userClicksOK = PutLocalFile(getter_AddRefs(theFile));
break;
case modeGetFolder:
userClicksOK = GetLocalFolder(getter_AddRefs(theFile));
break;
default:
NS_ERROR("Unknown file picker mode");
break;
}
if (theFile) mFiles.AppendObject(theFile);
*retval = userClicksOK;
return NS_OK;
}
Minimal test - lines (93, 93)
path: .spaces[0].metrics.loc.blank
old: 2.0
new: 0.0
path: .spaces[0].metrics.loc.lloc
old: 3.0
new: 1.0
path: .spaces[0].metrics.loc.ploc
old: 7.0
new: 1.0
path: .spaces[0].metrics.loc.cloc
old: 1.0
new: 0.0
path: .spaces[0].metrics.loc.sloc
old: 10.0
new: 1.0
path: .spaces[0].metrics.nargs.sum
old: 1.0
new: 2.0
path: .spaces[0].metrics.nargs.average
old: 1.0
new: 2.0
path: .spaces[0].metrics.nexits.average
old: 1.0
new: 0.0
path: .spaces[0].metrics.nexits.sum
old: 1.0
new: 0.0
path: .spaces[0].metrics.mi.mi_visual_studio
old: 62.41797731944472
new: 87.29022293215277
path: .spaces[0].metrics.mi.mi_original
old: 106.73474121625048
new: 149.26628121398124
path: .spaces[0].metrics.mi.mi_sei
old: 102.01526168899257
new: 139.7466915467399
path: .spaces[0].metrics.halstead.vocabulary
old: 17.0
new: 15.0
path: .spaces[0].metrics.halstead.N2
old: 14.0
new: 7.0
path: .spaces[0].metrics.halstead.length
old: 40.0
new: 16.0
path: .spaces[0].metrics.halstead.volume
old: 163.49851365001356
new: 62.5102495297363
path: .spaces[0].metrics.halstead.effort
old: 2098.230925175174
new: 328.1788100311156
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.33908807023343
new: 2.752443751081734
path: .spaces[0].metrics.halstead.bugs
old: 0.05463206306742344
new: 0.015859364080294203
path: .spaces[0].metrics.halstead.difficulty
old: 12.833333333333334
new: 5.25
path: .spaces[0].metrics.halstead.estimated_program_length
old: 53.5635228093372
new: 44.039100017307746
path: .spaces[0].metrics.halstead.level
old: 0.07792207792207792
new: 0.1904761904761905
path: .spaces[0].metrics.halstead.time
old: 116.56838473195413
new: 18.232156112839753
path: .spaces[0].metrics.halstead.N1
old: 26.0
new: 9.0
path: .spaces[0].metrics.halstead.n1
old: 11.0
new: 9.0
path: .spaces[0].metrics.cyclomatic.average
old: 2.0
new: 1.0
path: .spaces[0].metrics.cyclomatic.sum
old: 2.0
new: 1.0
path: .spaces[0].metrics.cognitive.sum
old: 1.0
new: 0.0
path: .spaces[0].metrics.cognitive.average
old: 1.0
new: 0.0
Code
void nsFilePicker::InitNative(nsIWidget* aParent, const nsAString& aTitle) { mTitle = aTitle; }
Minimal test - lines (224, 255)
path: .spaces[2].metrics.halstead.time
old: 77.03436650609419
new: 387.86212492828327
path: .spaces[2].metrics.halstead.volume
old: 151.26748332105768
new: 620.5793998852532
path: .spaces[2].metrics.halstead.purity_ratio
old: 1.9023735090854592
new: 1.821328113295428
path: .spaces[2].metrics.halstead.N1
old: 20.0
new: 68.0
path: .spaces[2].metrics.halstead.effort
old: 1386.6185971096954
new: 6981.518248709099
path: .spaces[2].metrics.halstead.bugs
old: 0.04144925786004325
new: 0.1217620628001556
path: .spaces[2].metrics.halstead.vocabulary
old: 20.0
new: 45.0
path: .spaces[2].metrics.halstead.estimated_program_length
old: 66.58307281799108
new: 205.81007680238335
path: .spaces[2].metrics.halstead.length
old: 35.0
new: 113.0
path: .spaces[2].metrics.halstead.N2
old: 15.0
new: 45.0
path: .spaces[2].metrics.halstead.n1
old: 11.0
new: 15.0
path: .spaces[2].metrics.halstead.n2
old: 9.0
new: 30.0
path: .spaces[2].metrics.halstead.level
old: 0.1090909090909091
new: 0.08888888888888889
path: .spaces[2].metrics.halstead.difficulty
old: 9.166666666666666
new: 11.25
path: .spaces[2].metrics.cognitive.average
old: 0.0
new: 1.0
path: .spaces[2].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[2].metrics.cyclomatic.average
old: 1.0
new: 2.0
path: .spaces[2].metrics.cyclomatic.sum
old: 1.0
new: 2.0
path: .spaces[2].metrics.loc.cloc
old: 0.0
new: 1.0
path: .spaces[2].metrics.loc.ploc
old: 6.0
new: 24.0
path: .spaces[2].metrics.loc.blank
old: 0.0
new: 7.0
path: .spaces[2].metrics.loc.lloc
old: 2.0
new: 6.0
path: .spaces[2].metrics.loc.sloc
old: 6.0
new: 32.0
path: .spaces[2].metrics.nargs.average
old: 1.0
new: 2.0
path: .spaces[2].metrics.nargs.sum
old: 1.0
new: 2.0
path: .spaces[2].metrics.mi.mi_original
old: 115.64443824983816
new: 80.95567987515084
path: .spaces[2].metrics.mi.mi_sei
old: 91.24062543682322
new: 54.819686970261934
path: .spaces[2].metrics.mi.mi_visual_studio
old: 67.62832646189366
new: 47.3425028509654
Code
static void UpdatePanelFileTypes(NSOpenPanel* aPanel, NSArray* aFilters) {
// If we show all file types, also "expose" bundles' contents.
[aPanel setTreatsFilePackagesAsDirectories:!aFilters];
[aPanel setAllowedFileTypes:aFilters];
}
@implementation NSPopUpButtonObserver
- (void)setPopUpButton:(NSPopUpButton*)aPopUpButton {
mPopUpButton = aPopUpButton;
}
- (void)setOpenPanel:(NSOpenPanel*)aOpenPanel {
mOpenPanel = aOpenPanel;
}
- (void)setFilePicker:(nsFilePicker*)aFilePicker {
mFilePicker = aFilePicker;
}
- (void)menuChangedItem:(NSNotification*)aSender {
NS_OBJC_BEGIN_TRY_BLOCK_RETURN;
int32_t selectedItem = [mPopUpButton indexOfSelectedItem];
if (selectedItem < 0) {
return;
}
mFilePicker->SetFilterIndex(selectedItem);
UpdatePanelFileTypes(mOpenPanel, mFilePicker->GetFilterList());
NS_OBJC_END_TRY_BLOCK_RETURN();
}
Minimal test - lines (256, 348)
path: .spaces[3].metrics.cyclomatic.sum
old: 1.0
new: 13.0
path: .spaces[3].metrics.cyclomatic.average
old: 1.0
new: 13.0
path: .spaces[3].metrics.mi.mi_sei
old: 115.71718014704972
new: 32.17875864185019
path: .spaces[3].metrics.mi.mi_visual_studio
old: 77.54987902751634
new: 31.730539747707223
path: .spaces[3].metrics.mi.mi_original
old: 132.6102931370529
new: 54.25922296857935
path: .spaces[3].metrics.halstead.level
old: 0.23809523809523808
new: 0.051839464882943144
path: .spaces[3].metrics.halstead.n1
old: 7.0
new: 23.0
path: .spaces[3].metrics.halstead.N2
old: 6.0
new: 156.0
path: .spaces[3].metrics.halstead.volume
old: 50.18947501009619
new: 2331.7135383433742
path: .spaces[3].metrics.halstead.N1
old: 8.0
new: 184.0
path: .spaces[3].metrics.halstead.difficulty
old: 4.2
new: 19.29032258064516
path: .spaces[3].metrics.halstead.effort
old: 210.795795042404
new: 44979.50632030122
path: .spaces[3].metrics.halstead.n2
old: 5.0
new: 93.0
path: .spaces[3].metrics.halstead.time
old: 11.710877502355778
new: 2498.8614622389564
path: .spaces[3].metrics.halstead.estimated_program_length
old: 31.26112492884004
new: 712.1836944223581
path: .spaces[3].metrics.halstead.bugs
old: 0.01180646926336541
new: 0.4215882856054391
path: .spaces[3].metrics.halstead.vocabulary
old: 12.0
new: 116.0
path: .spaces[3].metrics.halstead.length
old: 14.0
new: 340.0
path: .spaces[3].metrics.halstead.purity_ratio
old: 2.2329374949171457
new: 2.0946579247716417
path: .spaces[3].metrics.cognitive.sum
old: 0.0
new: 12.0
path: .spaces[3].metrics.cognitive.average
old: 0.0
new: 12.0
path: .spaces[3].metrics.loc.lloc
old: 1.0
new: 25.0
path: .spaces[3].metrics.loc.ploc
old: 3.0
new: 61.0
path: .spaces[3].metrics.loc.cloc
old: 0.0
new: 14.0
path: .spaces[3].metrics.loc.blank
old: 0.0
new: 18.0
path: .spaces[3].metrics.loc.sloc
old: 3.0
new: 93.0
path: .spaces[3].metrics.nargs.average
old: 1.0
new: 2.0
path: .spaces[3].metrics.nargs.sum
old: 1.0
new: 2.0
Code
@end
// Use OpenPanel to do a GetFile. Returns |returnOK| if the user presses OK in the dialog.
int16_t nsFilePicker::GetLocalFiles(bool inAllowMultiple, nsCOMArray& outFiles) {
NS_OBJC_BEGIN_TRY_BLOCK_RETURN;
int16_t retVal = (int16_t)returnCancel;
NSOpenPanel* thePanel = [NSOpenPanel openPanel];
SetShowHiddenFileState(thePanel);
// Set the options for how the get file dialog will appear
SetDialogTitle(mTitle, thePanel);
[thePanel setAllowsMultipleSelection:inAllowMultiple];
[thePanel setCanSelectHiddenExtension:YES];
[thePanel setCanChooseDirectories:NO];
[thePanel setCanChooseFiles:YES];
[thePanel setResolvesAliases:YES];
// Get filters
// filters may be null, if we should allow all file types.
NSArray* filters = GetFilterList();
// set up default directory
NSString* theDir = PanelDefaultDirectory();
// if this is the "Choose application..." dialog, and no other start
// dir has been set, then use the Applications folder.
if (!theDir) {
if (filters && [filters count] == 1 &&
[(NSString*)[filters objectAtIndex:0] isEqualToString:@"app"])
theDir = @"/Applications/";
else
theDir = @"";
}
if (theDir) {
[thePanel setDirectoryURL:[NSURL fileURLWithPath:theDir isDirectory:YES]];
}
int result;
nsCocoaUtils::PrepareForNativeAppModalDialog();
if (mFilters.Length() > 1) {
// [NSURL initWithString:] (below) throws an exception if URLString is nil.
NSPopUpButtonObserver* observer = [[NSPopUpButtonObserver alloc] init];
NSView* accessoryView = GetAccessoryView();
[thePanel setAccessoryView:accessoryView];
[observer setPopUpButton:[accessoryView viewWithTag:kSaveTypeControlTag]];
[observer setOpenPanel:thePanel];
[observer setFilePicker:this];
[[NSNotificationCenter defaultCenter] addObserver:observer
selector:@selector(menuChangedItem:)
name:NSMenuWillSendActionNotification
object:nil];
UpdatePanelFileTypes(thePanel, filters);
result = [thePanel runModal];
[[NSNotificationCenter defaultCenter] removeObserver:observer];
[observer release];
} else {
// If we show all file types, also "expose" bundles' contents.
if (!filters) {
[thePanel setTreatsFilePackagesAsDirectories:YES];
}
[thePanel setAllowedFileTypes:filters];
result = [thePanel runModal];
}
nsCocoaUtils::CleanUpAfterNativeAppModalDialog();
if (result == NSFileHandlingPanelCancelButton) return retVal;
// Converts data from a NSArray of NSURL to the returned format.
// We should be careful to not call [thePanel URLs] more than once given that
// it creates a new array each time.
// We are using Fast Enumeration, thus the NSURL array is created once then
// iterated.
for (NSURL* url in [thePanel URLs]) {
if (!url) {
continue;
}
nsCOMPtr localFile;
NS_NewLocalFile(u""_ns, true, getter_AddRefs(localFile));
nsCOMPtr macLocalFile = do_QueryInterface(localFile);
if (macLocalFile && NS_SUCCEEDED(macLocalFile->InitWithCFURL((CFURLRef)url))) {
outFiles.AppendObject(localFile);
}
}