Skip to content

Commit 84a78e7

Browse files
committed
Add opt-in environment variable for cshtml generation
1 parent ba0cc76 commit 84a78e7

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed

csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -132,27 +132,36 @@ public DependencyManager(string srcDir, IDependencyOptions options, ILogger logg
132132
progressMonitor.UnresolvedReference(r.Key, r.Value);
133133
}
134134

135-
var views = GetFiles("*.cshtml")
136-
.Concat(GetFiles("*.razor"));
137-
138-
if (views.Any())
135+
var webViewExtractionOption = Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_STANDALONE_EXTRACT_WEB_VIEWS");
136+
if (bool.TryParse(webViewExtractionOption, out var shouldExtractWebViews) &&
137+
shouldExtractWebViews)
139138
{
140-
// TODO: use SDK specified in global.json
141-
// TODO: add feature flag to control razor generation
142-
var sdk = new Sdk(dotnet).GetNewestSdk();
143-
if (sdk != null)
139+
progressMonitor.LogInfo($"Generating source files from cshtml and razor files.");
140+
141+
var views = GetFiles("*.cshtml")
142+
.Concat(GetFiles("*.razor"))
143+
.ToArray();
144+
145+
if (views.Length > 0)
144146
{
145-
try
146-
{
147-
var razor = new Razor(sdk, dotnet, progressMonitor);
148-
razorWorkingDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "razor"));
149-
var generatedFiles = razor.GenerateFiles(views, usedReferences.Keys, razorWorkingDirectory.ToString());
150-
this.allSources.AddRange(generatedFiles);
151-
}
152-
catch (Exception ex)
147+
progressMonitor.LogInfo($"Found {views.Length} cshtml and razor files.");
148+
149+
// TODO: use SDK specified in global.json
150+
var sdk = new Sdk(dotnet).GetNewestSdk();
151+
if (sdk != null)
153152
{
154-
// It's okay, we tried our best to generate source files from cshtml files.
155-
progressMonitor.LogInfo($"Failed to generate source files from cshtml files: {ex.Message}");
153+
try
154+
{
155+
var razor = new Razor(sdk, dotnet, progressMonitor);
156+
razorWorkingDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "razor"));
157+
var generatedFiles = razor.GenerateFiles(views, usedReferences.Keys, razorWorkingDirectory.ToString());
158+
this.allSources.AddRange(generatedFiles);
159+
}
160+
catch (Exception ex)
161+
{
162+
// It's okay, we tried our best to generate source files from cshtml files.
163+
progressMonitor.LogInfo($"Failed to generate source files from cshtml files: {ex.Message}");
164+
}
156165
}
157166
}
158167
}

0 commit comments

Comments
 (0)