coala provides a unified command-line interface for linting and fixing all your code, regardless of the programming languages you use.
/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 commits.
The name of this release is BrewBear to highlight the improvements made
to our dependency management system, including the addition of brew
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 conda
and cargo
allowing bears
which use linters available from those package managers to manage their
dependencies.
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.
Breaking Changes
General
default
section inheritance.
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 Inheritance
section of the
docs
for a syntax example and detailed instructionscli
is 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.Usability
source_lines
, has been added to the coala
--format
option. Use it to output the affected lines in the source
file when a result occurs.--show-bears
.--format
is handled correctly when --ci
is specified, outputting
formatted output without asking questions. Issue#3999
Bear Developers
@linter
decorator works with global bears. See our bear writing
docs
for more information on how to write a global bear with the
@linter
decorator.Bear.DownloadCachedFile
raises exceptions when the download fails.
Please see the requests library
docs
for a complete list of possible exceptions that will need to be
handled.deprecate_settings
decorator now supports multiple
deprecations of the same setting. Issue #3537
SEE_MORE
attribute has been added to the Bear
class. Use
it to attribute (usually by linking the main page) the original tool
in linter bears.Diff
result, linter and
display mechanisms.Bugfixes
Result
object now handles None
values of TextPosition
properly. Previously, it would return arbitrary results which would
impact bear authors. Issue#3094
default
.coafile section will be deprecated soon. Please stop using it now!--flush-cache
anymoreunified-diff
format `++- -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.
Known Bugs
--flush-cache
optionGeneral
--log-json
option.coala-analyzer.org
to coala.io
.
Please file a bug if you find any broken links or instances of the old url.Usability
noqa
keyword used by other linters as an ignore keyword is now
supported as a coala ignore keyword.libclang-py3
update 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
in libclang-py3
.C#
now has proper language support and should work with AnnotationBear
and all other bears which require language configuration.Deprecations
change_line
method in Diff.py
has been deprecated and has been
scheduled for removal.format_str
setting has been completely removed after being deprecated
last release. Use format
instead to specify a formatting string.Developers
check_prequisites
in the bear or write
a new requirement class if you wish to have a custom check.Unknown
language will be
used.@linter
decorator now warns when using unsupported or anonymous capture
groups.dependency_management
package has been created to contain package
manager and dependency classes used by coala. All of the old *Requirement
classes have been moved here. Some new dependencies classes are
CabalRequirement
and MavenRequirement
. Developers should add
requirement classes there now for the requirement types they wish to support.DistributionRequirement
can now check if a package is installed in many
popular linux distros.add_line
method now.Language
class ignores leading and trailing spaces in language lookups.Language
class should auto-complete when using languages that have
been defined.Docs
Bugfixes
-c
(config file) option properly supports specifying directories.
Previously it has thrown an exception.
Issue 3221
Language
class raises proper exception to fix hasattr
behavior.
Issue 3160
This bugfix release addressed the following issues:
format
.
Issue #3303
__
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!
The 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 anymore!
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-ci
and coala-json
have been deprecated. You can now use
coala --non-interactive
and coala --json
respectively.coala
returns the exitcode 2 when not passing any --bears
or
--files
as well as when no section is enabled and nothing was done.Ignore ...Bear
comments to your source
code. Simply use the Add ignore comment
action when offered.coala --non-interactive
shows results and patches by default now.coala-dbus
has been removed as it wasn't used by anyone.--no-color
argument allows to run coala with uncoloured results.coala --json
doesn't output log messages in JSON anymore. This is a
technical issue. Log messages can easily be fetched from the stderr stream.roger
or no way
are allowed for boolean
values. (https://github.com/coala/coala/commit/728b7b02da8ca8f91b91c67784872244c0820a77)Bear API Changes:
LanguageDefinition
has been deprecated. Use
coalib.bearlib.languages.Language
instead. Consult
http://api.coala.io/en/latest/coalib.bearlib.languages.html#module-coalib.bearlib.languages.Language
for usage hints.Lint
class has now been removed.CondaRequirement
has been removed.multiple
constructor for PackageRequirement
classes has been
removed.deprecate_bear
decorator is now available so bears can be renamed
seamlessly.Diff
object has now dedicated functions to replace
, insert
and remove
SourceRange
objects.Bug Fixes:
Documentation:
Internal Changes:
coalib.bearlib.aspects
and bears can already append aspects to results.coalang
files now have an alias dictionary.This bugfix release addressed the following issues:
sys.executable
instead of hardcoded python. This will
only affect coala or bear developers. -
`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 and design.
There have also been major internal changes in preparation for the complete decentralization of bears, which would allow the installation of individual bears.
Below are some of the important changes introduced for this release:
New Features
coala-json
now supports --show-bears
and --filter-by-language
--show-capabilities
flag that displays the types of issues coala
can detect and fix for a particular language.For Bear Writers
REQUIREMENTS
attribute which will be used to
automatically resolve bear dependencies. This includes:
apt-get
, dnf
, pacman
, ...)pip
go
requirementsgem
npm
coalang
now supports C, C++, CSS, Java, Python3 and Vala.ASCIINEMA_URL
attribute has been added to bears. This should
contain an URL to an asciinema video displaying the bear's capabilities in action.confidence
parameter: this is supposed to
quantify the confidence, on a scale of 1 to 100, the bear has when flagging results.deprecate_settings
decorator has been created to deprecate old,
unsupported bear parameters. Please see
here
for an example usage.Code Simplification
has been added to the set of possible fixes that
bears can offer.Bug Fixes
Performance
--disable-caching
flag.--help
has been fixed.
Issue #2344
Documentation
Regressions
Internal Changes
StringProcessing
library, 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 documentation fixes.
New Features:
--verbose
alias is available for -L DEBUG
.default_actions
setting accepts globs for bears now.--apply-patches
argument was added to automatically apply
all patches.--changed-files
.--show-bears
shows all bears, --filter-by-language
allows to filter them,
--show-details
and --show-description
allow changing verbosity
of the output.Feature Removals:
linter
does no longer show the executable of the bear by default.Performance Improvements:
New Features
for
more information.*.orig
files on startup anymore. This was a
huge performance hit especially on HDDs or big file trees. The
cleanup can be performed manually by running coala-delete-orig
.
Instead coala will keep track of *.orig
files more smartly.Bugfixes:
**.py
can again be used instead **/*.py
.For bear writers:
linter
wrapper provides a result_severity
and a
result_message
parameter now.LanguageDefinition
doesn't need a language_family
anymore to
load language definitions.self.new_result(...)
. .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 core project.
This time, the release logo is carefully hand crafted by Max Scholz!
New features:
coala --show-language-bears C++
for C++.Bugfixes:
For bear writers:
additional_info
which can be used to give
an elaborate description of the problem.typechain()
function is now available for easy conditional type
conversion. (https://github.com/coala-analyzer/coala/issues/1859)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
user.linter
decorator makes it even easier to write new linter
wrappers. (https://github.com/coala-analyzer/coala/issues/1928)Notable internal/API changes:
FunctionMetadata
has a new merge
function that can be used to merge
function signatures and documentation comments.