Browse Source

Eliminating zero values from Queries reduce render time for test assembly from 6 to 1 secounds

pull/21/merge
PeterForstmeier 14 years ago
parent
commit
f745ec42dd
  1. 2
      SharpDevelop.Tests.sln
  2. 5
      src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj
  3. 18
      src/AddIns/Analysis/CodeQuality/Src/MainWindowModel.cs
  4. 31
      src/AddIns/Analysis/CodeQuality/Src/Utility/Queries/BaseQuery.cs
  5. 72
      src/AddIns/Analysis/CodeQuality/Src/Utility/Queries/QueryMethod.cs
  6. 62
      src/AddIns/Analysis/CodeQuality/Src/Utility/Queries/QueryNameSpace.cs

2
SharpDevelop.Tests.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.2.0.8292-alpha
# SharpDevelop 4.2.0.8314-alpha
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection

5
src/AddIns/Analysis/CodeQuality/CodeQualityAnalysis.csproj

@ -151,7 +151,9 @@ @@ -151,7 +151,9 @@
<Compile Include="Src\Utility\Localizeable\EnumToFriendlyNameConverter.cs" />
<Compile Include="Src\Utility\Localizeable\LocalizableDescriptionAttribute.cs" />
<Compile Include="Src\Utility\Matrix.cs" />
<Compile Include="Src\Utility\QueryMainModule.cs" />
<Compile Include="Src\Utility\Queries\BaseQuery.cs" />
<Compile Include="Src\Utility\Queries\QueryMethod.cs" />
<Compile Include="Src\Utility\Queries\QueryNameSpace.cs" />
<Compile Include="Src\Utility\VisibleMatrix.cs" />
<Page Include="Resources\GridSplitterTemplate.xaml" />
<Page Include="Resources\GraphTemplate.xaml">
@ -269,6 +271,7 @@ @@ -269,6 +271,7 @@
<ItemGroup>
<Folder Include="Src\Utility" />
<Folder Include="Src\Utility\Localizeable" />
<Folder Include="Src\Utility\Queries" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

18
src/AddIns/Analysis/CodeQuality/Src/MainWindowModel.cs

@ -15,8 +15,9 @@ using System.Windows; @@ -15,8 +15,9 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using ICSharpCode.CodeQualityAnalysis.Utility.Localizeable;
using ICSharpCode.CodeQualityAnalysis.Utility;
using ICSharpCode.CodeQualityAnalysis.Utility.Localizeable;
using ICSharpCode.CodeQualityAnalysis.Utility.Queries;
using ICSharpCode.SharpDevelop.Widgets;
namespace ICSharpCode.CodeQualityAnalysis
@ -48,7 +49,6 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -48,7 +49,6 @@ namespace ICSharpCode.CodeQualityAnalysis
public class MainWindowViewModel :ViewModelBase
{
QueryMainModule queryModule;
public MainWindowViewModel():base()
{
@ -152,7 +152,7 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -152,7 +152,7 @@ namespace ICSharpCode.CodeQualityAnalysis
mainModule.TypesCount,
mainModule.MethodsCount,
mainModule.FieldsCount);
queryModule = new QueryMainModule(MainModule);
//queryModule = new QueryMethod(MainModule);
}
}
@ -190,10 +190,7 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -190,10 +190,7 @@ namespace ICSharpCode.CodeQualityAnalysis
return String.Empty;
}
#region MetricsLevel Combo Left ComboBox
public MetricsLevel MetricsLevel {
@ -221,13 +218,15 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -221,13 +218,15 @@ namespace ICSharpCode.CodeQualityAnalysis
break;
case MetricsLevel.Namespace:
ItemsWithCommand = queryModule.NameSpaceList();
QueryNameSpace queryNs = new QueryNameSpace(MainModule);
ItemsWithCommand = queryNs.GetQueryList();
break;
case MetricsLevel.Type:
break;
case MetricsLevel.Method:
ItemsWithCommand = queryModule.MethodList();
QueryMethod queryModule = new QueryMethod(MainModule);
ItemsWithCommand = queryModule.GetQueryList();
break;
default:
throw new Exception("Invalid value for MetricsLevel");
@ -237,6 +236,7 @@ namespace ICSharpCode.CodeQualityAnalysis @@ -237,6 +236,7 @@ namespace ICSharpCode.CodeQualityAnalysis
#endregion
#region Metrics Combo > Right Combobox
List<ItemWithAction> itemsWithCommand;
public List<ItemWithAction> ItemsWithCommand {

31
src/AddIns/Analysis/CodeQuality/Src/Utility/Queries/BaseQuery.cs

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 02.01.2012
* Time: 20:26
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
namespace ICSharpCode.CodeQualityAnalysis.Utility.Queries
{
/// <summary>
/// Description of BaseQuery.
/// </summary>
public class BaseQuery
{
public BaseQuery(Module mainModule)
{
MainModule = mainModule;
}
public Module MainModule {get; private set;}
public virtual List<ItemWithAction> GetQueryList ()
{
throw new InvalidOperationException("Must override");
}
}
}

72
src/AddIns/Analysis/CodeQuality/Src/Utility/QueryMainModule.cs → src/AddIns/Analysis/CodeQuality/Src/Utility/Queries/QueryMethod.cs

@ -13,23 +13,21 @@ using System.Linq; @@ -13,23 +13,21 @@ using System.Linq;
using ICSharpCode.Core;
namespace ICSharpCode.CodeQualityAnalysis.Utility
namespace ICSharpCode.CodeQualityAnalysis.Utility.Queries
{
/// <summary>
/// Description of testclass.
/// </summary>
public class QueryMainModule
public class QueryMethod:BaseQuery
{
public QueryMainModule(Module mainModule)
{
MainModule = mainModule;
public QueryMethod(Module mainModule):base(mainModule)
{
}
public Module MainModule {get; private set;}
private List <INode> QueryForMethod()
private List <Method> QueryForMethod()
{
IEnumerable<INode> query = new List<INode>();
IEnumerable<Method> query = new List<Method>();
query = from ns in MainModule.Namespaces
from type in ns.Types
from method in type.Methods
@ -37,42 +35,19 @@ namespace ICSharpCode.CodeQualityAnalysis.Utility @@ -37,42 +35,19 @@ namespace ICSharpCode.CodeQualityAnalysis.Utility
return query.ToList();
}
public List<ItemWithAction> NameSpaceList()
/*
private List <INode> QueryForMethod()
{
List<ItemWithAction> items = new List<ItemWithAction>();
items.Add(new ItemWithAction()
{
Description = "# of Methods",
Metrics = Metrics.CyclomaticComplexity.ToString(),
Action = ExecuteNotImplemented
});
items.Add(new ItemWithAction()
{
Description = "# of Fields",
Metrics = Metrics.Variables.ToString(),
Action = ExecuteNotImplemented
});
items.Add(new ItemWithAction()
{
Description = "# of Types",
Metrics = Metrics.Variables.ToString(),
Action = ExecuteNotImplemented
});
items.Add(new ItemWithAction()
{
Description = "# of Namespaces",
Metrics = Metrics.Variables.ToString(),
Action = ExecuteNotImplemented
});
return items;
IEnumerable<INode> query = new List<INode>();
query = from ns in MainModule.Namespaces
from type in ns.Types
from method in type.Methods
select method;
return query.ToList();
}
*/
public List<ItemWithAction> MethodList()
public override List<ItemWithAction> GetQueryList()
{
List<ItemWithAction> items = new List<ItemWithAction>();
items.Add(new ItemWithAction()
@ -96,16 +71,10 @@ namespace ICSharpCode.CodeQualityAnalysis.Utility @@ -96,16 +71,10 @@ namespace ICSharpCode.CodeQualityAnalysis.Utility
return items;
}
private List<INode> ExecuteNotImplemented()
{
MessageService.ShowMessage("Not Implemented yet","CodeQualityAnalysis");
return null;
}
private List<INode> ExecuteMethodILInstructions()
{
var intermediate = QueryForMethod().Cast<Method>().ToList();
var intermediate = QueryForMethod();
var filtered = from method in intermediate
where method.Instructions.Count > 0
select method;
@ -115,7 +84,7 @@ namespace ICSharpCode.CodeQualityAnalysis.Utility @@ -115,7 +84,7 @@ namespace ICSharpCode.CodeQualityAnalysis.Utility
private List<INode> ExecuteMethodComplexity ()
{
var intermediate = QueryForMethod().Cast<Method>().ToList();
var intermediate = QueryForMethod();
var filtered = from method in intermediate
where method.CyclomaticComplexity > 0
select method;
@ -125,8 +94,9 @@ namespace ICSharpCode.CodeQualityAnalysis.Utility @@ -125,8 +94,9 @@ namespace ICSharpCode.CodeQualityAnalysis.Utility
private List<INode> ExecuteMethodVariables ()
{
var intermediate = QueryForMethod().Cast<Method>().ToList();
// eliminate 0-values
var intermediate = QueryForMethod();
// eliminate 0-values reduce time for my test assembly from 6 to 1 sek
var filtered = from method in intermediate
where method.Variables > 0
select method;

62
src/AddIns/Analysis/CodeQuality/Src/Utility/Queries/QueryNameSpace.cs

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 02.01.2012
* Time: 20:11
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using ICSharpCode.Core;
namespace ICSharpCode.CodeQualityAnalysis.Utility.Queries
{
/// <summary>
/// Description of QueryNameSpace.
/// </summary>
public class QueryNameSpace:BaseQuery
{
public QueryNameSpace(Module mainModule):base (mainModule)
{
}
public override List<ItemWithAction> GetQueryList()
{
List<ItemWithAction> items = new List<ItemWithAction>();
items.Add(new ItemWithAction()
{
Description = "# of Methods",
Metrics = Metrics.CyclomaticComplexity.ToString(),
Action = ExecuteNotImplemented
});
items.Add(new ItemWithAction()
{
Description = "# of Fields",
Metrics = Metrics.Variables.ToString(),
Action = ExecuteNotImplemented
});
items.Add(new ItemWithAction()
{
Description = "# of Types",
Metrics = Metrics.Variables.ToString(),
Action = ExecuteNotImplemented
});
items.Add(new ItemWithAction()
{
Description = "# of Namespaces",
Metrics = Metrics.Variables.ToString(),
Action = ExecuteNotImplemented
});
return items;
}
private List<INode> ExecuteNotImplemented()
{
MessageService.ShowMessage("Not Implemented yet","CodeQualityAnalysis");
return null;
}
}
}
Loading…
Cancel
Save