Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
/ss. -+ooooyhhsoo+++/-...-d+``oy- `:sNMMMMMMMMMMMMMMMMMMMMMMMMNMMMs .sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd` :hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm: +mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN. /mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNN- /mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMhd `yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmNMMMMMMMMMMm `dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh :smMMMMMMMN sMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNh+. ./ohNMmh -NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmy/. -mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMds/. hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd----:oyyyNMMMMMMMyo+- `MMMMMMMMMMMMMMMMMMMMMMMMMdMMMMMMMo `+ydMMMMMMMMMMMMMNs- /MMMMMMMMMMMMMMMMMMMMMdo.``-/sMMMM+.omMMMMMMMMMMMMMMMMMMMMh: /MMMMMMMMMMMMMMMMMMMs. oMMMhyMMMMMMMMMMMMMMMMMMMMMMMMMh` yNMMMMMMMMMMMMMMMMM/ yMMmmMMMMMMMMMmyo///oyNMMMMMMMMMs +mMMMMMMMMMMMMMMMMy /dMMMMMMMMMd: ./+/- :dMMMMMMMd `oMMMMMMMMMMMMMMMMd` .MMMMMMMMMh .dMMMMMm: hMMMMMMM: oNMMMMMMMMMMMMMMMMMM: :MMMMMMMMM: hMMMMMMMm :MMMMMMM/ :NMMMMMMMMMMMMMMMMMMMM/ -MMMMMMMMMo -NMMMMMN/ oMMMMMMM/ -mMMMMMMdhdMMMMMMMMMMM/` `dMMMMMMMMM+ :oso/` oMMMMMMMM: :NMMMN. :dMMMMMMMMM+ :MMMMMMMMMMmo:` .:smMMMMMMMNo .yNMMh: .mMMMMMMMMd hMMMMMMMMMMMMMMMMMMMMMMMMMMd. `` .:////++: oNMMMMMMMMMMMMMMMMMMMMMMd+` -+syhhdmmmNNNNNmdhss/.
This release was brought to you by 65 contributors contributing 141
The name of this release is BrewBear to highlight the improvements made
to our dependency management system, including the addition of
support for mac users. Mac has been an officially supported platform for
a long time and we would like to draw attention to this often overlooked
fact. Support has also been added for
cargo allowing bears
which use linters available from those package managers to manage their
Initial next generation core code has been merged and will be integrated
over the coming releases. Until then, please use the current API.
We have added a release candidate system to our release process to allow
users to easily test changes in the latest pre-release version of coala.
Instructions for obtaining the rc package will be posted for each
minor/major release to the coala gitter channel, blog, and twitter. We
encourage all users interested in checking out new features or helping
to test these pre-releases on their projects. If you do find a
regression in a release candidate, please report it to the issue tracker
with the word
Regression somewhere in the title.
- coala now exits with a non zero exit code when error level results
are logged. If you relied on coala logging in scripts or other
automated systems please modify them to work with the new behavior.
You can find all exit codes here.
- Section Inheritance had been added to the coafile parsing. With this
change we are deprecating implicit
Instead, you can now have definite section inheritance by using the
.in the section title. Append operators are now supported
allowing addition of values to inherited section. See the
Explicit Setting Inheritancesection of the
for a syntax example and detailed instructions
- The section name
cliis reserved for cli arguments and should not
be used in the coala configuration file (
coafile). If you are
currently using it in a configuration file, coala will warn you.
- coala now outputs absolute file paths when a bear fails. This should
make debugging bear failures easier when using custom bears.
- A new placeholder,
source_lines, has been added to the coala
--formatoption. Use it to output the affected lines in the source
file when a result occurs.
- Bears are displayed alphabetically when listed using
- coala outputs a warning if a setting is overridden in the same
section since this is probably not what the user intended.
--formatis handled correctly when
--ciis specified, outputting
formatted output without asking questions. Issue#3999
- coala will report the version of the dependency required when the
version check fails. Issue#3982
@linterdecorator works with global bears. See our bear writing
for more information on how to write a global bear with the
Bear.DownloadCachedFileraises exceptions when the download fails.
Please see the requests library
for a complete list of possible exceptions that will need to be
deprecate_settingsdecorator now supports multiple
deprecations of the same setting. Issue #3537
- A new
SEE_MOREattribute has been added to the
it to attribute (usually by linking the main page) the original tool
in linter bears.
- Unified Diff support has been added to the
Diffresult, linter and
- Caching has been fixed to work correctly. Results are only cached
when a bear successfully runs. A bear which fails in the middle of a
run will not have a result cached anymore. This should make flushing
the cache manually mostly unnecessary for end users. PR#3722
- Non-optional settings check settings from dependent bears now.
Previously, it would error because the dependency would not have its
settings satisfied. Issue#3149
Resultobject now handles
Nonevalues of TextPosition
properly. Previously, it would return arbitrary results which would
impact bear authors. Issue#3094
- A few problems when using coala in systems with incomplete locales
data have been fixed. This was common in Docker containers. Issue#3906
- Fixed critical section inheritance bug where sections with different capitalization would not inherit. Issue #4182
- Major changes to exitcode behavior(see docs)
default.coafile section will be deprecated soon. Please stop using it now!
- Initial next gen core code has been commited, however it has not been activated
- New logging handlers
- Better aspects support has been added, still not ready for general usage
- Empty results are not cached. End users shouldn't have to run with
- coala should now be able to output in
- golang now has coalang doc bindings (?)
- coafiles can now use the append (+=) operator to inherit from other sections
- ...and much more
`++- -o+` -oo: :yhho ohhy: :oo. :hhhoohhh+ +hhhoohhy: ``.--shhhhhy: /yhhhhho--..` +hhhhhhhhhhh+ ohhhhhhhhhhh/ `/+/////+hhhh/ +hhhy+///////` -yhhhs hshhhy- .os/ hhhhy- -yhhhh +ss. .yhho shhho``ohhhs `ohhy` -yhhs` +hhhsshhh+ `shhy- .::shhhs++/+yhy////shhhhhhs////yhy++++yhhho::- /hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh/ -::shhhs++++yhy////shhhhhhs +shhhs::. -yhhs` +hhhsshhh+ `shhy- .yhho` shhho``ohhhs ohhy. .ss+ hhhhy -yhhhh /so. -yhhhs shhhy- `///////+yhhh+ /hhhh+/////+/` /hhhhhhhhhhho +hhhhhhhhhhh+ `..--ohhhhhy/ :yhhhhhs--.`` :hhhoohhh+ +hhhoohhh: -oo: :yhho ohhy: :oo- `+o- -++`
For this release we had 168 commits contributed by 66 unique contributors
over 2.5 months.
The name of this release is PolarBear to reflect changes we have made to our
release process. We have implemented a release freeze before all releases
to serve as a testing period for all staged changes. This should also help
us keep releases on schedule.
This release is an enhancement release which brings the usual slew of
improvements to documentation and API. We have started preparing the codebase
for the big changes that are outlined in the cEPs like section inheritance
and the next generation core.
- Results are cached even if a bear does not run. This can lead to empty
results where there should be errors. To temporarily deal with this
run coala with the
- Test cases have been improved across the board so they catch more errors
- Log output via json has been added which is accessible by using the
- coala domain has been changed from
Please file a bug if you find any broken links or instances of the old url.
- emacs has been added to list of editors that coala supports.
- coala will now output a warning if you specify an editor that is not known.
noqakeyword used by other linters as an ignore keyword is now
supported as a coala ignore keyword.
libclang-py3update to 3.4 is known to cause problems for some users. Please
uninstall and reinstall it if coala tells you there is a version mismatch
C#now has proper language support and should work with AnnotationBear
and all other bears which require language configuration.
Diff.pyhas been deprecated and has been
scheduled for removal.
format_strsetting has been completely removed after being deprecated
last release. Use
formatinstead to specify a formatting string.
- Travis has been enabled for developers to test their changes on their own CI.
- Bears will now check for prerequisites using specified requirements
before running. Either override
check_prequisitesin the bear or write
a new requirement class if you wish to have a custom check.
- When a language is not known by coala, an
Unknownlanguage will be
@linterdecorator now warns when using unsupported or anonymous capture
dependency_managementpackage has been created to contain package
manager and dependency classes used by coala. All of the old
classes have been moved here. Some new dependencies classes are
MavenRequirement. Developers should add
requirement classes there now for the requirement types they wish to support.
DistributionRequirementcan now check if a package is installed in many
popular linux distros.
- Diffs are able to add a single line using the
Languageclass ignores leading and trailing spaces in language lookups.
Languageclass should auto-complete when using languages that have
- A Code of Conduct has been added. This will guide conflict resolution if the
need ever arises.
- API docs are now part of the coala repository.
- Developer contribution documentation has received a major update
- Fixed an issue where using linter bears on windows had thrown an exception.
-c(config file) option properly supports specifying directories.
Previously it has thrown an exception.
- Documentation status github badge has been fixed.
- Console interaction uses a unicode dot to represent spaces instead of the
bullet for better cross platform rendering.
Languageclass raises proper exception to fix
- Ignore statements in multi-line comments should be supported properly now.
This bugfix release addressed the following issues:
- The installer has been fixed to only install on supported python versions.
- The format_str option to specify a format string has ben restored to
coala run in format mode. This is deprecated and was only restored to
provide plug-in developers a grace period to switch to the replacement
- Setuptools was removed from our requirements list because having it only
only caused dependency problems for other packages installed on the system
coala Bears Issue #751
- PyPrint dependency was updated to a version which does not pull in
- API change: An auto-apply disable option was added to run_coala to fix
issue detection by unattended services that use coala when the coafile
contains a default_action
- A few specific language class behaviors were changed. This should only
__ o#'9MMHb':'-,o, .oH":HH$' "' ' -*R&o, dMMM*""'`' .oM"HM?. ,MMM' "HLbd< ?&H\ .:MH ."\ ` MM MM&b . "*H - &MMMMMMMMMH: . dboo MMMMMMMMMMMM. . dMMMMMMb *MMMMMMMMMP. . MMMMMMMP *MMMMMP . `#MMMMM MM6P , ' `MMMP" HM*`, ' :MM .- , '. `#?.. . ..' -. . .- ''-.oo,oo.-''
For this release only we had 58 different contributors from all around the globe contributing way
over 200 commits over 2.5 months to coala.
The name of this release is GlobalBear to honour our
GlobalBear class and
leave a statement on how global the community grows: gone are the days when we
visit conferences and we have to explain the project to all the people. More
and more people know the project before we meet them and this is great! This is
a huge step in our conquest to take over the world!
GlobalBear class serves our users by providing project wide "global"
analysis. This release it will probably make its last appearance because it
will be deprecated in favour of a more sophisticated concept in the near future.
We have also worked a lot towards building our dream of letting users declare
code analysis configuration completely language independently: to take a
sneak peek at what we want to do, check this out. You will see that
the first aspects are already in our source code and that bears can already
associate results with them so future versions of coala will be able to tell
the user a plethora of facts around the type of issue pointed out.
For users, we have added a lot of usability improvements as well as for example
the ability to merge patches within one line: if you previously had to run
coala multiple times because of patch conflicts, this is likely not the case
As a Bear writer you now have access to our
Language facilities: they
will give you facts about programming languages that you analyse so you can
build truly language independent bears. Also, you now can use
http://api.coala.io/ to get more information about our classes and functions
you work with.
Command Line Interface Changes:
coala-jsonhave been deprecated. You can now use
- Multiple patches within one line, even from different bears, can be
automatically merged by coala.
coalareturns the exitcode 2 when not passing any
--filesas well as when no section is enabled and nothing was done.
- coala can now automatically add
Ignore ...Bearcomments to your source
code. Simply use the
Add ignore commentaction when offered.
- Users can press enter to dismiss a result by default.
- Result action descriptions have been compressed to make them easier readable.
- The section name is now displayed when asking the user for missing settings.
coala --non-interactiveshows results and patches by default now.
coala-dbushas been removed as it wasn't used by anyone.
--no-colorargument allows to run coala with uncoloured results.
- Log messages are printed on stderr now.
coala --jsondoesn't output log messages in JSON anymore. This is a
technical issue. Log messages can easily be fetched from the stderr stream.
- Some performance improvements could be achieved.
- A lot more strings, like
no wayare allowed for boolean
Bear API Changes:
LanguageDefinitionhas been deprecated. Use
for usage hints.
- The deprecated
Lintclass has now been removed.
CondaRequirementhas been removed.
PackageRequirementclasses has been
deprecate_beardecorator is now available so bears can be renamed
Diffobject has now dedicated functions to
- A glob cornercase has been fixed.
- An issue where empty patches have been shown to the user has been fixed.
- Wrong handling of periods when changing casing has been fixed.
- A caching bug where results have not been shown to the user has been fixed.
- API documentation is now available at http://api.coala.io/
- Deprecated parameters are stored in the function metadata.
- Python builtin logging is now used.
- Numerous changes to get started on https://coala.io/cep5 have been
implemented. The first aspects are already defined in
coalib.bearlib.aspectsand bears can already append aspects to results.
coalangfiles now have an alias dictionary.
This bugfix release addressed the following issues:
- The cache will be correctly invalidated when changing section targets now.
- Dependencies are resolved before asking the user for needed values. This will
only affect custom bears that have dependencies that require settings.
- PyPrint was updated from 0.2.4 to 0.2.5.
- PipRequirement uses
sys.executableinstead of hardcoded python. This will
only affect coala or bear developers.
coala 0.8.0 - grizzly
- `Ns :s- . mMd` :Nd. :h /ss/` +md. dN` :NMMMy` .ymmy. -+` dM+ dMMMMMm`.NMMMMN. +Mo ` -sddy: yMMMMMM/+MMMMMMo dMo s/ +MMMMMy.dMMMMM-:MMMMMM+ -yhs` .Ms /MMMMMMo /hdh: oMMMMh`+MMMMm. -MN. hMMMMMh `/osssoos+- dMMMMMs oyhho.+mMMm:+dMMMMMMMMMm+ sMMMMMs mMMMMMy``` dMMMMMMMMMMMMMh.`sMMMh` yMMMMMMy `MMMMMMMMMMMMMMMMy:..` `yMMMMMd yMMMMMMMMMMMMMMMMMMMMNh+` .ohhs-+mMMMMMMMMMMMMMMMMMMMMMMMMd .yMMMMMMMMMMMMMMMMMMMMMMMMMMMh mMMMMMMMMMMMMMMMMMMMMMMMMMMMh` yMMMMMMMMMMMMMMMNhssssyyyso- /dMMMMMMMMMNy+. ./syhys/-
For this release, we have had 46 developers from around the world contributing
over 150 commits in the last 9 weeks.
Improving the API available for bear writers is one of the areas we've focused
on for this release, with several new and exciting features. General performance
has also been improved heavily with some major changes under the hood. The
documentation has also been worked on, with an emphasis on user-friendliness
There have also been major internal changes in preparation for the complete
decentralization of bears, which would allow the installation of individual
Below are some of the important changes introduced for this release:
- coala now supports syntax highlighting in results!
- Questions are now printed in color; this will improve visibility when a lot
of text is written to the screen.
- Added a
--show-capabilitiesflag that displays the types of issues coala
can detect and fix for a particular language.
- Display the line number when a line is missing; this could happen if a bear
that had run previously overwrites it.
For Bear Writers
- Bears now have a new
REQUIREMENTSattribute which will be used to
automatically resolve bear dependencies. This includes:
- Native requirements (from package managers such as
- Conda requirements
- Python requirements through
- Ruby requirements through
- NodeJS requirements through
- RScript requirements
- Julia requirements
- Native requirements (from package managers such as
- Language independent documentation parsing routines: these can be used to
make bears for linting documentation without having to worry about the
coalangnow supports C, C++, CSS, Java, Python3 and Vala.
- A new bear creation tool has been released: with this tool, it's easier than
ever before to create external linter based bears for coala!
- A new
ASCIINEMA_URLattribute has been added to bears. This should
contain an URL to an asciinema video displaying the bear's capabilities in action.
- Bear results may now have a
confidenceparameter: this is supposed to
quantify the confidence, on a scale of 1 to 100, the bear has when flagging results.
deprecate_settingsdecorator has been created to deprecate old,
unsupported bear parameters. Please see
for an example usage.
Code Simplificationhas been added to the set of possible fixes that
bears can offer.
- Fixed an issue where errors were generated for lines containing only a
single tab character. Issue #2180
- Fixed an issue with question where stray escape characters may be present.
- Group questions about missing values in a coafile by bears.
- An issue where an exception was raised wrongly when the same diff was
generated multiple times has been fixed.
- Caching is now enabled by default. This is a huge performance improvement
for HDD users - we've seen a 2x improvement when coala is run on coala.
To disable caching run coala with the
- An issue where coala takes over 2 seconds to print the help manual through
--helphas been fixed.
- A small performance improvement from reusing already loaded file contents.
- A complete overhaul to the README page with a focus on design and
- A new FAQ page has
- Various other documentation pages have been improved with new resources,
better explanations, and some corrections.
- The whole documentation has been moved to a
Please file any documentation related issues over there.
- Dropped Python 3.3 support
- There has been a shift of several modules from coala to
coala-utils. This includes the whole
ContextManagers, and some decorators.
,o8b, .o88Oo._ P d d8P .ooOO8bo._ d' p 88 '*Y8bo. .Y ." YA '*Y8b __ db, d" _ooQ.dPQ, YA 68o68**8Oo. .8' YI.Y" b B "8D *"' "Y8o .Y ;L 8, Yq.8 Y8 'YB .8D B .db_.L q, q "q '8 d8' 8D 8" qp 8, 8 8 d8888b d AY 8 ",dP Y, d888888 d' _.oP" "q 8; q. Y8888P' d8 '8 b "q. `Y88P' d8" 'D, ,8 Y ,o8P 'odY' oooo888P"
(Release logo by Fabian Neuschmidt)
For this release, 32 people from all over the world have contributed
about 200 commits over almost two months.
The focus of this release is certainly on the usability of coala.
Usability testing has made us aware of some important difficulties,
users have to face when trying out coala. We have implemented a lot of
countermeasures to lower this barrier.
The changelog below summarizes the most important user facing changes.
Not listed are especially lots of internal improvements and
- Patches are shown without prompting the user if small enough,
- Bears have metadata and can be browsed. Browse the bear
repository for more information on all the bears.
- Lots of usability improvements! coala will suggest using certain
options if no meaningful configuration was supplied.
- The help was revamped completely and is way easier to read.
--verbosealias is available for
default_actionssetting accepts globs for bears now.
--apply-patchesargument was added to automatically apply
- coala supports experimental caching. This can lower the run time to
a fraction of the time needed to perform the full analysis. It will
be enabled by default in the next release. To use it, invoke coala
- Bear showing is divided into a new set of settings:
shows all bears,
--filter-by-languageallows to filter them,
--show-descriptionallow changing verbosity
of the output.
- Tagging was removed.
linterdoes no longer show the executable of the bear by default.
- Globs will be internally cached now so they don't need to be
retranslated every time. This may show improvements of several
seconds when working with a large set of files.
- coala supports experimental caching. See
- coala does not delete
*.origfiles on startup anymore. This was a
huge performance hit especially on HDDs or big file trees. The
cleanup can be performed manually by running
Instead coala will keep track of
*.origfiles more smartly.
**.pycan again be used instead
- If errors happen before the initialization of logging, tracebacks
will be shown.
For bear writers:
- Bears can have a number of attributes now, including author
information, supported languages or categories. A requirements
attribute will help generating requirements definition files more
easily in the future.
linterwrapper provides a
- Bears can now delete and rename files.
LanguageDefinitiondoesn't need a
load language definitions.
- Results can be created directly from the Bear class more
.o88Oo._ .". " .". d8P .ooOO8bo._ dPo. O#O .oPb 88 '*Y8bo. 88o. .o#o. .o88 YA '*Y8b __ Y88o. .8. .o88Y YA 68o68**8Oo. W8888O888888888W "8D *"' "Y8o w8888'88'8888w Y8 'YB .8D `o88:88:88o' '8 d8' 8D .O8`88'8O. 8 d8888b d AY oO8I88I8Oo Y, d888888 d' _.oP" oO8|88|Oo q. Y8888P' d8 oO8.88.8Oo "q. `Y88P' d8" .oO.88.Oo. Y ,o8P .oO888888Oo. oooo888P" .oO8 8Oo. +oO8+ +8Oo+ 'bo. .od'
This release is shaped a lot by working on high quality bear writing tools. Our
codebase has matured further (improved tests, various internal improvements)
and key features for writing and organizing bears were introduced.
Over the last 1.5 months, 22 unique contributors have helped us at the coala
This time, the release logo is carefully hand crafted by Max Scholz!
- Smart globbing: use backslashes without an extra escape now if they don't
- Results now can have additional information appended.
- Bears expose information on which languages they support. You can query for
bears e.g. with
coala --show-language-bears C++for C++.
- Linters suppress the output correctly now when checking for linter
- The result filter algorithms can handle file additions and deletions now.
- Ignore statements without a stop statement are now accepted as well
For bear writers:
- A tutorial for managing bear dependencies is available in our documentation
- The Result object has a field
additional_infowhich can be used to give
an elaborate description of the problem.
typechain()function is now available for easy conditional type
- Bears have a
name()shortcut now which provides the bear class name.
get_config_directory()function is available that returns the root
directory of the project guessed by coala or provided (overridden) by the
- A new
linterdecorator makes it even easier to write new linter
Notable internal/API changes:
FunctionMetadatahas a new
mergefunction that can be used to merge
function signatures and documentation comments.