- Fixed deprecated API use.
- Preparing to use with
dartdoc 8.3.0
.
- Detect support for Swift Package Manager for ios/macos plugins.
- Fixes issue with local analysis without git repository root.
- Accept
logger
inPackageAnalyzer.inspectDir
method.
- Doesn't exist.
- Pass-through for
formatter/page_width
inanalysis_options.yaml
. - Upgraded
lints
to^5.0.0
- Updated report text for
wasm
readiness. - Updated paragraph separation in report sections.
- Expose
wasm
readiness analysis in the report (without any score).
- Remove
workspace
andresolution
properties from pubspec before analyzing.
- Updated suggestion for packages depending on SDK
_macros
. - Deprecated the
renderSimpleSectionSummary
method in public API.
- Updated dependency:
tar: ^2.0.0
. - New text logging format.
- Migrating
Summary.licenseFile
andSummary.licenses
toAnalysisResult.licenses
. - Breaking change: Removed
ToolEnvironment.panaCache
field (not intended for public API).
- Enable
macros
experiment pass-through inanalysis_options.yaml
. - Verify
executables
inpubspec.yaml
and check if the related files exist. - Fixed
has:executable
check.
- New recognized example files in the
example/bin
directory. - Add
has:executable
tag for packages withbin/<executable>.dart
files.
- Updated text and link on downgrade analysis.
- Report and score
pub downgrade
+dart analyze
.
- Do not emit package names in
allDependencies
with trivial syntax issues. - Log
dartdoc
output.
dartdoc
processing is run as the last step of the generated report.- Fix: missing custom SDK environment (config directory use) when invoking Flutter.
- Fix: unspecified
--dartdoc-version
will use the latest version in an isolated environment. To use the SDK'sdartdoc
, set the value tosdk
.
ToolEnvironment
:.create()
takesconfigHomeDir
to specify config the home directory used for the analysis (helps switching different analyzer SDKs).create()
takespubHostedUrl
asPackageAnalyzer.create()
was removed.
InspectOptions
:totalTimeBudget
to allow the dynamic reduction ofdartdocTimeout
.resourcesOutputDir
to store the resources files (without the previous callback).
bin/pana.dart
accepts new CLI arguments:--dart-config-home
(hidden)--flutter-config-home
(hidden)--dartdoc-output
(hidden)--dartdoc-version
--dartdoc-timeout
(hidden)--resources-output
(hidden)--total-timeout
(hidden)
BREAKING CHANGES
- Renamed
runProc
->runConstrained
. - Removed:
- deprecated APIs
InspectOptions.checkRemoteRepository
- repositories are verified by defaultPackageAnalyzer
:create()
inspectVersions()
storeResource
callback ininspectPackage()
, useInspectOptions.resourcesOutputDir
instead
ProcessOutput.asBytes
Report.joinSection()
ToolEnvironment
:create()
method droppeduseGlobalDartdoc
flag, will use global dartdoc whendartdocVersion
is specified, otherwise uses the Dart SDK'sdart doc
.create()
method droppeddartSdkDir
,flutterSdkDir
, andenvironment
, usingSdkConfig
for each of the SDKs.- removed parameters from
dartdoc()
detectFlutterUse()
get dartSdkDir
get flutterSdkDir
get environment
getFlutterVersion()
analysisOptionsFiles
changelogFileNames
currentAnalysisOptionsFileName
dartdocFailedSection
documentationCoverageSection()
documentationSectionTitle
firstFileFromNames
licenseFileNames
pubspecParseError
readmeFileNames
ToolException
has reference to the entirePanaProcessResult
, instead of just thestderr
.
- Fix: don't report hidden constructors as undocumented API symbols.
- Fix:
dart:ui_web
is now part of the SDK-detection library list. - The use of
kind
inpub-data.json
is deprecated, as it may contain different value on differentdartdoc
version. The field may be removed in a future version.
- Fix: limit number of documentation entries exported in
pub-data.json
. - Fix: Add
dart:js_interop_unsafe
as a web library. - Pre-compute missing documentation symbol before pruning the results.
- Fix: global
dartdoc
activation is forced to happen frompub.dev
.
- Pana binary now runs
dartdoc
and generates report based on the coverage (the same that pub-dev is using). The--no-dartdoc
command line argument skips this part of the analysis. - Breaking change: running the global dartdoc has become the default (instead
of the SDK's
dart doc
), because the latest SDK is behind the latestdartdoc
version, and we want to control what is being used by the analysis. - Breaking change:
ToolEnvironment.dartdoc
returnsPanaProcessResult
.
- Fix: empty
yaml
parsing. - Upgraded
package:lints
to3.0.0
.
- Removed file size checks. (If upload limits allow it,
pana
should not complain.)
- Added
dart:ui_web
as Flutter Web platform. - Fix: static analysis is done only when the package resolution was successful.
--no-warning
is no longer needed, and has no effect.- Fix: expose repository verification issues in report.
- Upgraded
package:tar
to1.0.0
. - Added
AnalysisResult.grantedPoints
andAnalysisResult.maxPoints
.
- Always use
dart format
instead offlutter format
.
- Merge Dart 3 compatibility report into static analysis.
- Breaking change: Remove future SDK flags.
- Upgrading to
package:analyzer 6.0.0
- Export missing
PanaProcessResult
. - Fix
package:lints
as main dependency.
- Do not block repository check when
pubspec.yaml
is in path that is not accepted. - Upgraded to Dart 3.0.
- Resolve
package:lints/core.yaml
locally before loading from GitHub. InspectOptions.analysisOptionsYaml
is now deprecated.- Removed null-safety report (Dart 3 compatibility report is used by default).
Breaking changes:
PanaProcessResult
no longer implementsdart:io
'sProcessResult
.DartdocResult
usesPanaProcessResult
instead ofProcessResult
.- Deprecating
InspectOptions.futureSdkTag
, configuration no longer used.
- Check the latest 2.x release compatibility only for Dart 2.x packages.
- Dart 3 compatibility section label includes Flutter 3.10 when applicable.
- Code cleanup in
ToolEnvironment
.
- Fix
pub upgrade
to exclude example directory.
- New report section: Dart 3 compatibility.
- Nicer error message if trying to download non-existing version of package.
- Removed
--[no|suppress]-analytics
flags and usingCI=true
instead. Breaking changes inToolEnvironment.fake
(removal of commands).
- Upgraded dependency:
package:markdown
. - Add tag
topic:<topic>
for packages that have assigned topics.
- Upgrading CI for new SDKs and enabling
pubspec.yaml
for Dart 3. - Future SDK check is running on a copy, and resolves dependencies first.
- Strict names in package layout checks.
- Use different user-agent for URL checks.
- Use
PANA_CACHE
local directory to cache some of the shared result context (URLs, repository).
- Fix: allow <4.0.0 for Dart 3 packages.
- Fix: limit highlighted code snippet sizes in the report.
- Analyze multiple versions of the same package with shared result context (URLs, repository).
- Fix: tar extraction issue with directory entries.
- Fix: revert the extra line in
<summary>
blocks.
- Set
FLUTTER_ROOT
environment variable when runningflutter
commands. - Updated
Summary
:createdAt
field + new fields inchange
method. - Isolate
git
process from host config through environment variables.
PanaTags
fields provide a single place for most of the tags that a package can get.- Experimental options to analyze and tag compatibility with a future SDK.
- Lenient repository/homepage URL switch for packages that have no repository verification enabled.
- Add tag
has:screenshot
for packages that have screenshots. - Renamed tag:
has:errors
->has:error
. - New platform tagging with separate SDK runtimes.
- Add tag
has:errors
when the package has severe issues that prevent further analysis. - Null safety tagger does not check
dart:
libraries. - Removed internal hostname check from the report and score.
- Fixed: platform tagging with dart:mirrors.
- Deprecated
AnalysisOptions.isInternal
. - Detect
CONTRIBUTING.md
during repository verification and expose if URL check succeeds. - BREAKING CHANGES on rarely used external API:
- Removed
UrlProblemCodes.internal
. - Removed
UrlChecker.addInternalHosts
. - Removed named parameter from
UrlStatus.getProblemCode
.
- Removed
- Upgraded
package:analyzer
dependency. - Generate 190x190 thumbnails of screenshots.
- Verify
funding
URLs and store the working ones inAnalysisResult.fundingUrls
. - Increase screenshot size limit to 4 MB and allow up to 10 screenshots.
- Preprocess license texts for better match.
- Explain
HEAD
request for URL checks. - Grant 10 points for using only OSI-approved licenses.
- Fix: don't resolve dependencies in example folder of flutter packages.
- Fix: handle
CheckedFromJsonException
during repository verification.
- Improved URL resolver.
- Always use English locale for git commands.
- Fix: Remove
pubspec_overrides.yaml
when runningpub upgrade
orpub outdated
.
- Predefined platform assignments for binary-only packages.
- Fix: internal hostname check uses full-length match.
- (Experimental) Expose
RepositoryProvider
in the analysis result (Repository.provider
). - (Experimental) Merged
RepositoryUrl
intoRepository
with extended URL resolver. - (Experimental) Refactored fields of
Repository
.
- Populate the pubspec's
repository
field. - Fix: Use the stripped/augmented
pubspec.yaml
forpub outdated
. - (Experimental)
Summary.result
(AnalysisResult
) field for normalized and verified references and derived values. - Moved
Summary.repository
underAnalysisResult
. - Additional formatting checks in repository URL parsing.
- Expose repository verification failures in the report (and score).
- Fixed repository verification exceptions.
- Cache the currently fetched depth in
GitLocalRepository
. - List files and check all
pubspec.yaml
during repository verification. - Typed
stdout
andstderr
inPanaProcessResult
. - Updated SPDX licenses.
- Emit
license:<license>
tag on all the detected licenses. - Emit
license:osi-approved
andlicense:fsf-libre
.
- Fix issue in the computation of
pubHostedUrl
incomputeOutdatedVersions
.
- New defaults for JSON: do not include
null
values, explicittoJson()
. - Experimental
git
repository verification. - Multiple license detection exposed in
Summary.licenses
.
pana
binary changed exit code from -1 to 127 when score is not within threshold.- Start emitting
license:<license>
tags. - Start populating
Summary.repository
, optionally withgit
remote branch check.
- Fix build verify test and generated version.
package:analyzer
dependency upgraded to^3.1.0
.- Fix dart analysis. Code problems are now propagated to the pana report.
- Fix retry on version listing HTTP requests during
getVersionListing
. RepositoryUrl
(private API) to detect repository patterns and resolve paths.
- Support for top-level platform tags in
pubspec.yaml
.
getRepositoryUrl
with custombranch
parameter (defaults tomaster
).- NOTE:
LicenseFile.url
andgetRepositoryUrl
is deprecated, will be removed in a future release. - Fix platform classification for Flutter plugins without Dart or asset files.
- Tag Flutter plugins with
is:plugin
. - Fix thrown exception to use
TagException
.
- Consistent license evaluation order.
- Better handling of timeout or output exceeded.
- Better handling of analyzer/code parsing errors.
- Better handling of JSON parsing issues.
- Fix release.
- Use only
dart pub get
for outdated check. - Trim output of failed outdated process.
- New license detection.
- Use
package:lints/core.yaml
as defaultanalysis_options.yaml
override. - Upgraded
package:analyzer
to^2.1.0
and updated deprecated code use. - Updated tool environment to use
[ dart | flutter ] format
instead ofdartfmt
. - Updated tool environment to use
flutter pub outdated
when package uses Flutter.
- Fix issue with git root directory detection.
- Fix SDK version parsing issue (also reading
stdout
for newer SDKs). Summary.urlProblems
lists the URLs that should be displayed differently onpub.dev
.- BREAKING CHANGES
UrlStatus
is converted to a class with fields.UrlChecker
internal cache is removed (incl.maxCacheSize
,existsInCache
,markExistsInCache
). Caching implementations should wrap theUrlChecker.checkUrlExists
method.- Removed
deduplicate
parameter fromrunProc
function. runProc
process is killed if the output is above 10 MiB (regardless of line count).
- Upgraded dependencies:
analyzer
andjson_serializable
. - Report a reason when no platform is detected - still lacking more details.
- Terminate the timeouted processes with
sigkill
. - The
deduplicate
parameter inrunProc
is no longer used and will be ignored. - Updated cache handlers for
UrlChecker
.
- Fix null-safety classification issue with
dart-ext:
imports. - BREAKING CHANGES
- Removed methods from public API:
detectLicenseInContent
,detectLicenseInDir
,detectLicenseInFile
,getLicenseUrl
,getSignals
,getVersionListing
,handleProcessErrors
,imageExtensions
,listFiles
,listFocusDirs
,nonAsciiRuneRatio
,parseCodeProblem
,prettyJson
,retryProc
,runProcSync
(deleted),sortedJson
,withTempDir
,CodeProblem
,PackageLocation
(deleted),ToolEnvironment.activateGlobalDartdoc
(deleted).
- Removed methods from public API:
- Fix the detection of Flutter SDK.
- Fix null safety operator bug.
- Limit the length of the source spans in the report.
- Removed package list of 2.10 null-safety experiments.
- Detect
git
monorepo root and copy everything from that root for local analysis. - Update dependencies to latest.
- Migration to null-safety.
- BREAKING CHANGES
- Deprecate the
SCREAMING_CAPS
versions of theLicenseNames
constants. Use the newly introducedlowerCamelCase
versions instead. - Removed internal models from public API (
Outdated
,OutdatedPackage
,VersionDescriptor
).
- Deprecate the
- Use
dart analyze
instead ofdartanalyzer
. bin/pana
copies package content to a separate directory.
- Relax symlink handling
- Use streaming download and extraction.
- Do not block analysis on too many lines from
dartanalyzer
. - BREAKING CHANGES
- Removed
extractTarGz
method. ToolEnvironment.runAnalyzer
accepts only a single directory parameter.
- Removed
- Fix symlink calculation
- Fix tagging of asset-only packages.
- Use
package:tar
instead oftar
process. - Run
dartanalyzer
separately for each directory.
- Use
dart pub
instead ofpub
. - Flutter SDK on CI + Flutter package in end2end test.
- Fix: fill minimum Dart SDK range if missing.
- Fix: use
line-length
option in report. - New options for CI:
dart-sdk
,exit-code-threshold
. - BREAKING CHANGES
- Internal to
pub.dev
:dartdocFailedSection
signature changed to match recent update. - Removed
InspectOptions.analysisOptionsUri
. UseanalysisOptionsYaml
instead. WhenanalysisOptionsYaml
is not specified,pana
will load defaults from GitHub. - Removed
InspectOptions.nullSafetySectionEnabledBeforeOptin
.
- Internal to
- Award points for fully null safety enabled packages.
- Upgraded CI to use
2.12.0
SDK. - Enabled dependency constraints to include null-safe versions.
- More graceful behavior when the analyzer crashes.
- Ignore Flutter version constraint upper bounds.
- If unsupported versions of dependencies are newer than 30 days or depend on an unreleased sdk the dependencies section will be marked as passing instead of partial.
- Update version constant.
- Fix of platform detection for executable-only packages.
- Fix outdated dependencies check, to ignore outdated packages from
pub outdated
if they are allowed by the constraint, and hence, just mutually incompatible.
- Does not depend on package:tar.
- BREAKING Removed:
createPkgResolution
Summary.pkgResolution
PkgResolution
PkgDependency
ConstraintTypes
DependencyTypes
VersionResolutionType
ToolEnvironment.listPackageDirsSync
- BREAKING
ToolEnvironment.runProc
andToolEnvironment.runProcSync
now take the executable as the first element of the argument list instead of as a separate argument. - If unsupported versions of dependencies are newer than 30 days or depend on an unreleased sdk the package will still be awarded points in the report.
- Better timeout message for dartdoc section
- Adjust
runProc
timeout/kill handler.
Summary.allDependencies
to store the name of direct-, dev- or transient dependencies.Summary.pkgResolution
will be removed in a future release.- Upgraded
package:analyzer
to0.41.0
. - Deprecated methods in
ToolEnvironment
- Use library import graph to determine null safety.
- Tag packages with
is:null-safe
regardless whether the current SDK support.
- Improvements to null safety section.
- Fixed NPE on missing
ReportStatus
and do not backfill automatically.
- Added a report section about null safety.
- Upgraded
package:analyzer
andpackage:markdown
. - Removed overrides in
pubspec.yaml
. - Fixed first version for null safety (#791).
- Fix: RangeError in certain reported issues.
- New field:
ReportSection.id
.
- Classify asset-only packages as multi-platform.
- Fix: NPE when LICENSE file is not recognized.
- Runs
dartanalyzer
only once.
- Fix: NPE in license URL checks.
- Fix: SDK constraint check should use the tool-environment's SDK version.
- Re-added non-ASCII character checks.
- Fix: Malformed UTF-8 files caused markdown checks to fail.
- Fix: Apply InspectOptions.analysisOptionsUri on new scoring.
BREAKING CHANGES:
bin/pana.dart
CLI changes:- removed
--report
flag (it is always the default), added--verbose
flag to display full JSON data - removed
--scores
flag (it is always-on by default) - removed
--verbosity
option (the output data is always the same)
- removed
- Removed:
bin/bulk.dart
ComponentNames
DartFileSummary
DartPlatform
Health
Maintenance
PlatformNames
PlatformUse
Stats
Suggestion
Summary.dartFiles
Summary.health
Summary.licenses
(using only a singleSummary.licenseFile
)Summary.maintenance
Summary.platform
Summary.stats
Summary.suggestions
Verbosity
- Clarified and fixed report summaries.
- Fix:
mailto
links are no longer classified as unsecure. - Download URLs recognize
.git
when linking to a file.
- Fix: handle new
--version
output from latest Dart SDK. - Various nit fixes to the generated report.
- Fixed required URL checks in pubspec validation.
- Fixed
pub outdated
execution - using specified package dir. - Various nit fixes to the generated report.
- Fix for deciding the latest version when no version is given for a hosted package.
- Deferred source span loading (fixes out of memory issue).
- Updated the rendering templates of
Section.summary
. - Fixed percent calculation in documentation report.
- Fixed string processing in untar error path.
- Implemented new scoring report.
- Improved unpacking of package archives.
- Better path handling on Windows.
- Trust plugins platform declaration when assigning tags.
- Fixed NPE in old Flutter plugin format detection.
- Adds a tag for null safety.
- Adds suggestions for why tags don't apply.
- Command line uses
--source=path
by default. - Support platform tagging of old-style flutter plugin declarations.
- Give penalty for old-style flutter plugin declarations.
- Fix: NPE after
dartanalyzer
exits with a failure.
- Fix: handle new
--version
output from latest Dart SDK.
- Fix: detect Dart files on Windows
- Fix: unescape double-backslash from files reported by
dartanalyzer
on Windows. - Fix: avoid crashing on "file://" imports.
- Fix: when there are no libraries matching
lib/*.dart
, other libraries outside oflib/src/
will be recognized as top-level libraries. - Use
repository
frompubspec.yaml
to resolve license URLs. - Example detection:
README.md
is de-prioritized, Dart files take precedence.
InspectOptions.analysisOptionsUri
to optionally control whichpedantic
version (or other package's) ruleset is used for analysis lints.
- Updated tag detection for packages without a primary library.
- Upgraded analyzer to
^0.39.0
. - More
dart:*
libraries in tag detection:cli
,nativewrappers
,html_common
. - Limit overall style lint penalties on health score: 25%.
- Don't penalize packages on legacy platform detection results.
- Fix the version number of pana
- Allow import of platform:flutter on platform web when calculating tags.
- Fix the finding of primary library.
- More handling of degenerate cases when computing sdk, platform and runtime tags.
- Handle degenerate cases when computing sdk, platform and runtime tags.
- Compute sdk, platform and runtime tags.
-
UrlChecker
follows redirects (max. 10 redirects). -
Fix: pre-release versions are not considered when detecting outdated dependencies.
-
Detect and report sdk tags ('sdk:flutter', 'sdk:dart').
- Upgraded dependencies:
analyzer
0.38.2
.
-
Updated suggestion for not supporting future stable SDKs.
-
Upgrade dependencies:
analyzer
to0.37
-
Support the latest
json_annotation
. -
Don't penalize outdated dependency when the package's constraint allows it, but a dependent package or SDK restricts it.
- Fix: penalize outdated package constraints only for direct dependencies.
- Penalize package constraints that does not support the latest published versions of their dependencies.
- Recognize
.markdown
and.mdown
files. - Recognize
COPYING
andUNLICENSE
as license file names (or prefix). - Accept any extension for license files.
- Fixed the use of
pedantic
rules following the new versioned pattern.
-
Fix: delete local temporary
pedantic_analyis_options_[timestamp].g.yaml
. -
Upgrade dependencies:
analyzer
to0.36
-
Penalty for too large readme, changelog or example.
-
Penalty for too large
pubspec.yaml
. -
Display calculated health and maintenance scores when
pana
is called with--scores
. -
Ask for example only for packages with public libraries.
-
Deduplicate
dartanalyzer
output lines.
- Support the latest
package:analyzer
.
-
Don't block platform classification on hints.
-
Apply
pedantic
rules without referencingpackage:pedantic
in the inspected package'spubspec.yaml
. -
Warn about insecure (non-
https
) image URLs in markdown content (readme, changelog and example).
-
Link to package layout conventions in example-related suggestions.
-
Use
package:pedantic
as default package analysis ruleset. -
Linear penalties for description.
-
Updated suggestion messages.
- Maintenance score penalty for:
- non-https URLs
git
dependencies- strict parsing errors of
pubspec.yaml
-
Support
--line-length
in command-line and inInspectOptions
(pass-through todartfmt
). -
Fix
pub upgrade
parsing. -
Strict SDK constraint status:
sdk: any
orsdk:
is considered missing constraint- handling cases without upper bound (
sdk: >1.0.0
is rejected by Dart2 latest)
-
Analysis options used in code health scoring updated:
- removed stale options,
- included latest Flutter-enabled lints,
- included latest stagehand-enabled lints.
-
Upgraded to
package:analyzer 0.34.1
, which fixed a NPE. -
Validating
repository
andissue_tracker
URLs.
-
Code cleanup.
-
Reduce the amount of warning+ level log messages when tools fail.
-
Handle package with bad
pubspec.yaml
.
-
Reduce the amount of logging when
dartfmt
fails due to an issue in the package. -
Display Dart SDK warning if package doesn't allow the latest Dart 2.X version.
-
Bulk processing and comparison.
-
Penalty for description using too many non-ASCII characters.
-
Use
--dry-run
on executing flutter format. -
Retry the external process on downloading and listing packages.
-
Use Flutter's internal Dart SDK to run
dartanalyzer
on Flutter packages.
-
Increase the severity of missing SDK constraint.
-
Make
example/readme.md
the first-level example-file candidate. -
Scores values should be consistently in the
[0.0-1.0]
range.
-
Documented how scoring works.
-
Estimate health score penalties.
-
Increased
dartfmt
timeout to 5 minutes. -
Store basic stats in the analysis summary.
-
Detect
example/readme.md
(or similar pattern) as an alternative to single.dart
example.
- Bugfix: pre-v1 release should be pre-v0.1 instead.
- Bugfix: packages without Dart files failed the health checks.
Breaking changes:
-
Named parameters in the following constructors:
Summary
,DartFileSummary
,PkgDependency
,CodeProblem
. -
Removed per-file and overall
Fitness
, using a top-levelHealth
report instead. Follows the proposed changes that allow us to clearly communicate the scoring mechanism. -
Removed
Penalty
and using the simpler to understandscore
in place of it.
Updates:
-
Use
flutter format
for Flutter packages. -
Support relative local path with
--source path
. -
Track tool failures and set health score to 0 if there is any.
-
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.
- Suggestions for SDK constraint and Dart 2 compatibility.
- Updated report on
dartanalyzer
suggestions.
-
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.
-
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.
-
Support changing part of the analysis result.
-
Fix
dartdoc
timeout when usingpub global run
.
-
dartdoc
processing: do not exclude packages by default, asdartdoc
0.19
handles SDK links. -
expose
getAgeSuggestion
method for pub site -
Update
analyzer
dependency to^0.32.0
.
-
Upgrade CI to dev.54 and fix new deprecation warnings.
-
Bugfix: do not initialize
dartdocSuccessful
with a value. -
Support
--flutter-sdk
in thepana
binary.
Breaking changes:
-
DartSdk
,FlutterSdk
andPubEnvironment
is replaced withToolEnvironment
. -
ToolEnvironment.runAnalyzer
returns the text output of the process. -
Consolidating options in
InspectOptions
, changingPackageAnalyzer
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 inSummary
). -
Removed
Fitness.suggestions
(moved it toDartFileSummary
)
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
anddocumentation
properties to point to an existing and external web page. -
--verbose
command-line andVerbosity
option to control the details in the analysis output.
-
Enable Dart 2 Preview in analyzer options (including non-Flutter packages).
-
Change platform classification of
dart:isolate
: no longer available onweb
. -
Treat
environment:
keys as dependent SDKs (e.g.flutter
). -
Use
LibraryElement.hasExtUri
to detectdart-ext:
imports. -
Detailed suggestion messages when package has conflicting platforms.
- Enable Dart 2 Preview in Flutter analyzer options.
-
Fix CI test
-
Flutter-specific suggestion messages for
dartfmt
anddartanalyzer
.
-
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
).
-
Fix issue of not using the
PUB_CACHE
directory when it was set. -
Update
analyzer
to 0.31 and extendsquiver
version range. -
Fix issue where we were not passing the proper package directory variable.
-
Expose all
dartanalyzer
anddartfmt
problems as suggestions.
-
Include component list in platform classification reasons.
-
Do not report on unconstrained SDK dependencies.
-
New platform component:
build
. -
Remove
dependency_overrides
frompubspec.yaml
.
BREAKING CHANGES:
-
Removed
DartPlatform.description
andDartPlatform.descriptionAndReason
because we don't use them elsewhere and complicates thePlatformNames
witheverywhere
andundefined
. -
Removed
PlatformNames.everywhere
andPlatformNames.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 fieldscomponents
anduses
instead. -
Removed
PlatformNames.server
(and its platform detection), using a widerother
platform instead.
-
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.
- Fix NPE when dependency has no constraint (e.g. git repo).
-
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 likeuri_has_not_been_generated
.
-
Unblock platform classification on a new class of errors.
-
Better messages in platform classification.
-
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.
-
PackageAnalyzer.inspectPackage
added a named argumentdeleteTemporaryDirectory
. Setting this tofalse
retains the directory and prints its location to the log. Useful for debugging. -
Maintenance
-
BREAKING
getMaintenanceScore
now takes an optionalage
parameter replacing the previously requiredpublishDate
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 toMaintenance.suggestions
-
-
BREAKING
Suggestion.file
is nowString
instead ofdynamic
. -
Detect the new format of native extensions.
-
Unblock platform classification on a new class of errors.
-
Use
PUB_HOSTED_URL
for package downloads.
- Allow more versions of
package:args
.
-
Added
pana
as an executable. Enablespub global activate pana
. -
Improved license detection: commented license files are now recognized.
-
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.
- Add
SuggestionLevel.bug
and use it to record fatal errors with the tool.
- Fixed issue where analyzer and/or formatter were run on directories with no Dart files.
-
Breaking changes
-
Summary.sdkVersion
is now aVersion
instead ofString
. -
new PackageAnalyzer(...)
now takes aDartSdk
instance instead of aString
.
-
-
static Future<PackageAnalyzer> create(...)
was added toPackageAnalyzer
. -
Added
logger
optional argument toPackageAnalyzer.inspectPackage
.
- Allow platform classification for a small class of analysis errors.
- Don't count the absence of an
analysis_options.yaml
file against a package.
-
Breaking changes
- Removed
ToolProblem
class. - Removed
Summary.toolProblems
, in favor ofSummary.suggestions
.
- Removed
-
Detect and store maintenance-related data in summary.
- Scoring of tool problems moved from
Fitness
toMaintenance
.
- Scoring of tool problems moved from
-
Provide human-readable feedback and instructions on some of the issues we find during the analysis.
-
Use a consistent 2 minute timeout for all processes.
-
Classify platform as
nowhere
when part of analysis fails.
-
Breaking changes
License
renamed toLicenseFile
Summary.license
->licenses
: we'll return multiple licenses- Removed
LicenseNames.missing
: empty List will indicate no license file
-
Greatly expanded and improved license detection.
-
Breaking changes
-
Renamed
AnalyzerIssue
->ToolProblem
- Renamed
Summary.issues
->toolProblems
- Renamed
AnalyzerIssue.scope
->tool
- Renamed
AnalyzerScopes
->ToolNames
- Renamed
-
Renamed
AnalyzerOutput
->CodeProblem
- Renamed
Summary.analyzerItems
andDartFileSummary.analyzerItems
->codeProblems
- Renamed
-
Refactored
CodeProblem
(previouslyAnalyzerOutput
):- Split up
type
, new fields:severity
,errorType
,errorCode
- Renamed
error
todescription
- Split up
-
Refactored
Fitness
:- Renamed
total
->magnitude
- Removed
value
, usingshortcoming
instead (value
=magnitude - shortcoming;
)
- Renamed
-
Refactored
PubSummary
, renamed toPkgResolution
- Moved
pubspec
->Summary
- Moved
pkgVersion
->Pubspec.version
- Moved
authors
->Pubspec.authors
- Merged
packageVersions
andavailableVersions
intodependencies
- Renamed
Summary.pubSummary
->pkgResolution
- Moved
-
Refactored
platform
:- Renamed
PlatformFlags
->PlatformNames
- Removed most of the platform-related classes, using
DartPlatform
instead
- Renamed
-
-
Removed
PlatformSummary.package
in favor ofPlatformSummary.pubspec
of (new) typePubspecPlatform
. -
Renamed
KnownPlatforms
toPlatformFlags
. Also:- Removed
mirrors
,browser
andstandalone
. - Renamed
native
todartExtension
.
- Removed
-
PlatformInfo
- Now store
dart:*
references directly inuses
. worksInStandalone
renamed toworksOnServer
.- Other
.worksIn*
renamed toworksOn*
. - Added
String get description
which returns a simpleString
description of the supported platforms. Examples:everywhere
,flutter
,server, web
,conflict
. - Removed
angular
as a value inuses
.
- Now store
-
Detect native extensions.
-
Detect licenses.
-
Lots of stability improvements.
-
Improvements to error handling.
-
Lots of cleanup to JSON output.
-
Improved stability.
-
Platform detection basics.
-
Added support for
flutter
packages. -
Expanded analysis to include transitive dependencies.
-
Added scoring library.
-
Moved the repo to
dart-lang
.
- A lot of tweaks. Still under heavy development.
- Initial version.