Comments (4)
I don't think the proposed approach:
Adding and
EXCLUDE
option inament_lint_auto_find_test_dependencies
could make the code above cleaner: e.g.
would work. The ament_lint_auto
extension point is being triggered when ament_package()
is called and if that call happens after the above snippet it would still trigger all linters previous being found (independently from how they are found - by ament_lint_auto_find_test_dependencies
or an explicit call to find_package
).
If this feature were implemented, would it be accepted?
Sure.
from ament_lint.
@dirk-thomas Thanks for the quick response!
Re:
The ament_lint_auto extension point is being triggered when ament_package() is called and if that call happens after the above snippet it would still trigger all linters previous being found (independently from how they are found - by ament_lint_auto_find_test_dependencies or an explicit call to find_package).
So we would need to find a way to determine if a package was found by ament_lint_auto_find_test_dependencies
or by an explicit call, correct?
What if:
We set a variable in ament_lint_auto_find_test_dependencies
called REGISTER_AUTO_LINT_EXTENSIONS
, which would then be used in each linter package (ament_cmake_cpplint, etc) to conditionally register the auto lint extension: e.g.,
macro(ament_lint_auto_find_test_dependencies)
...
set(REGISTER_AMENT_LINT_AUTO_EXTENSIONS TRUE)
# try to find_package() all test dependencies
foreach(_dep ${${PROJECT_NAME}_TEST_DEPENDS})
find_package(${_dep} QUIET)
if(${_dep}_FOUND)
list(APPEND ${PROJECT_NAME}_FOUND_TEST_DEPENDS ${_dep})
endif()
endforeach()
set(REGISTER_AMENT_LINT_AUTO_EXTENSIONS FALSE)
endmacro()
Then in, ament_cmake_cpplint
:
if(REGISTER_AMENT_LINT_AUTO_EXTENSIONS)
ament_register_extension("ament_lint_auto" "ament_cmake_cpplint"
"ament_cmake_cpplint_lint_hook.cmake")
endif()
If a package is missing the if()
, it will still get picked up by ament_lint_auto_find_test_dependencies
, so we don't run the risk of accidentally turning off a checker.
Thoughts?
from ament_lint.
Please see my comments on the PR: #133.
from ament_lint.
Implemented in #133.
from ament_lint.
Related Issues (20)
- ament_cmake_flake8 ignores value of AMENT_LINT_AUTO_FILE_EXCLUDE HOT 5
- `ament_clang_format` and `colcon test` HOT 4
- [ament_cppcheck] provide libraries
- Update humble ament_pep257 package HOT 5
- Please tag a new release of `ament_lint` for `foxy` HOT 2
- Ament-flake8 attributeError Humble HOT 4
- Support for other filetypes for ament_copyright HOT 2
- ament_uncrustify is incompatible with uncrustify >= 0.75 HOT 1
- ament_pep257 crashes during xunit generation when non-pep257 errors occur
- What is the general release strategy? HOT 1
- ament_xmllint stuck when no internet
- Feature Rquest: ament_cmake_clang_tidy, specify --header-filter and --jobs options to ament_clang_tidy
- (ament_xmllint) add extension argument
- ament_cmake_pep257, ament_cmake_lint_cmake, ament_cmake_xmllint ignores value of AMENT_LINT_AUTO_FILE_EXCLUDE HOT 1
- ament_flake8 fails with flake8>=6.0.0 HOT 5
- ament_lint_auto finds recursive test dependencies causing downstream packages to inherit conflicting linters
- ament_copyright does not recognize REUSE-compliant copyright headers
- TypeError on debian11 HOT 1
- EXCLUDE argument parsed differently in different linters HOT 2
- BSD 3 license (and maybe others) require a copyright notice at the top of the license file HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ament_lint.