diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 0000000000..3dc9e184dc --- /dev/null +++ b/.codespellrc @@ -0,0 +1,3 @@ +[codespell] +skip = ./tools/astyle,./src/deps,./web/themes,./util/geosop/cxxopts.hpp +ignore-words = ./tools/codespell.ignore diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2e0c4faa1..d98ec451bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -528,6 +528,7 @@ jobs: set -e sudo -E apt-get update sudo -E apt-get -yq --no-install-suggests --no-install-recommends install cppcheck + python3 -m pip install --disable-pip-version-check --user codespell - name: 'Check Out' uses: actions/checkout@v4 @@ -535,6 +536,9 @@ jobs: - name: 'cppcheck' run: ./tools/cppcheck.sh + - name: codespell + run: codespell + # false-positives can be added to tools/codespell.ignore cmake-subproject: name: 'CMake Subproject' diff --git a/NEWS.md b/NEWS.md index 82a4eddfc4..30877064d9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -29,7 +29,7 @@ - Breaking Changes - Zero-length linestrings (eg LINESTRING(1 1, 1 1)) are now treated as equivalent to points (POINT(1 1)) in boolean predicates - - CMake 3.15 or later is requried (GH-1143, Mike Taves) + - CMake 3.15 or later is required (GH-1143, Mike Taves) - Fixes/Improvements: - WKTReader: Points with all-NaN coordinates are not considered empty anymore (GH-927, Casper van der Wel) @@ -933,7 +933,7 @@ See 3.7.0 notes - Added Polygonizer and LineMerger classes. - python wrapper examples - General cleanup / warnings removal -- cleaner win32 / older copilers builds +- cleaner win32 / older compilers builds - Reduced heap allocations - debian package builder scripts - reduction of standard C lib headers dependency diff --git a/include/geos/geom/Geometry.h b/include/geos/geom/Geometry.h index c2378f4c16..a3344e6e7f 100644 --- a/include/geos/geom/Geometry.h +++ b/include/geos/geom/Geometry.h @@ -720,7 +720,7 @@ class GEOS_DLL Geometry { * and dissolving the linework. * - Unioning a set of [Polygons](@ref Polygon) will always * return a polygonal geometry (unlike Geometry::Union(const Geometry* other) const), - * which may return geometrys of lower dimension if a topology collapse + * which may return geometries of lower dimension if a topology collapse * occurred. * * @return the union geometry diff --git a/include/geos/geom/Surface.h b/include/geos/geom/Surface.h index 7b1bb6ff38..d2dcb384e5 100644 --- a/include/geos/geom/Surface.h +++ b/include/geos/geom/Surface.h @@ -100,7 +100,7 @@ class GEOS_DLL Surface : public Geometry { int compareToSameClass(const Geometry* g) const override; - // Helper method allowing PolygonImpl to use GeometryFactory without cirular imports + // Helper method allowing PolygonImpl to use GeometryFactory without circular imports static std::unique_ptr createEmptyRing(const GeometryFactory&); virtual Curve* getExteriorRing() = 0; diff --git a/include/geos/io/WKTWriter.h b/include/geos/io/WKTWriter.h index 105b637391..6acaac301a 100644 --- a/include/geos/io/WKTWriter.h +++ b/include/geos/io/WKTWriter.h @@ -107,7 +107,7 @@ class GEOS_DLL WKTWriter { /** * Generates the WKT for a N-point LineString. * - * @param seq the sequence to outpout + * @param seq the sequence to output * * @return the WKT */ diff --git a/include/geos/noding/IteratedNoder.h b/include/geos/noding/IteratedNoder.h index 5f231fcc77..3e82c8aa1f 100644 --- a/include/geos/noding/IteratedNoder.h +++ b/include/geos/noding/IteratedNoder.h @@ -104,7 +104,7 @@ class GEOS_DLL IteratedNoder : public Noder { // implements Noder /** \brief - * Fully nodes a list of {@link SegmentString}s, i.e. peforms noding iteratively + * Fully nodes a list of {@link SegmentString}s, i.e. performs noding iteratively * until no intersections are found between segments. * * Maintains labelling of edges correctly through the noding. diff --git a/include/geos/operation/overlayng/OverlayUtil.h b/include/geos/operation/overlayng/OverlayUtil.h index 9d30dca34d..a033c5a71f 100644 --- a/include/geos/operation/overlayng/OverlayUtil.h +++ b/include/geos/operation/overlayng/OverlayUtil.h @@ -69,7 +69,7 @@ class GEOS_DLL OverlayUtil { * are: * * - INTERSECTION: result envelope is the intersection of the input envelopes - * - DIFERENCE: result envelope is the envelope of the A input geometry + * - DIFFERENCE: result envelope is the envelope of the A input geometry * * Otherwise, null is returned to indicate full extent. */ diff --git a/include/geos/planargraph/DirectedEdge.h b/include/geos/planargraph/DirectedEdge.h index 38d096830a..5d1d443588 100644 --- a/include/geos/planargraph/DirectedEdge.h +++ b/include/geos/planargraph/DirectedEdge.h @@ -84,7 +84,7 @@ class GEOS_DLL DirectedEdge: public GraphComponent { * to the given parentEdges vector. * * @note Parents are pushed to the parentEdges vector, make sure - * it is empty if index-based corrispondence is important. + * it is empty if index-based correspondence is important. */ static void toEdges(std::vector& dirEdges, std::vector& parentEdges); diff --git a/include/geos/vend/json.hpp b/include/geos/vend/json.hpp index c81c5c5101..315e0a35b7 100644 --- a/include/geos/vend/json.hpp +++ b/include/geos/vend/json.hpp @@ -5091,7 +5091,7 @@ struct wide_string_input_helper } }; -// Wraps another input apdater to convert wide character types into individual bytes. +// Wraps another input adapter to convert wide character types into individual bytes. template class wide_string_input_adapter { diff --git a/src/algorithm/InteriorPointArea.cpp b/src/algorithm/InteriorPointArea.cpp index 55fbfe6d5f..026310d20c 100644 --- a/src/algorithm/InteriorPointArea.cpp +++ b/src/algorithm/InteriorPointArea.cpp @@ -38,7 +38,7 @@ using namespace geos::geom; namespace geos { namespace algorithm { // geos.algorithm -// file statics +// file statistics namespace { double diff --git a/src/algorithm/MinimumBoundingCircle.cpp b/src/algorithm/MinimumBoundingCircle.cpp index f454a7ac7f..3e634d6e94 100644 --- a/src/algorithm/MinimumBoundingCircle.cpp +++ b/src/algorithm/MinimumBoundingCircle.cpp @@ -45,7 +45,7 @@ namespace algorithm { // geos.algorithm std::unique_ptr MinimumBoundingCircle::getCircle() { - //TODO: ensure the output circle contains the extermal points. + //TODO: ensure the output circle contains the extremal points. //TODO: or maybe even ensure that the returned geometry contains ALL the input points? compute(); diff --git a/src/geom/Point.cpp b/src/geom/Point.cpp index b5c77570c5..9b24f79296 100644 --- a/src/geom/Point.cpp +++ b/src/geom/Point.cpp @@ -318,4 +318,4 @@ Point::getCoordinatesRO() const } } // namespace geos::geom -} // namesapce geos +} // namespace geos diff --git a/src/geomgraph/Edge.cpp b/src/geomgraph/Edge.cpp index 6212703a3c..3b4ea5d515 100644 --- a/src/geomgraph/Edge.cpp +++ b/src/geomgraph/Edge.cpp @@ -55,7 +55,7 @@ using namespace geos::algorithm; /** * Updates an IM from the label for an edge. - * Handles edges from both L and A geometrys. + * Handles edges from both L and A geometries. */ void Edge::updateIM(const Label& lbl, IntersectionMatrix& im) diff --git a/src/index/bintree/NodeBase.cpp b/src/index/bintree/NodeBase.cpp index c35296fb96..30331aa5ca 100644 --- a/src/index/bintree/NodeBase.cpp +++ b/src/index/bintree/NodeBase.cpp @@ -26,7 +26,7 @@ namespace index { // geos.index namespace bintree { // geos.index.bintree /** - * Returns the index of the subnode that wholely contains the given interval. + * Returns the index of the subnode that wholly contains the given interval. * If none does, returns -1. */ int diff --git a/src/operation/buffer/BufferCurveSetBuilder.cpp b/src/operation/buffer/BufferCurveSetBuilder.cpp index 41038d74e3..4fc725f967 100644 --- a/src/operation/buffer/BufferCurveSetBuilder.cpp +++ b/src/operation/buffer/BufferCurveSetBuilder.cpp @@ -117,7 +117,7 @@ BufferCurveSetBuilder::addCurve(CoordinateSequence* coord, // coord ownership transferred to SegmentString SegmentString* e = new NodedSegmentString(coord, coord->hasZ(), coord->hasM(), newlabel); - // SegmentString doesnt own the sequence, so we need to delete in + // SegmentString doesn't own the sequence, so we need to delete in // the destructor newLabels.push_back(newlabel); curveList.push_back(e); diff --git a/src/operation/relate/RelateComputer.cpp b/src/operation/relate/RelateComputer.cpp index 90a18ed440..3971a7b996 100644 --- a/src/operation/relate/RelateComputer.cpp +++ b/src/operation/relate/RelateComputer.cpp @@ -181,7 +181,7 @@ RelateComputer::computeIM() /* * Now process improper intersections - * (eg where one or other of the geometrys has a vertex at the + * (eg where one or other of the geometries has a vertex at the * intersection point) * We need to compute the edge graph at all nodes to determine * the IM. diff --git a/src/operation/relateng/RelateNG.cpp b/src/operation/relateng/RelateNG.cpp index 9338123ff0..8342fe8683 100644 --- a/src/operation/relateng/RelateNG.cpp +++ b/src/operation/relateng/RelateNG.cpp @@ -534,7 +534,7 @@ RelateNG::computeLineEnds( continue; const LineString* line = static_cast(elem); - //TODO: add optimzation to skip disjoint elements once exterior point found + //TODO: add optimization to skip disjoint elements once exterior point found const CoordinateXY& e0 = line->getCoordinatesRO()->getAt(0); hasExteriorIntersection |= computeLineEnd(geom, isA, &e0, geomTarget, topoComputer); if (topoComputer.isResultKnown()) { diff --git a/src/operation/relateng/TopologyComputer.cpp b/src/operation/relateng/TopologyComputer.cpp index 1c164d635d..0b6782e42a 100644 --- a/src/operation/relateng/TopologyComputer.cpp +++ b/src/operation/relateng/TopologyComputer.cpp @@ -231,7 +231,7 @@ TopologyComputer::addIntersection(NodeSection* a, NodeSection* b) // we run this first (unlike JTS) in case the subsequent test throws // an exception and the NodeSection pointers are not correctly // saved in the memory managed store on the NodeSections, causing - // a small memeory leak + // a small memory leak addNodeSections(a, b); if (! a->isSameGeometry(b)) { diff --git a/tests/unit/geom/util/GeometryFixerTest.cpp b/tests/unit/geom/util/GeometryFixerTest.cpp index bc10f61d6d..908552dc55 100644 --- a/tests/unit/geom/util/GeometryFixerTest.cpp +++ b/tests/unit/geom/util/GeometryFixerTest.cpp @@ -70,8 +70,8 @@ struct test_geometryfixer_data { std::unique_ptr expected = wktreader_.read(wktExpected); - // std::cout << "Reslt: " << wktwriter_.write(actual.get()) << std::endl; - // std::cout << "Expct: " << wktwriter_.write(expected.get()) << std::endl; + // std::cout << "Result: " << wktwriter_.write(actual.get()) << std::endl; + // std::cout << "Expect: " << wktwriter_.write(expected.get()) << std::endl; ensure("Result is invalid", actual->isValid()); ensure_equals_geometry(expected.get(), actual.get()); diff --git a/tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml b/tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml index b8a8cb474c..d546a9d628 100644 --- a/tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml +++ b/tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml @@ -132,7 +132,7 @@ mA/L A has 2 shells touching at one vertex and one non-vertex. - B passes between the shells, but is wholely contained + B passes between the shells, but is wholly contained MULTIPOLYGON (((100 30, 30 110, 150 110, 100 30)), @@ -204,7 +204,7 @@ - A/L - wholely contained + A/L - wholly contained POLYGON ((10 10, 60 100, 110 10, 10 10)) diff --git a/tools/codespell.ignore b/tools/codespell.ignore new file mode 100644 index 0000000000..896a43d839 --- /dev/null +++ b/tools/codespell.ignore @@ -0,0 +1,17 @@ +parms +Geometrys +deques +extracter +implementors +translater +thirdparty +crate +eiter +examplar +nempty +ba +te +seh +bLoc +aLo +Wel