Skip to content
Commits on Source (6)
......@@ -131,12 +131,11 @@ This is an overview of the files and directories in the JOSM code repository:
- geticons.pl tool to find all used icons and allows deleting unused icons
searches also for images with incompatible svg code
- optimize-images short script to decrease size of PNG images
- presets_lang.pl helper script to update language links in presets file
- since_xxx.py developer tool to replace "@since xxx" in Javadoc by the upcoming revision number
- SyncEditorLayerIndex.groovy
script to compare and analyse the differences of the editor layer index and the
JOSM imagery list (see https://josm.openstreetmap.de/wiki/ImageryCompare)
- TagInfoExtract.groovy extracts tag information for the taginfo project
- TagInfoExtract.java extracts tag information for the taginfo project
- src/ the source code of the application
- start.html HTML page to run the applet version of JOSM
- styles/ map styles included in JOSM
......
<?xml version="1.0" encoding="UTF-8"?>
<info>
<entry
kind="dir"
path="trunk"
revision="14620">
revision="14760"
kind="dir">
<url>https://josm.openstreetmap.de/svn/trunk</url>
<relative-url>^/trunk</relative-url>
<repository>
......@@ -11,9 +11,9 @@
<uuid>0c6e7542-c601-0410-84e7-c038aed88b3b</uuid>
</repository>
<commit
revision="14620">
<author>stoecker</author>
<date>2018-12-31T14:09:58.107225Z</date>
revision="14760">
<author>simon04</author>
<date>2019-02-02T20:01:18.097412Z</date>
</commit>
</entry>
</info>
......@@ -37,6 +37,7 @@
<property name="javacc.home" location="${tools.dir}"/>
<property name="mapcss.dir" location="${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss"/>
<property name="proj-build.dir" location="${base.dir}/build2"/>
<property name="taginfo-build.dir" location="${base.dir}/build2"/>
<property name="checkstyle-build.dir" location="${base.dir}/build2"/>
<property name="epsg.output" location="${base.dir}/data/projection/custom-epsg"/>
<property name="error_prone_core.jar" location="${tools.dir}/error_prone_core.jar"/>
......@@ -400,7 +401,7 @@ Build-Date: ${build.tstamp}
private="true"
linksource="true"
author="false">
<link href="http://docs.oracle.com/javase/8/docs/api"/>
<link href="https://docs.oracle.com/javase/8/docs/api"/>
<doctitle><![CDATA[<h2>JOSM - Javadoc</h2>]]></doctitle>
<bottom><![CDATA[<a href="https://josm.openstreetmap.de/">JOSM</a>]]></bottom>
<arg value="-html5" if:set="isJava9" />
......@@ -825,29 +826,37 @@ Build-Date: ${build.tstamp}
</as:check-signature>
</target>
<target name="taginfo-compile" depends="dist">
<javac sourcepath="" srcdir="${base.dir}/scripts" failonerror="true" includes="TagInfoExtract.java"
destdir="${taginfo-build.dir}" target="${java.lang.version}" source="${java.lang.version}" debug="on"
includeantruntime="false" createMissingPackageInfoClass="false"
encoding="UTF-8" classpath="${build.dir}">
</javac>
</target>
<macrodef name="_taginfo">
<attribute name="type"/>
<attribute name="output"/>
<sequential>
<echo message="Generating Taginfo for type @{type} to @{output}"/>
<groovy src="${taginfoextract}" classpath="${dist.jar};${toString:groovy.classpath};${spotbugs.dir}/spotbugs-annotations.jar">
<arg value="-t"/>
<java classname="TagInfoExtract" failonerror="true" fork="false">
<sysproperty key="java.awt.headless" value="true"/>
<classpath>
<pathelement path="${dist.jar}"/>
<pathelement path="${taginfo-build.dir}"/>
</classpath>
<arg value="--type"/>
<arg value="@{type}"/>
<arg value="--noexit"/>
<arg value="--svnweb"/>
<arg value="--imgurlprefix"/>
<arg value="${imgurlprefix}"/>
<arg value="-o"/>
<arg value="http://josm.openstreetmap.de/download/taginfo/taginfo-img"/>
<arg value="--output"/>
<arg value="@{output}"/>
</groovy>
</java>
</sequential>
</macrodef>
<target name="taginfo" depends="dist">
<!-- http://docs.groovy-lang.org/2.5.1/html/documentation/#_the_groovy_ant_task -->
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="groovy.classpath"/>
<property name="taginfoextract" value="scripts/TagInfoExtract.groovy"/>
<property name="imgurlprefix" value="http://josm.openstreetmap.de/download/taginfo/taginfo-img"/>
<target name="taginfo" depends="taginfo-compile">
<_taginfo type="mappaint" output="taginfo_style.json"/>
<_taginfo type="presets" output="taginfo_presets.json"/>
<_taginfo type="external_presets" output="taginfo_external_presets.json"/>
......@@ -912,6 +921,7 @@ Build-Date: ${build.tstamp}
<fileset dir="${base.dir}/src/org/openstreetmap/josm" includes="**/*.java"
excludes="gui/mappaint/mapcss/parsergen/*.java"/>
<fileset dir="${base.dir}/test" includes="**/*.java"/>
<fileset dir="${base.dir}/scripts" includes="**/*.java"/>
<formatter type="plain"/>
<formatter type="xml" toFile="checkstyle-josm.xml"/>
</checkstyle>
......@@ -951,6 +961,7 @@ Build-Date: ${build.tstamp}
<include name="org/openstreetmap/josm/**/*.java"/>
<exclude name="org/openstreetmap/josm/gui/mappaint/mapcss/parsergen/*.java" />
</fileset>
<fileset dir="${base.dir}/scripts" includes="**/*.java"/>
</pmd>
</target>
......
This diff is collapsed.
......@@ -140,7 +140,8 @@
</complexType>
<complexType name="link">
<attribute name="href" type="string" use="required" />
<attribute name="wiki" type="string" />
<attribute name="href" type="string" />
<attribute name="text" type="string" />
<attribute name="text_context" type="string" />
......
......@@ -200,15 +200,15 @@ way[usage=penstock][waterway!=pressurised] {
group: tr("missing tag");
}
/* {0.key} without {1.key}, {2.key} or {3.key} */
way[oneway][!highway][!railway][!aerialway],
/* {0.key} without {1.key}, {2.key} or {3.key}, #17253 */
way[oneway ][!highway][!railway][!aerialway][attraction!=summer_toboggan],
*[snowplowing][!highway][!amenity][!leisure] {
throwWarning: tr("{0} without {1}, {2} or {3}", "{0.key}", "{1.key}", "{2.key}", "{3.key}");
group: tr("missing tag");
}
/* {0.key} without {1.key}, {2.key} or {3.tag} */
way[incline ][!highway][!railway][aeroway!~/^(runway|taxiway)$/],
/* {0.key} without {1.key}, {2.key} or {3.tag}, #17255 */
way[incline ][!highway][!railway][aeroway!~/^(runway|taxiway)$/][attraction!=summer_toboggan],
*[toll ][!highway][!barrier][route!~/^(ferry|road)$/] {
throwWarning: tr("{0} without {1}, {2} or {3}", "{0.key}", "{1.key}", "{2.key}", "{3.tag}");
group: tr("missing tag");
......@@ -376,8 +376,8 @@ way[highway][natural][natural!=ridge],
fixRemove: "natural";
}
/* #9593, #11183, #12418, #12761 */
*[sport][sport!=skiing][!building][!club][tourism != hotel][highway != raceway][!leisure][natural !~ /^(beach|bare_rock|cliff|peak|water)$/][amenity !~ /^(pub|restaurant|swimming_pool)$/][landuse !~ /^(recreation_ground|piste|farm|farmland)$/][barrier !~ /^(wall|retaining_wall)$/][!"piste:type"][shop!=sports] {
/* #9593, #11183, #12418, #12761, #17254 */
*[sport][sport!=skiing][!building][!club][tourism != hotel][highway != raceway][!leisure][natural !~ /^(beach|bare_rock|cliff|peak|water)$/][amenity !~ /^(pub|restaurant|swimming_pool)$/][landuse !~ /^(recreation_ground|piste|farm|farmland)$/][barrier !~ /^(wall|retaining_wall)$/][!"piste:type"][shop!=sports][attraction!=summer_toboggan] {
throwWarning: tr("sport without physical feature");
group: tr("missing tag");
assertMatch: "node sport=tennis";
......
......@@ -86,6 +86,7 @@ node[source:outline] {
/* {0} on a node, should be a relation; Error level; see #10252, #10769, #14288 */
node[type=multipolygon],
node[interval],
node[route],
node[restriction] {
throwError: tr("{0} on a node. Should be used in a relation", "{0.tag}");
......@@ -123,6 +124,7 @@ way[highway=motorway_junction] {
/* {0} on a way, should be a relation; see #15642, #10252, #14288 */
way[restriction][restriction =~ /^(no_right_turn|no_left_turn|no_u_turn|no_straight_on|only_right_turn|only_left_turn|only_straight_on|no_entry|no_exit)$/],
way[type=multipolygon],
way[interval][route!=ferry],
way[route=bus] {
throwError: tr("{0} on a way. Should be used in a relation", "{0.tag}");
}
......
# JOSM IgnoreTags
;
; K: ignore this tag
; This is used for checks "key/tag not in presets"
; K: the given tag will not produce a "tag not in presets" error, but it is
; used as dictionary entry for spell checking the given key.
; E: ignore tags with this key
; S: ignore tag if key starts with this string
; F: ignore tag if key ends with this string
......@@ -121,6 +122,12 @@ E:cables
E:circuits
E:direction
E:fire_hydrant:pressure
E:width
E:length
E:layer
E:end_date
E:start_date
E:expressway
;
; Ignore valid and semi-valid keys that end with...
;
......@@ -162,8 +169,11 @@ K:place=allotments
K:place=city_block
K:place=plot
K:building=bunker
K:building=chalet
K:building=civic
K:building=clinic
K:building=houseboat
K:building=shop
K:building=static_caravan
K:building=semi
K:building=semidetached_house
......@@ -181,6 +191,7 @@ K:glacier:type=icecap
K:waterway=drystream
K:allotments=plot
K:land_area=administrative
K:attraction=summer_toboggan
;
; Highway Key/Value Pairs
;
......@@ -247,6 +258,7 @@ K:military=naval_base
; Natural Tags
;
K:natural=marsh
K:natural=shrub
;
; Relation Tags
;
......@@ -310,6 +322,10 @@ K:denomination=masonic
K:shop=organic
K:shop=ice_cream
K:shop=vacant
K:shop=pasta
;
; Craft Key/Value Pairs
K:craft=tailor
;
; Sports Tags
;
......@@ -326,6 +342,29 @@ K:tourism=yes
K:type=tmc
K:type=TMC
;
; Other tags that might produce false positives
;
K:crop=rape
K:crossing=marked
K:crossing=controlled
K:highway=trail
K:highway=ford
K:indoor=door
K:natural=land
K:natural=hill
K:natural=arete
K:natural=slope
K:piste:grooming=classic+skating
K:power=sub_station
K:product=wine
K:railway=derail
K:railway=radio
K:resource=sand
K:shop=trade
K:sidewalk=none
K:sport=skating
K:surface=hard
;
; Tags not yet decided (to remove from this section when added or deprecated)
; see josm tickets: 10759 15774 16315 16658 16793
;
......
......@@ -348,3 +348,15 @@ way["lanes:forward"]["lanes:forward" !~ /^[1-9]([0-9]*)$/][highway],
node[fire_hydrant:pressure="#"] {
throwError: tr("unusual value of {0}", "{0.key}");
}
*[interval][interval !~ /^([0-9][0-9]?|[0-9][0-9]:[0-5][0-9](:[0-9][0-9])?)$/] {
throwWarning: tr("unusual value of {0}", "{0.key}");
assertNoMatch: "way interval=5";
assertNoMatch: "way interval=20";
assertNoMatch: "way interval=00:05";
assertNoMatch: "way interval=00:05:00";
assertNoMatch: "way interval=03:00:00";
assertMatch: "way interval=123";
assertMatch: "way interval=0:5:0";
assertMatch: "way interval=00:65:00";
}