Merge pull request #19384 from github/redsun82/swift-add-logs

Swift: add more debug logs
This commit is contained in:
Paolo Tranquilli
2025-04-25 17:24:11 +02:00
committed by GitHub
2 changed files with 10 additions and 0 deletions

View File

@@ -210,6 +210,7 @@ void codeql::extractSwiftFiles(SwiftExtractorState& state, swift::CompilerInstan
auto inputFiles = collectInputFilenames(compiler);
std::vector<swift::ModuleDecl*> todo = collectLoadedModules(compiler);
state.encounteredModules.insert(todo.begin(), todo.end());
LOG_DEBUG("{} modules loaded", todo.size());
while (!todo.empty()) {
auto module = todo.back();
@@ -223,13 +224,18 @@ void codeql::extractSwiftFiles(SwiftExtractorState& state, swift::CompilerInstan
}
isFromSourceFile = true;
if (inputFiles.count(sourceFile->getFilename().str()) == 0) {
LOG_DEBUG("skipping module {} from file {}, not in input files", module->getName().get(),
sourceFile->getFilename());
continue;
}
LOG_DEBUG("extracting module {} from input file {}", module->getName().get(),
sourceFile->getFilename());
archiveFile(state.configuration, *sourceFile);
encounteredModules =
extractDeclarations(state, compiler, *module, sourceFile, /*lazy declaration*/ nullptr);
}
if (!isFromSourceFile) {
LOG_DEBUG("extracting module {} from non-source file", module->getName().get());
encounteredModules = extractDeclarations(state, compiler, *module, /*source file*/ nullptr,
/*lazy declaration*/ nullptr);
}

View File

@@ -93,6 +93,7 @@ class Observer : public swift::FrontendObserver {
explicit Observer(const codeql::SwiftExtractorConfiguration& config) : state{config} {}
void parsedArgs(swift::CompilerInvocation& invocation) override {
LOG_DEBUG("{}()", __func__);
auto& options = invocation.getFrontendOptions();
options.KeepASTContext = true;
lockOutputSwiftModuleTraps(state, options);
@@ -101,18 +102,21 @@ class Observer : public swift::FrontendObserver {
}
void configuredCompiler(swift::CompilerInstance& instance) override {
LOG_DEBUG("{}()", __func__);
// remove default consumers to avoid double messaging
instance.getDiags().takeConsumers();
instance.addDiagnosticConsumer(&diagConsumer);
}
void performedCompilation(swift::CompilerInstance& compiler) override {
LOG_DEBUG("{}()", __func__);
codeql::extractSwiftFiles(state, compiler);
codeql::extractSwiftInvocation(state, compiler, invocationTrap);
codeql::extractExtractLazyDeclarations(state, compiler);
}
void markSuccessfullyExtractedFiles() {
LOG_DEBUG("{}()", __func__);
codeql::SwiftLocationExtractor locExtractor{invocationTrap};
for (const auto& src : state.sourceFiles) {
auto fileLabel = locExtractor.emitFile(src);