Browse Source

More debug info in BuildWorker; make FxCop auto-detection smarter.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3697 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
3bc4ba8e9c
  1. 18
      src/AddIns/Misc/CodeAnalysis/Src/FxCopWrapper.cs
  2. 24
      src/Libraries/ICSharpCode.Build.Tasks/Project/FxCop.cs
  3. 4
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.CodeAnalysis.targets
  4. 1
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/HostProcess.cs
  5. 3
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/WorkerProcess.cs
  6. 3
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs
  7. 2
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/WorkerManager.cs

18
src/AddIns/Misc/CodeAnalysis/Src/FxCopWrapper.cs

@ -88,6 +88,23 @@ namespace ICSharpCode.CodeAnalysis @@ -88,6 +88,23 @@ namespace ICSharpCode.CodeAnalysis
string fxCopPath = AnalysisIdeOptionsPanel.FxCopPath;
if (string.IsNullOrEmpty(fxCopPath)) {
// Code duplication: FxCop.cs in ICSharpCode.Build.Tasks
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Setup\EDev")) {
if (key != null) {
fxCopPath = key.GetValue("FxCopDir") as string;
}
}
if (IsFxCopPath(fxCopPath)) {
return fxCopPath;
}
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Setup\EDev")) {
if (key != null) {
fxCopPath = key.GetValue("FxCopDir") as string;
}
}
if (IsFxCopPath(fxCopPath)) {
return fxCopPath;
}
fxCopPath = FromRegistry(Registry.CurrentUser.OpenSubKey(@"Software\Classes\FxCopProject\Shell\Open\Command"));
if (IsFxCopPath(fxCopPath)) {
return fxCopPath;
@ -96,6 +113,7 @@ namespace ICSharpCode.CodeAnalysis @@ -96,6 +113,7 @@ namespace ICSharpCode.CodeAnalysis
if (IsFxCopPath(fxCopPath)) {
return fxCopPath;
}
return null;
} else {
if (IsFxCopPath(fxCopPath)) {
return fxCopPath;

24
src/Libraries/ICSharpCode.Build.Tasks/Project/FxCop.cs

@ -163,12 +163,30 @@ namespace ICSharpCode.Build.Tasks @@ -163,12 +163,30 @@ namespace ICSharpCode.Build.Tasks
string FindFxCopPath()
{
// Code duplication: FxCopWrapper.cs in CodeAnalysis addin
string fxCopPath = FromRegistry(Registry.CurrentUser.OpenSubKey(@"Software\Classes\FxCopProject\Shell\Open\Command"));
if (fxCopPath.Length > 0 && File.Exists(Path.Combine(fxCopPath, ToolName))) {
string fxCopPath = null;
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Setup\EDev")) {
if (key != null) {
fxCopPath = key.GetValue("FxCopDir") as string;
}
}
if (!string.IsNullOrEmpty(fxCopPath) && File.Exists(Path.Combine(fxCopPath, ToolName))) {
return fxCopPath;
}
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Setup\EDev")) {
if (key != null) {
fxCopPath = key.GetValue("FxCopDir") as string;
}
}
if (!string.IsNullOrEmpty(fxCopPath) && File.Exists(Path.Combine(fxCopPath, ToolName))) {
return fxCopPath;
}
fxCopPath = FromRegistry(Registry.CurrentUser.OpenSubKey(@"Software\Classes\FxCopProject\Shell\Open\Command"));
if (!string.IsNullOrEmpty(fxCopPath) && File.Exists(Path.Combine(fxCopPath, ToolName))) {
return fxCopPath;
}
fxCopPath = FromRegistry(Registry.ClassesRoot.OpenSubKey(@"FxCopProject\Shell\Open\Command"));
if (fxCopPath.Length > 0 && File.Exists(Path.Combine(fxCopPath, ToolName))) {
if (!string.IsNullOrEmpty(fxCopPath) && File.Exists(Path.Combine(fxCopPath, ToolName))) {
return fxCopPath;
}
return null;

4
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.CodeAnalysis.targets

@ -23,6 +23,10 @@ @@ -23,6 +23,10 @@
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);SharpDevelopFxCopRun</PrepareForRunDependsOn>
</PropertyGroup>
<ItemGroup>
<AvailableItemName Include="CodeAnalysisDictionary" />
</ItemGroup>
<!-- run SharpDevelop FxCop. -->
<Target Name="SharpDevelopFxCopRun"
Condition="'$(SharpDevelopRunCodeAnalysis)'=='true'"

1
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/HostProcess.cs

@ -73,6 +73,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess @@ -73,6 +73,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
public void CallMethodOnHost(string methodName, params object[] args)
{
Program.Log("CallMethodOnHost: " + methodName);
sender.Send(WorkerProcess.SerializeObject(new WorkerProcess.MethodCall(methodName, args)));
}

3
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Interprocess/WorkerProcess.cs

@ -65,7 +65,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess @@ -65,7 +65,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
{
lock (this) {
ClearTimeout();
currentTimer = new Timer(OnTimeout, null, HostProcess.SendKeepAliveInterval * 3 / 2, -1);
currentTimer = new Timer(OnTimeout, null, HostProcess.SendKeepAliveInterval * 5 / 2, -1);
}
}
@ -188,6 +188,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess @@ -188,6 +188,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker.Interprocess
public void CallMethodOnWorker(string methodName, params object[] args)
{
Debug.WriteLine("CallMethodOnWorker: " + methodName);
sender.Send(SerializeObject(new MethodCall(methodName, args)));
}

3
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs

@ -59,8 +59,8 @@ namespace ICSharpCode.SharpDevelop.BuildWorker @@ -59,8 +59,8 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
ProcessStartInfo info = new ProcessStartInfo(typeof(Program).Assembly.Location);
info.WorkingDirectory = Path.GetDirectoryName(info.FileName);
info.Arguments = "worker";
#if RELEASE || !WORKERDEBUG
info.UseShellExecute = false;
#if RELEASE || !WORKERDEBUG
info.CreateNoWindow = true;
#endif
return info;
@ -75,6 +75,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker @@ -75,6 +75,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
[Conditional("DEBUG")]
internal static void Log(string text)
{
Debug.WriteLine(text);
#if WORKERDEBUG
DateTime now = DateTime.Now;
Console.WriteLine(now.ToString() + "," + now.Millisecond.ToString("d3") + " " + text);

2
src/Main/ICSharpCode.SharpDevelop.BuildWorker/WorkerManager.cs

@ -102,6 +102,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker @@ -102,6 +102,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
{
lock (lockObject) {
if (freeWorkerProcesses.Count > 0) {
Debug.WriteLine("WorkerManager: shutting down free worker");
DequeueFreeWorkerProcess().Shutdown();
} else {
ClearLastBuildDoneTimer();
@ -126,6 +127,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker @@ -126,6 +127,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
public void RaiseError(string message)
{
Debug.WriteLine(message);
RaiseEvent(new BuildErrorEventArgs(null, null, null, -1, -1, -1, -1, message, null, "SharpDevelopBuildWorkerManager"));
}

Loading…
Cancel
Save