pana 0.11.8

  • README.md
  • CHANGELOG.md
  • Installing
  • Versions
  • 82

Build Status

A library for analyzing Dart packages.

  • Validates the code using Dart Analyzer.
  • Checks code formatting.
  • Checks for outdated dependencies.
  • Infers supported platforms: Flutter, web, and/or server.

Used by the Dart Package site.

Use as an executable

Installation

> pub global activate pana

Usage

You can specify either a package (+ version) or a local directory to analyze:

Usage: pana [<options>] <package> [<version>]
       pana [<options>] --source path <directory>

Options:
      --flutter-sdk     The directory of the Flutter SDK.
  -j, --json            Output log items as JSON.
  -s, --source          The source used to find the package.
                        [hosted (default), path]
  
      --hosted-url      The server that hosts <package>.
                        (defaults to "https://pub.dartlang.org")
  
      --verbosity       Configure the details in the output.
                        [compact, normal (default), verbose]
  
      --[no-]warning    Shows the warning message before potentially destructive operation.
                        (defaults to on)

0.11.8

  • Support Dart 2 gold release.

  • Remove strong-mode: true check and suggestion.

  • Do not check existence of non-external URLs.

  • API for external caching of URL existence checks.

0.11.7

  • Suggestions for SDK constraint and Dart 2 compatibility.

0.11.6

  • Updated report on dartanalyzer suggestions.

0.11.5

  • Less verbose logging.

  • Updated platform classification:

    • Library conflict rule is moved to the end of the evaluation.
    • Top file-related suggestions are directly exposed.
    • The bulk summary suggestion is more compact.
  • Updated suggestion messages.

0.11.4

  • Export libraries used by pub site.

  • Update minimum SDK to 2.0.0-dev.42.0

    • The SDK was effectively restricted to at least this version due to other dependencies.
  • Better expose platform conflict reasons.

0.11.3

  • Support changing part of the analysis result.

  • Fix dartdoc timeout when using pub global run.

0.11.2

  • dartdoc processing: do not exclude packages by default, as dartdoc 0.19 handles SDK links.

  • expose getAgeSuggestion method for pub site

  • Update analyzer dependency to ^0.32.0.

0.11.1

  • Upgrade CI to dev.54 and fix new deprecation warnings.

  • Bugfix: do not initialize dartdocSuccessful with a value.

  • Support --flutter-sdk in the pana binary.

0.11.0

Breaking changes:

  • DartSdk, FlutterSdk and PubEnvironment is replaced with ToolEnvironment.

  • ToolEnvironment.runAnalyzer returns the text output of the process.

  • Consolidating options in InspectOptions, changing PackageAnalyzer APIs.

  • Move all output-related data structure to src/model.dart:

    • CodeProblem.parse -> parseCodeProblem
    • Maintenance.getMaintenanceScore -> getMaintenanceScore
    • PkgResolution.create -> createPkgResolution
  • Move all runtime/version info into PanaRuntimeInfo (and use it in Summary).

  • Removed Fitness.suggestions (moved it to DartFileSummary)

Updates:

  • Run dartdoc (optional) and report if it was not able to complete successfully.

  • Added a top-level models.dart library exposing several of the data classes.

  • Check homepage and documentation properties to point to an existing and external web page.

  • --verbose command-line and Verbosity option to control the details in the analysis output.

0.10.6

  • Enable Dart 2 Preview in analyzer options (including non-Flutter packages).

  • Change platform classification of dart:isolate: no longer available on web.

  • Treat environment: keys as dependent SDKs (e.g. flutter).

  • Use LibraryElement.hasExtUri to detect dart-ext: imports.

  • Detailed suggestion messages when package has conflicting platforms.

0.10.5

  • Enable Dart 2 Preview in Flutter analyzer options.

0.10.4

  • Fix CI test

  • Flutter-specific suggestion messages for dartfmt and dartanalyzer.

0.10.3

  • Fix end-to-end test (package dependency changed).

  • Move pubspec stripping inside PubEnvironment.runUpgrade (dartdoc service will get it for free).

  • Handle more repository URLs (e.g. www.github.com).

  • Expose Flutter detection to clients, with better naming (isFlutter -> usesFlutter).

0.10.2

  • Fix issue of not using the PUB_CACHE directory when it was set.

  • Update analyzer to 0.31 and extends quiver version range.

  • Fix issue where we were not passing the proper package directory variable.

  • Expose all dartanalyzer and dartfmt problems as suggestions.

0.10.1

  • Include component list in platform classification reasons.

  • Do not report on unconstrained SDK dependencies.

  • New platform component: build.

  • Remove dependency_overrides from pubspec.yaml.

0.10.0

BREAKING CHANGES:

  • Removed DartPlatform.description and DartPlatform.descriptionAndReason because we don't use them elsewhere and complicates the PlatformNames with everywhere and undefined.

  • Removed PlatformNames.everywhere and PlatformNames.undefined, because we don't print these anywhere except in tests.

  • Removed PlatformNames.dartExtension, because we use it only internally.

  • Removed DartPlatform.restrictedTo, using the fields components and uses instead.

  • Removed PlatformNames.server (and its platform detection), using a wider other platform instead.

0.9.1

  • Use raw links for images in repository URLs.

  • Move unconstrained version penalty from health score to maintenance.

  • Move platform conflict penalty from health score to maintenance.

  • Sort maintenance suggestions in decreasing importance.

0.9.0+1

  • Fix NPE when dependency has no constraint (e.g. git repo).

0.9.0

  • Only direct unconstrained dependencies decrease the health score.

  • Removed superfluous pubspec.lock validation.

  • Recommend descriptions between 60 and 180 characters.

  • Detect another license format

  • Pass-through values of analyzer_options.yaml errors like uri_has_not_been_generated.

0.8.2

  • Unblock platform classification on a new class of errors.

  • Better messages in platform classification.

0.8.1

  • Use Flutter-recommended analysis options when analyzer Flutter packages.

  • BREAKING BEHAVIOR: Don't use PUB_HOSTED_URL for package downloads, as it has not worked out in practice. Instead, we've added a --hosted-url command line argument.

0.8.0

  • PackageAnalyzer.inspectPackage added a named argument deleteTemporaryDirectory. Setting this to false retains the directory and prints its location to the log. Useful for debugging.

  • Maintenance

    • BREAKING getMaintenanceScore now takes an optional age parameter replacing the previously required publishDate parameter.

    • Changed the meaning of version fields:

      • isExperimentalVersion now means pre-V1.
      • isPreReleaseVersion now means there is a pre-release flag like -beta, -alpha, etc.
    • BREAKING maintenance-related Suggestion entries as moved to Maintenance.suggestions

  • BREAKING Suggestion.file is now String instead of dynamic.

  • Detect the new format of native extensions.

  • Unblock platform classification on a new class of errors.

  • Use PUB_HOSTED_URL for package downloads.

0.7.3+1

  • Allow more versions of package:args.

0.7.3

  • Added pana as an executable. Enables pub global activate pana.

  • Improved license detection: commented license files are now recognized.

0.7.2

  • Handle more critical exceptions and report them with more details.

  • The Suggestion.bug constructor had a breaking change – a required argument was added, but this is not intended for invocation by end-users.

0.7.1

  • Add SuggestionLevel.bug and use it to record fatal errors with the tool.

0.7.0+1

  • Fixed issue where analyzer and/or formatter were run on directories with no Dart files.

0.7.0

  • Breaking changes

    • Summary.sdkVersion is now a Version instead of String.

    • new PackageAnalyzer(...) now takes a DartSdk instance instead of a String.

  • static Future<PackageAnalyzer> create(...) was added to PackageAnalyzer.

  • Added logger optional argument to PackageAnalyzer.inspectPackage.

0.6.2

  • Allow platform classification for a small class of analysis errors.

0.6.1

  • Don't count the absence of an analysis_options.yaml file against a package.

0.6.0

  • Breaking changes

    • Removed ToolProblem class.
    • Removed Summary.toolProblems, in favor of Summary.suggestions.
  • Detect and store maintenance-related data in summary.

    • Scoring of tool problems moved from Fitness to Maintenance.
  • Provide human-readable feedback and instructions on some of the issues we find during the analysis.

0.5.1

  • Use a consistent 2 minute timeout for all processes.

  • Classify platform as nowhere when part of analysis fails.

0.5.0

  • Breaking changes

    • License renamed to LicenseFile
    • Summary.license -> licenses: we'll return multiple licenses
    • Removed LicenseNames.missing: empty List will indicate no license file
  • Greatly expanded and improved license detection.

0.4.0

  • Breaking changes

    • Renamed AnalyzerIssue -> ToolProblem

      • Renamed Summary.issues -> toolProblems
      • Renamed AnalyzerIssue.scope -> tool
      • Renamed AnalyzerScopes -> ToolNames
    • Renamed AnalyzerOutput -> CodeProblem

      • Renamed Summary.analyzerItems and DartFileSummary.analyzerItems -> codeProblems
    • Refactored CodeProblem (previously AnalyzerOutput):

      • Split up type, new fields: severity, errorType, errorCode
      • Renamed error to description
    • Refactored Fitness:

      • Renamed total -> magnitude
      • Removed value, using shortcoming instead (value = magnitude - shortcoming;)
    • Refactored PubSummary, renamed to PkgResolution

      • Moved pubspec -> Summary
      • Moved pkgVersion -> Pubspec.version
      • Moved authors -> Pubspec.authors
      • Merged packageVersions and availableVersions into dependencies
      • Renamed Summary.pubSummary -> pkgResolution
    • Refactored platform:

      • Renamed PlatformFlags -> PlatformNames
      • Removed most of the platform-related classes, using DartPlatform instead

0.3.0

  • Removed PlatformSummary.package in favor of PlatformSummary.pubspec of (new) type PubspecPlatform.

  • Renamed KnownPlatforms to PlatformFlags. Also:

    • Removed mirrors, browser and standalone.
    • Renamed native to dartExtension.
  • PlatformInfo

    • Now store dart:* references directly in uses.
    • worksInStandalone renamed to worksOnServer.
    • Other .worksIn* renamed to worksOn*.
    • Added String get description which returns a simple String description of the supported platforms. Examples: everywhere, flutter, server, web, conflict.
    • Removed angular as a value in uses.

0.2.4

  • Detect native extensions.

  • Detect licenses.

0.2.3

  • Lot's of stability improvements.

  • Improvements to error handling.

0.2.2

  • Lot's of cleanup to JSON output.

  • Improved stability.

  • Platform detection basics.

0.2.1

  • Added support for flutter packages.

  • Expanded analysis to include transitive dependencies.

  • Added scoring library.

  • Moved the repo to dart-lang.

0.2.0

  • A lot of tweaks. Still under heavy development.

0.0.1

  • Initial version.

Use this package as an executable

1. Install it

You can install the package from the command line:


$ pub global activate pana

2. Use it

The package has the following executables:


$ pana

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  pana: ^0.11.8

2. Install it

You can install packages from the command line:

with pub:


$ pub get

with Flutter:


$ flutter packages get

Alternatively, your editor might support pub get or flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:pana/pana.dart';
  
Version Uploaded Documentation Archive
0.11.8 Jul 24, 2018 Go to the documentation of pana 0.11.8 Download pana 0.11.8 archive
0.11.7 Jul 12, 2018 Go to the documentation of pana 0.11.7 Download pana 0.11.7 archive
0.11.6 Jul 11, 2018 Go to the documentation of pana 0.11.6 Download pana 0.11.6 archive
0.11.5 Jul 5, 2018 Go to the documentation of pana 0.11.5 Download pana 0.11.5 archive
0.11.4 Jun 18, 2018 Go to the documentation of pana 0.11.4 Download pana 0.11.4 archive
0.11.3 May 25, 2018 Go to the documentation of pana 0.11.3 Download pana 0.11.3 archive
0.11.2 May 22, 2018 Go to the documentation of pana 0.11.2 Download pana 0.11.2 archive
0.11.1 May 14, 2018 Go to the documentation of pana 0.11.1 Download pana 0.11.1 archive
0.11.0 May 9, 2018 Go to the documentation of pana 0.11.0 Download pana 0.11.0 archive
0.10.6 Apr 6, 2018 Go to the documentation of pana 0.10.6 Download pana 0.10.6 archive

All 43 versions...

Popularity:
Describes how popular the package is relative to other packages. [more]
64
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
82
Learn more about scoring.

We analyzed this package on Aug 10, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.0.0
  • pana: 0.11.8

Platforms

Detected platforms: Flutter, other

Primary library: package:pana/pana.dart with components: io, isolate.

Suggestions

The description is too short.

Add more detail about the package, what it does and what is its target use case. Try to write at least 60 characters.

Package is pre-v1 release.

While there is nothing inherently wrong with versions of 0.*.*, it usually means that the author is still experimenting with the general direction of the API.

Maintain an example.

Create a short demo in the example/ directory to show how to use this package. Common file name patterns include: main.dart, example.dart or you could also use pana.dart.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.48.0 <3.0.0
analyzer ^0.32.0 0.32.4
args >=0.13.7 <2.0.0 1.5.0
async >=1.13.3 <3.0.0 2.0.8
cli_util ^0.1.1 0.1.3+2
http >=0.11.3 <0.12.0 0.11.3+17
io ^0.3.0 0.3.3
json_annotation ^0.2.6 0.2.9+1 1.1.0
logging ^0.11.3+1 0.11.3+2
meta ^1.1.2 1.1.6
package_config >=0.1.5 <2.0.0 1.0.5
path ^1.4.1 1.6.2
pub_semver ^1.3.2 1.4.2
pubspec_parse ^0.1.2 0.1.2+2
quiver >=0.24.0 <3.0.0 2.0.0+1
yaml ^2.1.12 2.1.15
Transitive dependencies
charcode 1.1.2
collection 1.14.11
convert 2.0.2
crypto 2.0.6
csslib 0.14.4+1
front_end 0.1.4
glob 1.1.7
html 0.13.3+2
http_parser 3.1.3
kernel 0.3.4
matcher 0.12.4
plugin 0.2.0+3
source_span 1.4.1
stack_trace 1.9.3
string_scanner 1.0.3
typed_data 1.1.6
utf 0.9.0+5
watcher 0.9.7+10
Dev dependencies
build >=0.11.0 <0.13.0
build_config >=0.2.1 <0.4.0
build_runner ^0.9.2
json_serializable ^0.5.5
source_gen ^0.8.0
test ^1.3.0
test_descriptor ^1.0.3
test_process ^1.0.1