Index: pkg/analyzer_experimental/lib/src/analyzer_impl.dart |
diff --git a/pkg/analyzer_experimental/lib/src/analyzer_impl.dart b/pkg/analyzer_experimental/lib/src/analyzer_impl.dart |
deleted file mode 100644 |
index c7beef72ad41fd5a5b415b05dd0d889cf8f85b46..0000000000000000000000000000000000000000 |
--- a/pkg/analyzer_experimental/lib/src/analyzer_impl.dart |
+++ /dev/null |
@@ -1,188 +0,0 @@ |
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library analyzer_impl; |
- |
-import 'dart:io'; |
- |
-import 'generated/java_io.dart'; |
-import 'generated/engine.dart'; |
-import 'generated/error.dart'; |
-import 'generated/source_io.dart'; |
-import 'generated/sdk.dart'; |
-import 'generated/sdk_io.dart'; |
-import 'generated/element.dart'; |
-import '../options.dart'; |
- |
- |
-DartSdk sdk; |
- |
-/// Analyzes single library [File]. |
-class AnalyzerImpl { |
- final CommandLineOptions options; |
- |
- ContentCache contentCache = new ContentCache(); |
- SourceFactory sourceFactory; |
- AnalysisContext context; |
- |
- /// All [Source]s references by the analyzed library. |
- final Set<Source> sources = new Set<Source>(); |
- |
- /// All [AnalysisErrorInfo]s in the analyzed library. |
- final List<AnalysisErrorInfo> errorInfos = new List<AnalysisErrorInfo>(); |
- |
- AnalyzerImpl(CommandLineOptions this.options) { |
- if (sdk == null) { |
- sdk = new DirectoryBasedDartSdk(new JavaFile(options.dartSdkPath)); |
- } |
- } |
- |
- /** |
- * Treats the [sourcePath] as the top level library and analyzes it. |
- */ |
- void analyze(String sourcePath) { |
- sources.clear(); |
- errorInfos.clear(); |
- if (sourcePath == null) { |
- throw new ArgumentError("sourcePath cannot be null"); |
- } |
- var sourceFile = new JavaFile(sourcePath); |
- var uriKind = getUriKind(sourceFile); |
- var librarySource = new FileBasedSource.con2(contentCache, sourceFile, uriKind); |
- // resolve library |
- prepareAnalysisContext(sourceFile); |
- var libraryElement = context.computeLibraryElement(librarySource); |
- // prepare source and errors |
- prepareSources(libraryElement); |
- prepareErrors(); |
- } |
- |
- /// Returns the maximal [ErrorSeverity] of the recorded errors. |
- ErrorSeverity get maxErrorSeverity { |
- var status = ErrorSeverity.NONE; |
- for (AnalysisErrorInfo errorInfo in errorInfos) { |
- for (AnalysisError error in errorInfo.errors) { |
- var severity = error.errorCode.errorSeverity; |
- status = status.max(severity); |
- } |
- } |
- return status; |
- } |
- |
- void prepareAnalysisContext(JavaFile sourceFile) { |
- List<UriResolver> resolvers = [new DartUriResolver(sdk), new FileUriResolver()]; |
- // may be add package resolver |
- { |
- JavaFile packageDirectory; |
- if (options.packageRootPath != null) { |
- packageDirectory = new JavaFile(options.packageRootPath); |
- } else { |
- packageDirectory = getPackageDirectoryFor(sourceFile); |
- } |
- if (packageDirectory != null) { |
- resolvers.add(new PackageUriResolver([packageDirectory])); |
- } |
- } |
- sourceFactory = new SourceFactory.con1(contentCache, resolvers); |
- context = AnalysisEngine.instance.createAnalysisContext(); |
- context.sourceFactory = sourceFactory; |
- |
- // set options for context |
- AnalysisOptionsImpl contextOptions = new AnalysisOptionsImpl(); |
- contextOptions.cacheSize = 256; |
- contextOptions.hint = !options.disableHints; |
- context.analysisOptions = contextOptions; |
- } |
- |
- /// Fills [sources]. |
- void prepareSources(LibraryElement library) { |
- var units = new Set<CompilationUnitElement>(); |
- var libraries = new Set<LibraryElement>(); |
- addLibrarySources(library, libraries, units); |
- } |
- |
- void addCompilationUnitSource(CompilationUnitElement unit, Set<LibraryElement> libraries, |
- Set<CompilationUnitElement> units) { |
- if (unit == null || units.contains(unit)) { |
- return; |
- } |
- units.add(unit); |
- sources.add(unit.source); |
- } |
- |
- void addLibrarySources(LibraryElement library, Set<LibraryElement> libraries, |
- Set<CompilationUnitElement> units) { |
- if (library == null || libraries.contains(library)) { |
- return; |
- } |
- libraries.add(library); |
- // may be skip library |
- { |
- UriKind uriKind = library.source.uriKind; |
- // Optionally skip package: libraries. |
- if (!options.showPackageWarnings && uriKind == UriKind.PACKAGE_URI) { |
- return; |
- } |
- // Optionally skip SDK libraries. |
- if (!options.showSdkWarnings && uriKind == UriKind.DART_URI) { |
- return; |
- } |
- } |
- // add compilation units |
- addCompilationUnitSource(library.definingCompilationUnit, libraries, units); |
- for (CompilationUnitElement child in library.parts) { |
- addCompilationUnitSource(child, libraries, units); |
- } |
- // add referenced libraries |
- for (LibraryElement child in library.importedLibraries) { |
- addLibrarySources(child, libraries, units); |
- } |
- for (LibraryElement child in library.exportedLibraries) { |
- addLibrarySources(child, libraries, units); |
- } |
- } |
- |
- /// Fills [errorInfos]. |
- void prepareErrors() { |
- for (Source source in sources) { |
- context.computeErrors(source); |
- var sourceErrors = context.getErrors(source); |
- errorInfos.add(sourceErrors); |
- } |
- } |
- |
- static JavaFile getPackageDirectoryFor(JavaFile sourceFile) { |
- // we are going to ask parent file, so get absolute path |
- sourceFile = sourceFile.getAbsoluteFile(); |
- // look in the containing directories |
- JavaFile dir = sourceFile.getParentFile(); |
- while (dir != null) { |
- JavaFile packagesDir = new JavaFile.relative(dir, "packages"); |
- if (packagesDir.exists()) { |
- return packagesDir; |
- } |
- dir = dir.getParentFile(); |
- } |
- // not found |
- return null; |
- } |
- |
- /** |
- * Returns the [UriKind] for the given input file. Usually {@link UriKind#FILE_URI}, but if |
- * the given file is located in the "lib" directory of the [sdk], then returns |
- * {@link UriKind#DART_URI}. |
- */ |
- static UriKind getUriKind(JavaFile file) { |
- // may be file in SDK |
- if (sdk is DirectoryBasedDartSdk) { |
- DirectoryBasedDartSdk directoryBasedSdk = sdk; |
- String sdkLibPath = directoryBasedSdk.libraryDirectory.getPath() + JavaFile.separator; |
- if (file.getPath().startsWith(sdkLibPath)) { |
- return UriKind.DART_URI; |
- } |
- } |
- // some generic file |
- return UriKind.FILE_URI; |
- } |
-} |