Dartdoc: ๊ฐ™์€ ์œ ํ˜•์˜ ๋Šฆ์€ ํ•„๋“œ 2๊ฐœ๊ฐ€ ์˜ค๋ฅ˜๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 07์›” 24์ผ  ยท  17์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dart-lang/dartdoc

๋‹ค์Œ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋™์ผํ•œ ์œ ํ˜•์˜ ๋Šฆ์€ ํ•„๋“œ 2๊ฐœ:

class A {
  late double a;
  late double b;
}

dartdoc --enable-experiment=non-nullable ์ถœ๋ ฅ ์˜ค๋ฅ˜:

Generating docs for library a from package:hello_world/a.dart...
  error: failed to write file at: a/A/double.html, for symbol a.A.double: (file:///home/a14n/hello_world/lib/a.dart:2:8)
            Dartdoc generates a path and filename to write to for each symbol.
            a.A.double conflicts with another symbol in the generated path, and
            therefore can not be written out.  Changing the name, library name, or
            class name (if appropriate) of one of the conflicting items can resolve
            the conflict.   Alternatively, use the <strong i="10">@nodoc</strong> tag in one symbol's
            documentation comments to hide it.

์ง€์—ฐ ํ•„๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  17 ๋Œ“๊ธ€

FWIW ์ด ๋ฌธ์ œ๋Š” nullsafety๋กœ์˜ ํ”Œ๋Ÿฌํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ฐก๊ทธ๋ฆฐ ์–ผ๊ตด ์ด๋ชจํ‹ฐ์ฝ˜์€ ์–ด๋””์—... ์ฐธ ์ด์ƒํ•œ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์˜ค๋Š˜ ์ด๊ฒƒ์„ ๋ณผ ๊ฒƒ์ด๋‹ค.

dartdoc์€ ๊ท€ํ•˜์˜ ์†Œ์Šค๊ฐ€ null-safety ๊ธฐ๋Šฅ์— ์˜ตํŠธ์ธ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 17๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜ํ•˜. ๋‹ค์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

  1. ํŒจํ‚ค์ง€๊ฐ€ SDK ์ œ์•ฝ ์กฐ๊ฑด์„ ํ†ตํ•ด null ์•ˆ์ „์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ ์ค‘์ธ Dart ๋ฒ„์ „์— ๋”ฐ๋ผ 2.9 _๋˜๋Š”_ 2.10์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  2. ํŒจํ‚ค์ง€๊ฐ€ analysis_options๋ฅผ ํ†ตํ•ด null-safety๋กœ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
analyzer:
  enable-experiment:
    - non-nullable
  1. null-safety ์‹คํ—˜์œผ๋กœ dartdoc์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? pub๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ pub global run dartdoc --enable-experiment=null-safety ์™€ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ๊ฐ„๋‹จํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

//------ analysis_options.yaml
analyzer:
  enable-experiment:
  - non-nullable
//------ pubspec.yaml
name: hello_world
environment:
  sdk: ">=2.9.0-14.0.dev <3.0.0"
//------ lib/a.dart
class A {
  late double a;
  late double b;
}

๊ทธ๋ฆฌ๊ณ  dartdoc --enable-experiment=non-nullable ( dartdoc --enable-experiment=null-safety ์™€ ๋™์ผํ•œ ์˜ค๋ฅ˜)๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํ”Œ๋Ÿฌํ„ฐ PR์—์„œ ์‹คํŒจ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค https://cirrus-ci.com/task/4975447580606464?command=main#L137

@srawlins ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

FWIW ์ด ๋ฌธ์ œ๋Š” nullsafety๋กœ์˜ ํ”Œ๋Ÿฌํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ฐจ๋‹จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์˜ ์ผ๋ถ€๋ฅผ ์ฐจ๋‹จ? ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

pubspec์„ ํ†ตํ•ด null ์•ˆ์ „์„ ์„ ํƒํ–ˆ์„ ๋•Œ ์ด๊ฒƒ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

environment:
  sdk: '>=2.9.0-18.0 <2.9.0'

๋ฐ analysis_options:

analyzer:
  enable-experiment:
    - non-nullable

ํ—ค๋“œ์—์„œ dartdoc์„ ์‚ฌ์šฉํ•˜์—ฌ ํ—ค๋“œ์—์„œ dart ์‹คํ–‰:

~/code/dart-sdk/sdk/xcodebuild/ReleaseX64/dart-sdk/bin/dart
    --enable-experiment=non-nullable
    ../dart-dartdoc/bin/dartdoc.dart
    --enable-experiment=non-nullable

์˜ค๋žœ๋งŒ์— dartdoc์„ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ตœ์‹  ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๋ฅผ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์˜ ์ผ๋ถ€๋ฅผ ์ฐจ๋‹จ?

docs-linux ์ž‘์—…์ด ํ•ญ์ƒ ์‹คํŒจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. (ํ”Œ๋Ÿฌํ„ฐ/ํ”Œ๋Ÿฌํ„ฐ#62157 ์ฐธ์กฐ)

๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  late ์ œ๊ฑฐ๋Š” ! ๋ฐ ? ๋ชจ๋“  ๊ณณ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค. :-(

์‹คํŒจํ•œ ์ž‘์—…์€ dartdoc version: 0.32.1 ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„์ „์ด ๊ท€ํ•˜์˜ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์–ด๋Š ์‹œ์ ์—์„œ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ“์ฑ ; ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ dartdoc์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ”Œ๋ž˜๊ทธ(๋˜๋Š” ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ž˜๊ทธ)๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ ๋™์•ˆ ๊ณ„์† ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@srawlins - nnbd ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์ง„ํ–‰๋˜๋„๋ก ํ•˜๋ ค๋ฉด ์—ฌ๊ธฐ์—์„œ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, Dart 2.10.0-dev.something์„ ์‚ฌ์šฉํ•˜์—ฌ 0.32.1์—์„œ ์ด๊ฒƒ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆด๋ฆฌ์Šค๋˜์ง€ ์•Š์€ 0.32.2๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

v0.32.2 git ํƒœ๊ทธ์™€ ๋งˆ์Šคํ„ฐ์—์„œ pub global run ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pub ๊ฐ€ ๋ฒ”์ธ์ธ ์ด์œ ๋ฅผ ์กฐ์‚ฌ ์ค‘์ž…๋‹ˆ๋‹ค.

๊ธ์–ด. ํ…Œ์ŠคํŠธ ํŒŒ์ผ์— // @dart=2.9 ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ Null ์•ˆ์ „์„ฑ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ์—๋Š” _๋„ˆ๋ฌด ๋‚ฎ์Œ_).

dartdoc 0.32.1, git branch v0.32.2 ๋˜๋Š” head์—์„œ pub run dartdoc ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

FWIW, ์—ฐ๊ฒฐ๋œ Linux ๋ด‡์˜ dartdoc ํ˜ธ์ถœ์— --enable-experiment=non-nullable ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๊ถŒ์šด ๋งํฌ๋‚˜ ๊ท€ํ•˜์˜ PR์— ์žˆ๋Š” ์ตœ์‹  ๊ถŒ์šด ๋งํฌ์— --enable-experiment=non-nullable ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์บ์น˜! ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(ํ•˜์ง€๋งŒ ๋กœ์ปฌ์—์„œ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค)

์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฒ€ํ† ํ•œ ํ›„ ๋‚ด์ผ ์•„์นจ์— dartdoc์„ ๊ฒŒ์‹œํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

--enable-experiment=non-nullable ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰