Browse Source

OverviewReport

pull/18/head
PeterForstmeier 14 years ago
parent
commit
65f1038a9a
  1. 2
      src/AddIns/Analysis/CodeQuality/CodeQuality.csproj
  2. 47
      src/AddIns/Analysis/CodeQuality/Gui/MainView.xaml
  3. 60
      src/AddIns/Analysis/CodeQuality/Gui/MainView.xaml.cs
  4. 53
      src/AddIns/Analysis/CodeQuality/Reporting/Overview.cs
  5. 39
      src/AddIns/Analysis/CodeQuality/Reporting/ReportingOverview.srd

2
src/AddIns/Analysis/CodeQuality/CodeQuality.csproj

@ -101,7 +101,7 @@ @@ -101,7 +101,7 @@
<None Include="CodeQuality.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Reporting\Report1.srd">
<None Include="Reporting\ReportingOverview.srd">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

47
src/AddIns/Analysis/CodeQuality/Gui/MainView.xaml

@ -1,25 +1,46 @@ @@ -1,25 +1,46 @@
<UserControl x:Class="ICSharpCode.CodeQuality.Gui.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:gui="clr-namespace:ICSharpCode.CodeQuality.Gui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:rep="clr-namespace:ICSharpCode.Reports.Core.WpfReportViewer;assembly=ICSharpCode.Reports.Core">
<?xml version="1.0" encoding="utf-8"?>
<UserControl
x:Class="ICSharpCode.CodeQuality.Gui.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:gui="clr-namespace:ICSharpCode.CodeQuality.Gui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:rep="clr-namespace:ICSharpCode.Reports.Core.WpfReportViewer;assembly=ICSharpCode.Reports.Core">
<DockPanel>
<ToolBar DockPanel.Dock="Top">
<Button Click="AddAssemblyClick">Add Assembly</Button>
<Button x:Name="print" Click="Button_Click" IsEnabled="False" >Print Overview</Button>
<Menu Background="White" x:Name="printMenu" Visibility="Hidden">
<MenuItem Header="Reports">
<MenuItem
Header="Overview"
Click="OverviewReport_Click"></MenuItem>
</MenuItem>
</Menu>
</ToolBar>
<TabControl>
<TabItem Header="Dependency Matrix">
<TabItem
Header="Dependency Matrix">
<Grid>
<TextBlock x:Name="introBlock" VerticalAlignment="Center" HorizontalAlignment="Center" Text="Please select an assembly ..." FontSize="15" />
<gui:DependencyMatrixView Visibility="Collapsed" x:Name="matrix" />
<TextBlock
x:Name="introBlock"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Text="Please select an assembly ..."
FontSize="15" />
<gui:DependencyMatrixView
Visibility="Collapsed"
x:Name="matrix" />
</Grid>
</TabItem>
<TabItem Header="ReportPreview" x:Name="reportTab" IsEnabled="False">
<TabItem
Header="ReportPreview"
x:Name="reportTab"
Visibility="Hidden">
<Grid>
<rep:WpfReportViewer x:Name="viewer" >
</rep:WpfReportViewer>
<rep:WpfReportViewer
x:Name="viewer"></rep:WpfReportViewer>
</Grid>
</TabItem>
</TabControl>

60
src/AddIns/Analysis/CodeQuality/Gui/MainView.xaml.cs

@ -28,6 +28,9 @@ namespace ICSharpCode.CodeQuality.Gui @@ -28,6 +28,9 @@ namespace ICSharpCode.CodeQuality.Gui
{
AssemblyAnalyzer context;
List<string> fileNames;
ReadOnlyCollection <AssemblyNode> list;
public MainView()
{
InitializeComponent();
@ -47,63 +50,46 @@ namespace ICSharpCode.CodeQuality.Gui @@ -47,63 +50,46 @@ namespace ICSharpCode.CodeQuality.Gui
if (fileDialog.ShowDialog() != true || fileDialog.FileNames.Length == 0)
return;
introBlock.Visibility = Visibility.Collapsed;
print.IsEnabled = true;
reportTab.IsEnabled = true;
this.fileNames.AddRange(fileDialog.FileNames);
context.AddAssemblyFiles(fileDialog.FileNames);
RefreshClick(null, null);
Analyse(fileDialog.FileNames);
UpdateUI();
}
ReadOnlyCollection <AssemblyNode> list;
void RefreshClick(object sender, RoutedEventArgs e)
void Analyse (string[] fileNames)
{
introBlock.Visibility = Visibility.Collapsed;
context.AddAssemblyFiles(fileNames);
using (context.progressMonitor = AsynchronousWaitDialog.ShowWaitDialog("Analysis"))
{
list = context.Analyze();
matrix.Update(list);
matrix.Visibility = Visibility.Visible;
}
}
/*
*
* TreeTraversal.PreOrder(node, n => n.Children).OfType<MethodNode>().Count()
*
*
void RefreshClick(object sender, RoutedEventArgs e)
void UpdateUI ()
{
matrix.Update(list);
introBlock.Visibility = Visibility.Collapsed;
using (context.progressMonitor = AsynchronousWaitDialog.ShowWaitDialog("Analysis"))
matrix.Update(context.Analyze());
matrix.Visibility = Visibility.Visible;
printMenu.Visibility = Visibility.Visible;
}
*/
void Report (ReadOnlyCollection<AssemblyNode> list)
{
foreach (var ass in list)
{
Console.WriteLine("{0} - {1}",ass.Name,ass.namespaces);
foreach (var child in ass.Children)
{
Console.WriteLine("\t {0}",child.Name);
foreach (var subchild in child.Children) {
Console.WriteLine("\t\t {0}",subchild.Name);
}
}
}
}
/*
*
* TreeTraversal.PreOrder(node, n => n.Children).OfType<MethodNode>().Count()
*
*
*/
void Button_Click(object sender, RoutedEventArgs e)
void OverviewReport_Click(object sender, RoutedEventArgs e)
{
OverviewReport o = new OverviewReport(fileNames);
var reportCreator = o.Run(list);
var previewViewModel = new PreviewViewModel(o.ReportSettings,reportCreator.Pages);
viewer.SetBinding(previewViewModel);
viewer.SetBinding(previewViewModel);
reportTab.Visibility = Visibility.Visible;
}
}
}

53
src/AddIns/Analysis/CodeQuality/Reporting/Overview.cs

@ -10,11 +10,12 @@ using System; @@ -10,11 +10,12 @@ using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Windows;
using System.Linq;
using ICSharpCode.CodeQuality.Engine.Dom;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.Exporter.ExportRenderer;
using ICSharpCode.Reports.Core.WpfReportViewer;
@ -27,7 +28,11 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -27,7 +28,11 @@ namespace ICSharpCode.CodeQuality.Reporting
/// </summary>
public class OverviewReport
{
private const string reportDir = "Reporting";
private const string overviewReport = "ReportingOverview.srd";
List<string> fileNames;
public OverviewReport(List<string> fileNames)
{
if (fileNames.Count > 0)
@ -43,15 +48,12 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -43,15 +48,12 @@ namespace ICSharpCode.CodeQuality.Reporting
var r = from c in list
select new OverviewViewModel { Node = c};
Uri uri = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase);
var fullname = uri.LocalPath;
var reportFileName = Path.GetDirectoryName(fullname) + Path.DirectorySeparatorChar + "Reporting" + Path.DirectorySeparatorChar + "Report1.srd";
var reportFileName = MakeReportFileName(overviewReport);
var model = ReportEngine.LoadReportModel(reportFileName);
var p = new ReportParameters();
p.Parameters.Add(new BasicParameter ("param1",fileNames[0]));
p.Parameters.Add(new BasicParameter ("param2",list.Count.ToString()));
ReportSettings = model.ReportSettings;
@ -60,6 +62,13 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -60,6 +62,13 @@ namespace ICSharpCode.CodeQuality.Reporting
return creator;
}
string MakeReportFileName (string repName)
{
Uri uri = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase);
var fullname = uri.LocalPath;
return Path.GetDirectoryName(fullname) + Path.DirectorySeparatorChar + reportDir + Path.DirectorySeparatorChar + repName;
}
public ReportSettings ReportSettings {get;private set;}
}
@ -86,5 +95,35 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -86,5 +95,35 @@ namespace ICSharpCode.CodeQuality.Reporting
}
public int MethodCount
{
get {
return TreeTraversal.PreOrder((NodeBase)Node, n => n.Children).OfType<MethodNode>().Count();
}
}
public int PropertyCount
{
get {
return TreeTraversal.PreOrder((NodeBase)Node, n => n.Children).OfType<PropertyNode>().Count();
}
}
public int EventCount
{
get {
return TreeTraversal.PreOrder((NodeBase)Node, n => n.Children).OfType<EventNode>().Count();
}
}
public int TypesCount
{
get {
return TreeTraversal.PreOrder((NodeBase)Node, n => n.Children).OfType<TypeNode>().Count();
}
}
}
}

39
src/AddIns/Analysis/CodeQuality/Reporting/Report1.srd → src/AddIns/Analysis/CodeQuality/Reporting/ReportingOverview.srd

@ -186,6 +186,23 @@ @@ -186,6 +186,23 @@
<ForeColor>ControlText</ForeColor>
<FrameColor>Black</FrameColor>
<Items>
<BaseTextItem>
<Location>571, 7</Location>
<Size>41, 20</Size>
<BackColor>White</BackColor>
<VisibleInReport>True</VisibleInReport>
<Font>Segoe UI, 9pt</Font>
<StringTrimming>None</StringTrimming>
<ContentAlignment>MiddleRight</ContentAlignment>
<CanGrow>False</CanGrow>
<CanShrink>False</CanShrink>
<RTL>No</RTL>
<Text>Types</Text>
<DrawBorder>False</DrawBorder>
<FrameColor>Black</FrameColor>
<ForeColor>ControlText</ForeColor>
<Name>BaseTextItem2147483646</Name>
</BaseTextItem>
<BaseTextItem>
<Location>501, 7</Location>
<Size>53, 20</Size>
@ -300,7 +317,25 @@ @@ -300,7 +317,25 @@
<FrameColor>Black</FrameColor>
<Items>
<BaseDataItem>
<Location>501, 0</Location>
<Location>571, 3</Location>
<Size>41, 20</Size>
<BackColor>White</BackColor>
<VisibleInReport>True</VisibleInReport>
<Font>Segoe UI, 9pt</Font>
<StringTrimming>None</StringTrimming>
<ContentAlignment>MiddleRight</ContentAlignment>
<CanGrow>False</CanGrow>
<CanShrink>False</CanShrink>
<RTL>No</RTL>
<Text>BaseDataItem2147483643</Text>
<DrawBorder>False</DrawBorder>
<FrameColor>Black</FrameColor>
<ForeColor>Black</ForeColor>
<ColumnName>TypesCount</ColumnName>
<Name>BaseDataItem2147483643</Name>
</BaseDataItem>
<BaseDataItem>
<Location>501, 3</Location>
<Size>53, 20</Size>
<BackColor>White</BackColor>
<VisibleInReport>True</VisibleInReport>
@ -318,7 +353,7 @@ @@ -318,7 +353,7 @@
<Name>BaseDataItem2147483644</Name>
</BaseDataItem>
<BaseDataItem>
<Location>425, 0</Location>
<Location>425, 3</Location>
<Size>55, 20</Size>
<BackColor>White</BackColor>
<VisibleInReport>True</VisibleInReport>
Loading…
Cancel
Save